From a389cc29adf6de8514564e96e52aa9e2d1f8dd00 Mon Sep 17 00:00:00 2001 From: lumtis Date: Wed, 16 Oct 2024 14:05:19 +0200 Subject: [PATCH 01/17] . --- v2/contracts/evm/ZetaConnectorNative.sol | 12 ++++++------ v2/test/ERC20Custody.t.sol | 1 - v2/test/ZRC20.t.sol | 3 +++ v2/test/fuzz/ERC20CustodyEchidnaTest.sol | 5 +++-- v2/test/fuzz/GatewayEVMEchidnaTest.sol | 5 +++-- v2/test/utils/ReceiverEVM.sol | 5 +++-- v2/test/utils/SenderZEVM.sol | 16 +++++++++++++--- v2/test/utils/TestUniversalContract.sol | 8 ++++---- .../upgrades/ZetaConnectorNativeUpgradeTest.sol | 12 ++++++------ 9 files changed, 41 insertions(+), 26 deletions(-) diff --git a/v2/contracts/evm/ZetaConnectorNative.sol b/v2/contracts/evm/ZetaConnectorNative.sol index b5f35c6ef..e6c0bc04e 100644 --- a/v2/contracts/evm/ZetaConnectorNative.sol +++ b/v2/contracts/evm/ZetaConnectorNative.sol @@ -27,12 +27,12 @@ contract ZetaConnectorNative is ZetaConnectorBase { /// @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. + //// @param internalSendHash A hash used for internal tracking of the transaction (not used currently https://github.com/zeta-chain/protocol-contracts/issues/398) /// @dev This function can only be called by the TSS address. function withdraw( address to, uint256 amount, - bytes32 internalSendHash + bytes32 /*internalSendHash*/ ) external override @@ -48,13 +48,13 @@ contract ZetaConnectorNative is ZetaConnectorBase { /// @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. + //// @param internalSendHash A hash used for internal tracking of the transaction (not used currently https://github.com/zeta-chain/protocol-contracts/issues/398) /// @dev This function can only be called by the TSS address. function withdrawAndCall( address to, uint256 amount, bytes calldata data, - bytes32 internalSendHash + bytes32 /*internalSendHash*/ ) external override @@ -75,14 +75,14 @@ contract ZetaConnectorNative is ZetaConnectorBase { /// @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. + //// @param internalSendHash A hash used for internal tracking of the transaction (not used currently https://github.com/zeta-chain/protocol-contracts/issues/398) /// @dev This function can only be called by the TSS address. /// @param revertContext Revert context to pass to onRevert. function withdrawAndRevert( address to, uint256 amount, bytes calldata data, - bytes32 internalSendHash, + bytes32 /*internalSendHash*/, RevertContext calldata revertContext ) external diff --git a/v2/test/ERC20Custody.t.sol b/v2/test/ERC20Custody.t.sol index 267ae6a26..9c85a6dcc 100644 --- a/v2/test/ERC20Custody.t.sol +++ b/v2/test/ERC20Custody.t.sol @@ -524,7 +524,6 @@ contract ERC20CustodyTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiv zeta.approve(address(custody), 1_000_000); uint256 custodyTokenBalanceBefore = token.balanceOf(address(custody)); - uint256 tssZetaBalanceBefore = zeta.balanceOf(tssAddress); bytes memory message = abi.encodePacked("hello"); diff --git a/v2/test/ZRC20.t.sol b/v2/test/ZRC20.t.sol index 6f864d9d2..ae71216e3 100644 --- a/v2/test/ZRC20.t.sol +++ b/v2/test/ZRC20.t.sol @@ -50,6 +50,9 @@ contract ZRC20Test is Test, ZRC20Errors { } function testZRC20BasicInfo() public { + // silence view function warning + zrc20 = zrc20; + string memory name = zrc20.name(); assertEq("TOKEN", name); diff --git a/v2/test/fuzz/ERC20CustodyEchidnaTest.sol b/v2/test/fuzz/ERC20CustodyEchidnaTest.sol index 8d5e9e825..19cb26052 100644 --- a/v2/test/fuzz/ERC20CustodyEchidnaTest.sol +++ b/v2/test/fuzz/ERC20CustodyEchidnaTest.sol @@ -1,6 +1,7 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.26; + // TODO: https://github.com/zeta-chain/protocol-contracts/issues/384 -// // SPDX-License-Identifier: MIT -// pragma solidity 0.8.26; // import "../../contracts/evm/ERC20Custody.sol"; // import "../../contracts/evm/GatewayEVM.sol"; diff --git a/v2/test/fuzz/GatewayEVMEchidnaTest.sol b/v2/test/fuzz/GatewayEVMEchidnaTest.sol index 0893527ff..722a59af8 100644 --- a/v2/test/fuzz/GatewayEVMEchidnaTest.sol +++ b/v2/test/fuzz/GatewayEVMEchidnaTest.sol @@ -1,6 +1,7 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.26; + // TODO: https://github.com/zeta-chain/protocol-contracts/issues/384 -// // SPDX-License-Identifier: MIT -// pragma solidity 0.8.26; // import "../../contracts/evm/ERC20Custody.sol"; // import "../../contracts/evm/GatewayEVM.sol"; diff --git a/v2/test/utils/ReceiverEVM.sol b/v2/test/utils/ReceiverEVM.sol index 64eb0dbfc..2d5e1f717 100644 --- a/v2/test/utils/ReceiverEVM.sol +++ b/v2/test/utils/ReceiverEVM.sol @@ -74,14 +74,15 @@ contract ReceiverEVM is IReceiverEVMEvents, ReentrancyGuard { } function onCall( - MessageContext calldata messageContext, - bytes calldata message + MessageContext calldata, + bytes calldata ) external payable returns (bytes memory) { emit ReceivedOnCall(); + return ""; } /// @notice Receives ETH. diff --git a/v2/test/utils/SenderZEVM.sol b/v2/test/utils/SenderZEVM.sol index 1efa159d6..a268c2f7f 100644 --- a/v2/test/utils/SenderZEVM.sol +++ b/v2/test/utils/SenderZEVM.sol @@ -2,7 +2,7 @@ pragma solidity 0.8.26; import { IGatewayZEVM } from "../../contracts/zevm/interfaces/IGatewayZEVM.sol"; -import { RevertOptions } from "../../contracts/zevm/interfaces/IGatewayZEVM.sol"; +import { CallOptions, RevertOptions } from "../../contracts/zevm/interfaces/IGatewayZEVM.sol"; import "../../contracts/zevm/interfaces/IZRC20.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; @@ -42,8 +42,13 @@ contract SenderZEVM { uint256 gasLimit = 1; IZRC20(zrc20).approve(gateway, gasLimit); + CallOptions memory callOptions = CallOptions({ + gasLimit: gasLimit, + isArbitraryCall: true + }); + // Pass encoded call to gateway - IGatewayZEVM(gateway).call(receiver, zrc20, message, gasLimit, revertOptions); + IGatewayZEVM(gateway).call(receiver, zrc20, message, callOptions, revertOptions); } /// @notice Withdraw and call a receiver on EVM. @@ -78,7 +83,12 @@ contract SenderZEVM { onRevertGasLimit: 0 }); + CallOptions memory callOptions = CallOptions({ + gasLimit: 1, + isArbitraryCall: true + }); + // Pass encoded call to gateway - IGatewayZEVM(gateway).withdrawAndCall(receiver, amount, zrc20, message, 1, revertOptions); + IGatewayZEVM(gateway).withdrawAndCall(receiver, amount, zrc20, message, callOptions, revertOptions); } } diff --git a/v2/test/utils/TestUniversalContract.sol b/v2/test/utils/TestUniversalContract.sol index f6af61d79..19a9fc226 100644 --- a/v2/test/utils/TestUniversalContract.sol +++ b/v2/test/utils/TestUniversalContract.sol @@ -24,14 +24,14 @@ contract TestUniversalContract is UniversalContract, Revertable { /// @notice Handles a cross-chain call. /// @param context The context of the cross-chain call. - /// @param zrc20 The address of the ZRC20 token. - /// @param amount The amount of tokens transferred. + //// @param zrc20 The address of the ZRC20 token. + //// @param amount The amount of tokens transferred. /// @param message The calldata passed to the contract call. /// @dev Decodes the message and emits a ContextData event. function onCall( MessageContext calldata context, - address zrc20, - uint256 amount, + address /*zrc20*/, + uint256 /*amount*/, bytes calldata message ) external diff --git a/v2/test/utils/upgrades/ZetaConnectorNativeUpgradeTest.sol b/v2/test/utils/upgrades/ZetaConnectorNativeUpgradeTest.sol index f4a56b2ee..d236dbf0b 100644 --- a/v2/test/utils/upgrades/ZetaConnectorNativeUpgradeTest.sol +++ b/v2/test/utils/upgrades/ZetaConnectorNativeUpgradeTest.sol @@ -31,12 +31,12 @@ contract ZetaConnectorNativeUpgradeTest is ZetaConnectorBase { /// @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. + //// @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 + bytes32 /*internalSendHash*/ ) external override @@ -52,13 +52,13 @@ contract ZetaConnectorNativeUpgradeTest is ZetaConnectorBase { /// @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. + //// @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 + bytes32 /*internalSendHash*/ ) external override @@ -79,14 +79,14 @@ contract ZetaConnectorNativeUpgradeTest is ZetaConnectorBase { /// @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. + //// @param internalSendHash A hash used for internal tracking of the transaction. /// @dev This function can only be called by the TSS address. /// @param revertContext Revert context to pass to onRevert. function withdrawAndRevert( address to, uint256 amount, bytes calldata data, - bytes32 internalSendHash, + bytes32 /*internalSendHash*/, RevertContext calldata revertContext ) external From dce632234786924b826038252cd57d543b41a987 Mon Sep 17 00:00:00 2001 From: lumtis Date: Wed, 16 Oct 2024 14:13:31 +0200 Subject: [PATCH 02/17] remaining fixes --- v2/test/GatewayZEVM.t.sol | 4 ---- v2/test/ZRC20.t.sol | 4 ++-- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/v2/test/GatewayZEVM.t.sol b/v2/test/GatewayZEVM.t.sol index 2b799bb62..d3a787f94 100644 --- a/v2/test/GatewayZEVM.t.sol +++ b/v2/test/GatewayZEVM.t.sol @@ -542,9 +542,6 @@ contract GatewayZEVMInboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors function testWithdrawZETAWithCallOptsWithMessageFailsIfGasLimitIsZero() public { uint256 amount = 1; - uint256 ownerBalanceBefore = zetaToken.balanceOf(owner); - uint256 gatewayBalanceBefore = zetaToken.balanceOf(address(gateway)); - uint256 protocolAddressBalanceBefore = protocolAddress.balance; bytes memory message = abi.encodeWithSignature("hello(address)", addr1); uint256 chainId = 1; @@ -1005,7 +1002,6 @@ contract GatewayZEVMOutboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors } function testDepositZETAAndCallUniversalContractFailsIfZeroAddress() public { - uint256 destinationBalanceBefore = address(testUniversalContract).balance; bytes memory message = abi.encode("hello"); MessageContext memory context = MessageContext({ origin: abi.encodePacked(address(gateway)), sender: protocolAddress, chainID: 1 }); diff --git a/v2/test/ZRC20.t.sol b/v2/test/ZRC20.t.sol index ae71216e3..9b5922c65 100644 --- a/v2/test/ZRC20.t.sol +++ b/v2/test/ZRC20.t.sol @@ -226,7 +226,7 @@ contract ZRC20Test is Test, ZRC20Errors { systemContract.setGasCoinZRC20(1, address(0)); vm.expectRevert(ZeroGasCoin.selector); - (address gasZRC20, uint256 gasFee) = zrc20.withdrawGasFee(); + zrc20.withdrawGasFee(); } function testWithdrawGasFeeFailsIfGasPriceNotSetForChainId() public { @@ -234,7 +234,7 @@ contract ZRC20Test is Test, ZRC20Errors { systemContract.setGasPrice(1, 0); vm.expectRevert(ZeroGasPrice.selector); - (address gasZRC20, uint256 gasFee) = zrc20.withdrawGasFee(); + zrc20.withdrawGasFee(); } function testWithdraw() public { From 61598bd5c4f7510de2782f74e7fc28a053a610b8 Mon Sep 17 00:00:00 2001 From: lumtis Date: Wed, 16 Oct 2024 14:20:38 +0200 Subject: [PATCH 03/17] generate --- v2/contracts/evm/ZetaConnectorNative.sol | 11 ++-- .../contract.ZetaConnectorNative.md | 12 ++-- .../struct.MessageContext.md | 2 +- v2/pkg/address.sol/address.go | 2 +- v2/pkg/beaconproxy.sol/beaconproxy.go | 2 +- v2/pkg/console.sol/console.go | 2 +- v2/pkg/core.sol/core.go | 2 +- v2/pkg/defender.sol/defender.go | 2 +- v2/pkg/defenderdeploy.sol/defenderdeploy.go | 2 +- v2/pkg/erc1967proxy.sol/erc1967proxy.go | 2 +- v2/pkg/erc1967utils.sol/erc1967utils.go | 2 +- v2/pkg/erc20custody.sol/erc20custody.go | 2 +- v2/pkg/erc20custody.t.sol/erc20custodytest.go | 2 +- .../erc20custodyupgradetest.go | 2 +- v2/pkg/gatewayevm.sol/gatewayevm.go | 2 +- .../gatewayevm.t.sol/gatewayevminboundtest.go | 2 +- v2/pkg/gatewayevm.t.sol/gatewayevmtest.go | 2 +- .../gatewayevmupgradetest.go | 2 +- .../gatewayevmzevmtest.go | 2 +- v2/pkg/gatewayzevm.sol/gatewayzevm.go | 2 +- .../gatewayzevminboundtest.go | 2 +- .../gatewayzevmoutboundtest.go | 2 +- .../gatewayzevmupgradetest.go | 2 +- v2/pkg/math.sol/math.go | 2 +- v2/pkg/mockerc20.sol/mockerc20.go | 2 +- v2/pkg/mockerc721.sol/mockerc721.go | 2 +- v2/pkg/proxyadmin.sol/proxyadmin.go | 2 +- v2/pkg/receiverevm.sol/receiverevm.go | 22 +++---- v2/pkg/safeconsole.sol/safeconsole.go | 2 +- v2/pkg/safeerc20.sol/safeerc20.go | 2 +- v2/pkg/senderzevm.sol/senderzevm.go | 2 +- v2/pkg/signedmath.sol/signedmath.go | 2 +- v2/pkg/src/strings.sol/strings.go | 2 +- v2/pkg/stderror.sol/stderror.go | 2 +- v2/pkg/stdjson.sol/stdjson.go | 2 +- v2/pkg/stdmath.sol/stdmath.go | 2 +- v2/pkg/stdstorage.sol/stdstorage.go | 2 +- v2/pkg/stdstorage.sol/stdstoragesafe.go | 2 +- v2/pkg/stdstyle.sol/stdstyle.go | 2 +- v2/pkg/stdtoml.sol/stdtoml.go | 2 +- v2/pkg/storageslot.sol/storageslot.go | 2 +- v2/pkg/strings.sol/strings.go | 2 +- v2/pkg/systemcontract.sol/systemcontract.go | 2 +- .../systemcontractmock.go | 2 +- v2/pkg/testerc20.sol/testerc20.go | 2 +- .../testuniversalcontract.go | 22 +++---- .../transparentupgradeableproxy.go | 2 +- .../upgradeablebeacon.go | 2 +- v2/pkg/upgrades.sol/unsafeupgrades.go | 2 +- v2/pkg/upgrades.sol/upgrades.go | 2 +- v2/pkg/utils.sol/utils.go | 2 +- v2/pkg/versions.sol/versions.go | 2 +- v2/pkg/wzeta.sol/weth9.go | 2 +- v2/pkg/zeta.non-eth.sol/zetanoneth.go | 2 +- .../zetaconnectornative.go | 58 +++++++++---------- .../zetaconnectornativetest.go | 2 +- .../zetaconnectornativeupgradetest.go | 58 +++++++++---------- .../zetaconnectornonnative.go | 2 +- .../zetaconnectornonnativetest.go | 2 +- .../zetaconnectornonnativeupgradetest.go | 2 +- v2/pkg/zrc20.sol/zrc20.go | 2 +- v2/pkg/zrc20.t.sol/zrc20test.go | 2 +- v2/test/utils/ReceiverEVM.sol | 9 +-- v2/test/utils/SenderZEVM.sol | 10 +--- v2/test/utils/TestUniversalContract.sol | 4 +- .../ZetaConnectorNativeUpgradeTest.sol | 2 +- v2/types/ReceiverEVM.ts | 4 +- v2/types/TestUniversalContract.ts | 8 +-- v2/types/ZetaConnectorNative.ts | 22 ++----- v2/types/ZetaConnectorNativeUpgradeTest.ts | 22 ++----- v2/types/factories/Address__factory.ts | 2 +- v2/types/factories/BeaconProxy__factory.ts | 2 +- v2/types/factories/ERC1967Proxy__factory.ts | 2 +- v2/types/factories/ERC1967Utils__factory.ts | 2 +- .../ERC20CustodyUpgradeTest__factory.ts | 2 +- v2/types/factories/ERC20Custody__factory.ts | 2 +- .../GatewayEVMUpgradeTest__factory.ts | 2 +- v2/types/factories/GatewayEVM__factory.ts | 2 +- .../GatewayZEVMUpgradeTest__factory.ts | 2 +- v2/types/factories/GatewayZEVM__factory.ts | 2 +- v2/types/factories/Math__factory.ts | 2 +- v2/types/factories/MockERC20__factory.ts | 2 +- v2/types/factories/MockERC721__factory.ts | 2 +- v2/types/factories/ProxyAdmin__factory.ts | 2 +- v2/types/factories/ReceiverEVM__factory.ts | 6 +- v2/types/factories/SafeERC20__factory.ts | 2 +- v2/types/factories/SenderZEVM__factory.ts | 2 +- .../StdError.sol/StdError__factory.ts | 2 +- .../StdStorage.sol/StdStorageSafe__factory.ts | 2 +- v2/types/factories/Strings__factory.ts | 2 +- .../SystemContract__factory.ts | 2 +- .../SystemContractMock__factory.ts | 2 +- v2/types/factories/TestERC20__factory.ts | 2 +- .../TestUniversalContract__factory.ts | 6 +- .../TransparentUpgradeableProxy__factory.ts | 2 +- .../factories/UpgradeableBeacon__factory.ts | 2 +- .../factories/WZETA.sol/WETH9__factory.ts | 2 +- .../factories/ZRC20.sol/ZRC20__factory.ts | 2 +- .../Zeta.non-eth.sol/ZetaNonEth__factory.ts | 2 +- ...ZetaConnectorNativeUpgradeTest__factory.ts | 8 +-- .../factories/ZetaConnectorNative__factory.ts | 8 +-- ...aConnectorNonNativeUpgradeTest__factory.ts | 2 +- .../ZetaConnectorNonNative__factory.ts | 2 +- 103 files changed, 216 insertions(+), 246 deletions(-) diff --git a/v2/contracts/evm/ZetaConnectorNative.sol b/v2/contracts/evm/ZetaConnectorNative.sol index e6c0bc04e..6abdd3bb8 100644 --- a/v2/contracts/evm/ZetaConnectorNative.sol +++ b/v2/contracts/evm/ZetaConnectorNative.sol @@ -27,7 +27,8 @@ contract ZetaConnectorNative is ZetaConnectorBase { /// @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 (not used currently https://github.com/zeta-chain/protocol-contracts/issues/398) + //// @param internalSendHash A hash used for internal tracking of the transaction (not used currently + // https://github.com/zeta-chain/protocol-contracts/issues/398) /// @dev This function can only be called by the TSS address. function withdraw( address to, @@ -48,7 +49,8 @@ contract ZetaConnectorNative is ZetaConnectorBase { /// @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 (not used currently https://github.com/zeta-chain/protocol-contracts/issues/398) + //// @param internalSendHash A hash used for internal tracking of the transaction (not used currently + // https://github.com/zeta-chain/protocol-contracts/issues/398) /// @dev This function can only be called by the TSS address. function withdrawAndCall( address to, @@ -75,14 +77,15 @@ contract ZetaConnectorNative is ZetaConnectorBase { /// @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 (not used currently https://github.com/zeta-chain/protocol-contracts/issues/398) + //// @param internalSendHash A hash used for internal tracking of the transaction (not used currently + // https://github.com/zeta-chain/protocol-contracts/issues/398) /// @dev This function can only be called by the TSS address. /// @param revertContext Revert context to pass to onRevert. function withdrawAndRevert( address to, uint256 amount, bytes calldata data, - bytes32 /*internalSendHash*/, + bytes32, /*internalSendHash*/ RevertContext calldata revertContext ) external diff --git a/v2/docs/src/contracts/evm/ZetaConnectorNative.sol/contract.ZetaConnectorNative.md b/v2/docs/src/contracts/evm/ZetaConnectorNative.sol/contract.ZetaConnectorNative.md index a5dc9390c..835d1ba6f 100644 --- a/v2/docs/src/contracts/evm/ZetaConnectorNative.sol/contract.ZetaConnectorNative.md +++ b/v2/docs/src/contracts/evm/ZetaConnectorNative.sol/contract.ZetaConnectorNative.md @@ -36,7 +36,7 @@ Withdraw tokens to a specified address. function withdraw( address to, uint256 amount, - bytes32 internalSendHash + bytes32 ) external override @@ -50,7 +50,7 @@ function withdraw( |----|----|-----------| |`to`|`address`|The address to withdraw tokens to.| |`amount`|`uint256`|The amount of tokens to withdraw.| -|`internalSendHash`|`bytes32`|A hash used for internal tracking of the transaction.| +|``|`bytes32`|| ### withdrawAndCall @@ -65,7 +65,7 @@ function withdrawAndCall( address to, uint256 amount, bytes calldata data, - bytes32 internalSendHash + bytes32 ) external override @@ -80,7 +80,7 @@ function withdrawAndCall( |`to`|`address`|The address to withdraw tokens to.| |`amount`|`uint256`|The amount of tokens to withdraw.| |`data`|`bytes`|The calldata to pass to the contract call.| -|`internalSendHash`|`bytes32`|A hash used for internal tracking of the transaction.| +|``|`bytes32`|| ### withdrawAndRevert @@ -95,7 +95,7 @@ function withdrawAndRevert( address to, uint256 amount, bytes calldata data, - bytes32 internalSendHash, + bytes32, RevertContext calldata revertContext ) external @@ -111,7 +111,7 @@ function withdrawAndRevert( |`to`|`address`|The address to withdraw tokens to.| |`amount`|`uint256`|The amount of tokens to withdraw.| |`data`|`bytes`|The calldata to pass to the contract call.| -|`internalSendHash`|`bytes32`|A hash used for internal tracking of the transaction.| +|``|`bytes32`|| |`revertContext`|`RevertContext`|Revert context to pass to onRevert.| diff --git a/v2/docs/src/contracts/zevm/interfaces/UniversalContract.sol/struct.MessageContext.md b/v2/docs/src/contracts/zevm/interfaces/UniversalContract.sol/struct.MessageContext.md index 9635bb523..00e1a7e4c 100644 --- a/v2/docs/src/contracts/zevm/interfaces/UniversalContract.sol/struct.MessageContext.md +++ b/v2/docs/src/contracts/zevm/interfaces/UniversalContract.sol/struct.MessageContext.md @@ -1,5 +1,5 @@ # MessageContext -[Git Source](https://github.com/zeta-chain/protocol-contracts/blob/317e9a168aa19dc31b1217eef2a50dbf71ae4d80/contracts/zevm/interfaces/UniversalContract.sol) +[Git Source](https://github.com/zeta-chain/protocol-contracts/blob/main/v2/contracts/zevm/interfaces/UniversalContract.sol) ```solidity diff --git a/v2/pkg/address.sol/address.go b/v2/pkg/address.sol/address.go index 4c34f2150..0dd6bd4f8 100644 --- a/v2/pkg/address.sol/address.go +++ b/v2/pkg/address.sol/address.go @@ -32,7 +32,7 @@ var ( // 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: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220525f69d25bb56f3e15d69270d52349856b0d9c92f346a3233a662178749fd33264736f6c634300081a0033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122092e7aecc4d2ccb1e367abefe25d03e613e1b1d9f823e0dffcbae8c231c191fbf64736f6c634300081a0033", } // AddressABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/beaconproxy.sol/beaconproxy.go b/v2/pkg/beaconproxy.sol/beaconproxy.go index 6743a92b0..9412ccfeb 100644 --- a/v2/pkg/beaconproxy.sol/beaconproxy.go +++ b/v2/pkg/beaconproxy.sol/beaconproxy.go @@ -32,7 +32,7 @@ var ( // 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: "0x60a06040526040516105eb3803806105eb83398101604081905261002291610387565b61002c828261003e565b506001600160a01b0316608052610484565b610047826100fe565b6040516001600160a01b038316907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a28051156100f2576100ed826001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e7919061044d565b82610211565b505050565b6100fa610288565b5050565b806001600160a01b03163b60000361013957604051631933b43b60e21b81526001600160a01b03821660048201526024015b60405180910390fd5b807fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392831617905560408051635c60da1b60e01b81529051600092841691635c60da1b9160048083019260209291908290030181865afa1580156101b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d9919061044d565b9050806001600160a01b03163b6000036100fa57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610130565b6060600080846001600160a01b03168460405161022e9190610468565b600060405180830381855af49150503d8060008114610269576040519150601f19603f3d011682016040523d82523d6000602084013e61026e565b606091505b50909250905061027f8583836102a9565b95945050505050565b34156102a75760405163b398979f60e01b815260040160405180910390fd5b565b6060826102be576102b982610308565b610301565b81511580156102d557506001600160a01b0384163b155b156102fe57604051639996b31560e01b81526001600160a01b0385166004820152602401610130565b50805b9392505050565b8051156103185780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80516001600160a01b038116811461034857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561037e578181015183820152602001610366565b50506000910152565b6000806040838503121561039a57600080fd5b6103a383610331565b60208401519092506001600160401b038111156103bf57600080fd5b8301601f810185136103d057600080fd5b80516001600160401b038111156103e9576103e961034d565b604051601f8201601f19908116603f011681016001600160401b03811182821017156104175761041761034d565b60405281815282820160200187101561042f57600080fd5b610440826020830160208601610363565b8093505050509250929050565b60006020828403121561045f57600080fd5b61030182610331565b6000825161047a818460208701610363565b9190910192915050565b60805161014d61049e60003960006024015261014d6000f3fe608060405261000c61000e565b005b61001e610019610020565b6100b6565b565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561008d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100b191906100da565b905090565b3660008037600080366000845af43d6000803e8080156100d5573d6000f35b3d6000fd5b6000602082840312156100ec57600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461011057600080fd5b939250505056fea2646970667358221220361a0dc2b1da1d9258f68e8b1f1c9708b2cd315a53fe53be9f849efbd82649d964736f6c634300081a0033", + Bin: "0x60a06040526040516105eb3803806105eb83398101604081905261002291610387565b61002c828261003e565b506001600160a01b0316608052610484565b610047826100fe565b6040516001600160a01b038316907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a28051156100f2576100ed826001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e7919061044d565b82610211565b505050565b6100fa610288565b5050565b806001600160a01b03163b60000361013957604051631933b43b60e21b81526001600160a01b03821660048201526024015b60405180910390fd5b807fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392831617905560408051635c60da1b60e01b81529051600092841691635c60da1b9160048083019260209291908290030181865afa1580156101b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d9919061044d565b9050806001600160a01b03163b6000036100fa57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610130565b6060600080846001600160a01b03168460405161022e9190610468565b600060405180830381855af49150503d8060008114610269576040519150601f19603f3d011682016040523d82523d6000602084013e61026e565b606091505b50909250905061027f8583836102a9565b95945050505050565b34156102a75760405163b398979f60e01b815260040160405180910390fd5b565b6060826102be576102b982610308565b610301565b81511580156102d557506001600160a01b0384163b155b156102fe57604051639996b31560e01b81526001600160a01b0385166004820152602401610130565b50805b9392505050565b8051156103185780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80516001600160a01b038116811461034857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561037e578181015183820152602001610366565b50506000910152565b6000806040838503121561039a57600080fd5b6103a383610331565b60208401519092506001600160401b038111156103bf57600080fd5b8301601f810185136103d057600080fd5b80516001600160401b038111156103e9576103e961034d565b604051601f8201601f19908116603f011681016001600160401b03811182821017156104175761041761034d565b60405281815282820160200187101561042f57600080fd5b610440826020830160208601610363565b8093505050509250929050565b60006020828403121561045f57600080fd5b61030182610331565b6000825161047a818460208701610363565b9190910192915050565b60805161014d61049e60003960006024015261014d6000f3fe608060405261000c61000e565b005b61001e610019610020565b6100b6565b565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561008d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100b191906100da565b905090565b3660008037600080366000845af43d6000803e8080156100d5573d6000f35b3d6000fd5b6000602082840312156100ec57600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461011057600080fd5b939250505056fea2646970667358221220f057f84db33183a0d3a6c76e9622f96eee9a0aa593cc3a6a4209d5809c1fe2fd64736f6c634300081a0033", } // BeaconProxyABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/console.sol/console.go b/v2/pkg/console.sol/console.go index d613fe6a3..c16717f85 100644 --- a/v2/pkg/console.sol/console.go +++ b/v2/pkg/console.sol/console.go @@ -32,7 +32,7 @@ var ( // ConsoleMetaData contains all meta data concerning the Console contract. var ConsoleMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c4d39ef4eba6276bfb1bc591229170a90b20952c1b0d7ce9afbf94d17b2649fb64736f6c634300081a0033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208796257d4894d826ddb63b7691c6a4a1d7d3f7e17cc7f2dbf8d4d9bf646b997264736f6c634300081a0033", } // ConsoleABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/core.sol/core.go b/v2/pkg/core.sol/core.go index 9524d8bd5..348a847b8 100644 --- a/v2/pkg/core.sol/core.go +++ b/v2/pkg/core.sol/core.go @@ -32,7 +32,7 @@ var ( // CoreMetaData contains all meta data concerning the Core contract. var CoreMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220300111570391534dfbdbf5e44df23db85e1dc785e104797da28fc8a66d6bf86c64736f6c634300081a0033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ac035dbcdf46d21fb548e44cf66854cbce92bea12b5cf172ea379634a44ff22064736f6c634300081a0033", } // CoreABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/defender.sol/defender.go b/v2/pkg/defender.sol/defender.go index 58103081c..9858133e6 100644 --- a/v2/pkg/defender.sol/defender.go +++ b/v2/pkg/defender.sol/defender.go @@ -32,7 +32,7 @@ var ( // DefenderMetaData contains all meta data concerning the Defender contract. var DefenderMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122065abafebf1ecc138f71a5c5cf67deb52293718bd3816f120f62e1701da6040bd64736f6c634300081a0033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208c1cd90b4bcee8cb1ce74656b52af29e2644920bb32bad69e42e8418d0905dca64736f6c634300081a0033", } // DefenderABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/defenderdeploy.sol/defenderdeploy.go b/v2/pkg/defenderdeploy.sol/defenderdeploy.go index 10d0d4ffa..a0117e49d 100644 --- a/v2/pkg/defenderdeploy.sol/defenderdeploy.go +++ b/v2/pkg/defenderdeploy.sol/defenderdeploy.go @@ -32,7 +32,7 @@ var ( // DefenderDeployMetaData contains all meta data concerning the DefenderDeploy contract. var DefenderDeployMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203e56c468490954bf2c047a355a009f67f17a00241a4af5053872ea3520bb547564736f6c634300081a0033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220138933d44962d97a56bb1f81ad589515e67adc21d1833b38a41f1480142c8f9964736f6c634300081a0033", } // DefenderDeployABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/erc1967proxy.sol/erc1967proxy.go b/v2/pkg/erc1967proxy.sol/erc1967proxy.go index 9fdcfed33..f2afb2b80 100644 --- a/v2/pkg/erc1967proxy.sol/erc1967proxy.go +++ b/v2/pkg/erc1967proxy.sol/erc1967proxy.go @@ -32,7 +32,7 @@ var ( // 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: "0x608060405260405161041d38038061041d83398101604081905261002291610268565b61002c8282610033565b5050610358565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b919061033c565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b038111156102ae57600080fd5b8301601f810185136102bf57600080fd5b80516001600160401b038111156102d8576102d861022e565b604051601f8201601f19908116603f011681016001600160401b03811182821017156103065761030661022e565b60405281815282820160200187101561031e57600080fd5b61032f826020830160208601610244565b8093505050509250929050565b6000825161034e818460208701610244565b9190910192915050565b60b7806103666000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220c882f735e5f8d521dae58bd08ba62d17508690600f26f161a5901184c092b5d964736f6c634300081a0033", + Bin: "0x608060405260405161041d38038061041d83398101604081905261002291610268565b61002c8282610033565b5050610358565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b919061033c565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b038111156102ae57600080fd5b8301601f810185136102bf57600080fd5b80516001600160401b038111156102d8576102d861022e565b604051601f8201601f19908116603f011681016001600160401b03811182821017156103065761030661022e565b60405281815282820160200187101561031e57600080fd5b61032f826020830160208601610244565b8093505050509250929050565b6000825161034e818460208701610244565b9190910192915050565b60b7806103666000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea264697066735822122068bfc28cb2d118b34036260d2fe0b28765c5c90aab15cf90c1fb21f7a4b1fb6d64736f6c634300081a0033", } // ERC1967ProxyABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/erc1967utils.sol/erc1967utils.go b/v2/pkg/erc1967utils.sol/erc1967utils.go index a7da5f662..5d02bde16 100644 --- a/v2/pkg/erc1967utils.sol/erc1967utils.go +++ b/v2/pkg/erc1967utils.sol/erc1967utils.go @@ -32,7 +32,7 @@ var ( // 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: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122091156d60084c9fce5d95d631aade7a5afdd10bcc0a25ba43333a535126264e7264736f6c634300081a0033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206d1d9a34e41300a1f4abe728c05aea568c8b941becc75807d526810fe900e81464736f6c634300081a0033", } // ERC1967UtilsABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/erc20custody.sol/erc20custody.go b/v2/pkg/erc20custody.sol/erc20custody.go index 3bd59609d..ecd38ddb5 100644 --- a/v2/pkg/erc20custody.sol/erc20custody.go +++ b/v2/pkg/erc20custody.sol/erc20custody.go @@ -40,7 +40,7 @@ type RevertContext struct { // ERC20CustodyMetaData contains all meta data concerning the ERC20Custody contract. var ERC20CustodyMetaData = &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\":\"UPGRADE_INTERFACE_VERSION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WHITELISTER_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\":\"deposit\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"initialize\",\"inputs\":[{\"name\":\"gateway_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"tssAddress_\",\"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\":\"setSupportsLegacy\",\"inputs\":[{\"name\":\"_supportsLegacy\",\"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\":\"supportsLegacy\",\"inputs\":[],\"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\":\"unwhitelist\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateTSSAddress\",\"inputs\":[{\"name\":\"newTSSAddress\",\"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\":\"whitelist\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"whitelisted\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"token\",\"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\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Deposited\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"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\":\"Unwhitelisted\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedCustodyTSSAddress\",\"inputs\":[{\"name\":\"oldTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newTSSAddress\",\"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\":\"Whitelisted\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawn\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawnAndCalled\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"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\":\"WithdrawnAndReverted\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"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\":\"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\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LegacyMethodsNotSupported\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotWhitelisted\",\"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: "0x60a060405230608052348015601357600080fd5b5060805161299161003d600039600081816119610152818161198a0152611b6001526129916000f3fe6080604052600436106101c25760003560e01c806385f438c1116100f7578063ad3cb1cc11610095578063d9caed1211610064578063d9caed12146105f6578063e609055e14610616578063e63ab1e914610636578063eab103df1461066a57600080fd5b8063ad3cb1cc14610530578063c0c53b8b14610586578063d547741f146105a6578063d936547e146105c657600080fd5b806399a3c356116100d157806399a3c356146104bb5780639a590427146104db5780639b19251a146104fb578063a217fddf1461051b57600080fd5b806385f438c11461040257806391d1485414610436578063950837aa1461049b57600080fd5b80633f4ba83a11610164578063570618e11161013e578063570618e1146103625780635b112591146103965780635c975abb146103b65780638456cb59146103ed57600080fd5b80633f4ba83a146103255780634f1ef2861461033a57806352d1902d1461034d57600080fd5b8063248a9ca3116101a0578063248a9ca314610256578063252f07bf146102b35780632f2ff15d146102e557806336568abe1461030557600080fd5b806301ffc9a7146101c7578063116191b6146101fc57806321fc65f214610234575b600080fd5b3480156101d357600080fd5b506101e76101e23660046121a7565b61068a565b60405190151581526020015b60405180910390f35b34801561020857600080fd5b5060005461021c906001600160a01b031681565b6040516001600160a01b0390911681526020016101f3565b34801561024057600080fd5b5061025461024f366004612247565b610723565b005b34801561026257600080fd5b506102a56102713660046122ba565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101f3565b3480156102bf57600080fd5b506002546101e79074010000000000000000000000000000000000000000900460ff1681565b3480156102f157600080fd5b506102546103003660046122d3565b6108cc565b34801561031157600080fd5b506102546103203660046122d3565b610916565b34801561033157600080fd5b50610254610967565b610254610348366004612332565b61099c565b34801561035957600080fd5b506102a56109bb565b34801561036e57600080fd5b506102a57f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a81565b3480156103a257600080fd5b5060025461021c906001600160a01b031681565b3480156103c257600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101e7565b3480156103f957600080fd5b506102546109ea565b34801561040e57600080fd5b506102a57f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b34801561044257600080fd5b506101e76104513660046122d3565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156104a757600080fd5b506102546104b636600461243b565b610a1c565b3480156104c757600080fd5b506102546104d6366004612458565b610baf565b3480156104e757600080fd5b506102546104f636600461243b565b610d5d565b34801561050757600080fd5b5061025461051636600461243b565b610e11565b34801561052757600080fd5b506102a5600081565b34801561053c57600080fd5b506105796040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101f3919061251f565b34801561059257600080fd5b506102546105a1366004612570565b610ecb565b3480156105b257600080fd5b506102546105c13660046122d3565b6111f0565b3480156105d257600080fd5b506101e76105e136600461243b565b60016020526000908152604090205460ff1681565b34801561060257600080fd5b506102546106113660046125bb565b611234565b34801561062257600080fd5b506102546106313660046125fc565b61134b565b34801561064257600080fd5b506102a57f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b34801561067657600080fd5b5061025461068536600461269b565b611596565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061071d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61072b6115ec565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107558161166d565b61075d611677565b6001600160a01b03851660009081526001602052604090205460ff166107af576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546107c9906001600160a01b038781169116866116d5565b6000546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690635131ab599061081a9088908a90899089908990600401612701565b600060405180830381600087803b15801561083457600080fd5b505af1158015610848573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167f6478cbb6e28c0823c691dfd74c01c985634faddd4c401b990fe4ec26277ea8d586868660405161089393929190612744565b60405180910390a3506108c560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546109068161166d565b610910838361176f565b50505050565b6001600160a01b0381163314610958576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610962828261183e565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6109918161166d565b6109996118e4565b50565b6109a4611956565b6109ad82611a26565b6109b78282611a31565b5050565b60006109c5611b55565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a148161166d565b610999611bb7565b6000610a278161166d565b6001600160a01b038216610a67576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254610a9e907f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4906001600160a01b031661183e565b50600254610ad6907f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a906001600160a01b031661183e565b50610b017f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48361176f565b50610b2c7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a8361176f565b50600254604080516001600160a01b03928316815291841660208301527f4d3470c839d3c4dd664eec934b920c12fe0966e3185103dd40149496815df2b6910160405180910390a150600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b610bb76115ec565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610be18161166d565b610be9611677565b6001600160a01b03861660009081526001602052604090205460ff16610c3b576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610c55906001600160a01b038881169116876116d5565b6000546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063aa0c0fc190610ca89089908b908a908a908a908a90600401612813565b600060405180830381600087803b158015610cc257600080fd5b505af1158015610cd6573d6000803e3d6000fd5b50505050856001600160a01b0316876001600160a01b03167f7b53ec10a80164e60591c43d9c222e9354886981b880a3fba19c9ceb77fb972187878787604051610d23949392919061286a565b60405180910390a350610d5560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a610d878161166d565b6001600160a01b038216610dc7576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216600081815260016020526040808220805460ff19169055517f51085ddf9ebdded84b76e829eb58c4078e4b5bdf97d9a94723f336039da467919190a25050565b7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a610e3b8161166d565b6001600160a01b038216610e7b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166000818152600160208190526040808320805460ff1916909217909155517faab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a549190a25050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f165750825b905060008267ffffffffffffffff166001148015610f335750303b155b905081158015610f41575080155b15610f78576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fd95784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0388161580610ff657506001600160a01b038716155b8061100857506001600160a01b038616155b1561103f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611047611c12565b61104f611c1a565b611057611c12565b61105f611c2a565b600080546001600160a01b03808b167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617835560028054918b16919092161790556110ad908761176f565b506110d87f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8761176f565b506111037f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8861176f565b5061112e7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48861176f565b506111597f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a8761176f565b506111847f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a8861176f565b5083156111e65784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461122a8161166d565b610910838361183e565b61123c6115ec565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46112668161166d565b61126e611677565b6001600160a01b03831660009081526001602052604090205460ff166112c0576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112d46001600160a01b03841685846116d5565b826001600160a01b0316846001600160a01b03167fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb8460405161131991815260200190565b60405180910390a35061096260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6113536115ec565b61135b611677565b60025474010000000000000000000000000000000000000000900460ff166113af576040517f73cba66300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03841660009081526001602052604090205460ff16611401576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015611461573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114859190612896565b905061149c6001600160a01b038616333087611c3a565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038616907f1dafa057cc5c3bccb5ad974129a2bccd3c74002d9dfd7062404ba9523b18d6ae9089908990859085906370a0823190602401602060405180830381865afa158015611523573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115479190612896565b61155191906128af565b87876040516115649594939291906128e9565b60405180910390a250610d5560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60006115a18161166d565b506002805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611667576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6109998133611c73565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16156116d3576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040516001600160a01b0383811660248301526044820183905261096291859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d00565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611834576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556117ea3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061071d565b600091505061071d565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611834576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061071d565b6118ec611d7c565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806119ef57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166119e37f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b156116d3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006109b78161166d565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611aa9575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611aa691810190612896565b60015b611aef576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611b4b576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611ae6565b6109628383611dd7565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146116d3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611bbf611677565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611938565b6116d3611e2d565b611c22611e2d565b6116d3611e94565b611c32611e2d565b6116d3611e9c565b6040516001600160a01b0384811660248301528381166044830152606482018390526109109186918216906323b872dd90608401611702565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166109b7576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611ae6565b6000611d156001600160a01b03841683611ecf565b90508051600014158015611d3a575080806020019051810190611d389190612922565b155b15610962576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401611ae6565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166116d3576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611de082611ee4565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611e25576109628282611f8c565b6109b7612002565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166116d3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611749611e2d565b611ea4611e2d565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff19169055565b6060611edd8383600061203a565b9392505050565b806001600160a01b03163b600003611f33576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611ae6565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611fa9919061293f565b600060405180830381855af49150503d8060008114611fe4576040519150601f19603f3d011682016040523d82523d6000602084013e611fe9565b606091505b5091509150611ff98583836120f0565b95945050505050565b34156116d3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081471015612078576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401611ae6565b600080856001600160a01b03168486604051612094919061293f565b60006040518083038185875af1925050503d80600081146120d1576040519150601f19603f3d011682016040523d82523d6000602084013e6120d6565b606091505b50915091506120e68683836120f0565b9695505050505050565b6060826121055761210082612165565b611edd565b815115801561211c57506001600160a01b0384163b155b1561215e576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611ae6565b5080611edd565b8051156121755780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602082840312156121b957600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611edd57600080fd5b6001600160a01b038116811461099957600080fd5b60008083601f84011261221057600080fd5b50813567ffffffffffffffff81111561222857600080fd5b60208301915083602082850101111561224057600080fd5b9250929050565b60008060008060006080868803121561225f57600080fd5b853561226a816121e9565b9450602086013561227a816121e9565b935060408601359250606086013567ffffffffffffffff81111561229d57600080fd5b6122a9888289016121fe565b969995985093965092949392505050565b6000602082840312156122cc57600080fd5b5035919050565b600080604083850312156122e657600080fd5b8235915060208301356122f8816121e9565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561234557600080fd5b8235612350816121e9565b9150602083013567ffffffffffffffff81111561236c57600080fd5b8301601f8101851361237d57600080fd5b803567ffffffffffffffff81111561239757612397612303565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561240357612403612303565b60405281815282820160200187101561241b57600080fd5b816020840160208301376000602083830101528093505050509250929050565b60006020828403121561244d57600080fd5b8135611edd816121e9565b60008060008060008060a0878903121561247157600080fd5b863561247c816121e9565b9550602087013561248c816121e9565b945060408701359350606087013567ffffffffffffffff8111156124af57600080fd5b6124bb89828a016121fe565b909450925050608087013567ffffffffffffffff8111156124db57600080fd5b87016080818a0312156124ed57600080fd5b809150509295509295509295565b60005b838110156125165781810151838201526020016124fe565b50506000910152565b602081526000825180602084015261253e8160408501602087016124fb565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008060006060848603121561258557600080fd5b8335612590816121e9565b925060208401356125a0816121e9565b915060408401356125b0816121e9565b809150509250925092565b6000806000606084860312156125d057600080fd5b83356125db816121e9565b925060208401356125eb816121e9565b929592945050506040919091013590565b6000806000806000806080878903121561261557600080fd5b863567ffffffffffffffff81111561262c57600080fd5b61263889828a016121fe565b909750955050602087013561264c816121e9565b935060408701359250606087013567ffffffffffffffff81111561266f57600080fd5b61267b89828a016121fe565b979a9699509497509295939492505050565b801515811461099957600080fd5b6000602082840312156126ad57600080fd5b8135611edd8161268d565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b03861681526001600160a01b03851660208201528360408201526080606082015260006127396080830184866126b8565b979650505050505050565b838152604060208201526000611ff96040830184866126b8565b6000813561276b816121e9565b6001600160a01b031683526020820135612784816121e9565b6001600160a01b03166020840152604082810135908401526060820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe10181126127d257600080fd5b820160208101903567ffffffffffffffff8111156127ef57600080fd5b8036038213156127fe57600080fd5b60806060860152611ff96080860182846126b8565b6001600160a01b03871681526001600160a01b038616602082015284604082015260a06060820152600061284b60a0830185876126b8565b828103608084015261285d818561275e565b9998505050505050505050565b8481526060602082015260006128846060830185876126b8565b8281036040840152612739818561275e565b6000602082840312156128a857600080fd5b5051919050565b8181038181111561071d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6060815260006128fd6060830187896126b8565b85602084015282810360408401526129168185876126b8565b98975050505050505050565b60006020828403121561293457600080fd5b8151611edd8161268d565b600082516129518184602087016124fb565b919091019291505056fea264697066735822122032725bd2b7dce3e2ae6a3b0195af5832fc237f7d832025eeb8bb10b9c42be63964736f6c634300081a0033", + Bin: "0x60a060405230608052348015601357600080fd5b5060805161299161003d600039600081816119610152818161198a0152611b6001526129916000f3fe6080604052600436106101c25760003560e01c806385f438c1116100f7578063ad3cb1cc11610095578063d9caed1211610064578063d9caed12146105f6578063e609055e14610616578063e63ab1e914610636578063eab103df1461066a57600080fd5b8063ad3cb1cc14610530578063c0c53b8b14610586578063d547741f146105a6578063d936547e146105c657600080fd5b806399a3c356116100d157806399a3c356146104bb5780639a590427146104db5780639b19251a146104fb578063a217fddf1461051b57600080fd5b806385f438c11461040257806391d1485414610436578063950837aa1461049b57600080fd5b80633f4ba83a11610164578063570618e11161013e578063570618e1146103625780635b112591146103965780635c975abb146103b65780638456cb59146103ed57600080fd5b80633f4ba83a146103255780634f1ef2861461033a57806352d1902d1461034d57600080fd5b8063248a9ca3116101a0578063248a9ca314610256578063252f07bf146102b35780632f2ff15d146102e557806336568abe1461030557600080fd5b806301ffc9a7146101c7578063116191b6146101fc57806321fc65f214610234575b600080fd5b3480156101d357600080fd5b506101e76101e23660046121a7565b61068a565b60405190151581526020015b60405180910390f35b34801561020857600080fd5b5060005461021c906001600160a01b031681565b6040516001600160a01b0390911681526020016101f3565b34801561024057600080fd5b5061025461024f366004612247565b610723565b005b34801561026257600080fd5b506102a56102713660046122ba565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101f3565b3480156102bf57600080fd5b506002546101e79074010000000000000000000000000000000000000000900460ff1681565b3480156102f157600080fd5b506102546103003660046122d3565b6108cc565b34801561031157600080fd5b506102546103203660046122d3565b610916565b34801561033157600080fd5b50610254610967565b610254610348366004612332565b61099c565b34801561035957600080fd5b506102a56109bb565b34801561036e57600080fd5b506102a57f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a81565b3480156103a257600080fd5b5060025461021c906001600160a01b031681565b3480156103c257600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101e7565b3480156103f957600080fd5b506102546109ea565b34801561040e57600080fd5b506102a57f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b34801561044257600080fd5b506101e76104513660046122d3565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156104a757600080fd5b506102546104b636600461243b565b610a1c565b3480156104c757600080fd5b506102546104d6366004612458565b610baf565b3480156104e757600080fd5b506102546104f636600461243b565b610d5d565b34801561050757600080fd5b5061025461051636600461243b565b610e11565b34801561052757600080fd5b506102a5600081565b34801561053c57600080fd5b506105796040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101f3919061251f565b34801561059257600080fd5b506102546105a1366004612570565b610ecb565b3480156105b257600080fd5b506102546105c13660046122d3565b6111f0565b3480156105d257600080fd5b506101e76105e136600461243b565b60016020526000908152604090205460ff1681565b34801561060257600080fd5b506102546106113660046125bb565b611234565b34801561062257600080fd5b506102546106313660046125fc565b61134b565b34801561064257600080fd5b506102a57f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b34801561067657600080fd5b5061025461068536600461269b565b611596565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061071d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61072b6115ec565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107558161166d565b61075d611677565b6001600160a01b03851660009081526001602052604090205460ff166107af576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546107c9906001600160a01b038781169116866116d5565b6000546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690635131ab599061081a9088908a90899089908990600401612701565b600060405180830381600087803b15801561083457600080fd5b505af1158015610848573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167f6478cbb6e28c0823c691dfd74c01c985634faddd4c401b990fe4ec26277ea8d586868660405161089393929190612744565b60405180910390a3506108c560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546109068161166d565b610910838361176f565b50505050565b6001600160a01b0381163314610958576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610962828261183e565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6109918161166d565b6109996118e4565b50565b6109a4611956565b6109ad82611a26565b6109b78282611a31565b5050565b60006109c5611b55565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a148161166d565b610999611bb7565b6000610a278161166d565b6001600160a01b038216610a67576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254610a9e907f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4906001600160a01b031661183e565b50600254610ad6907f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a906001600160a01b031661183e565b50610b017f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48361176f565b50610b2c7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a8361176f565b50600254604080516001600160a01b03928316815291841660208301527f4d3470c839d3c4dd664eec934b920c12fe0966e3185103dd40149496815df2b6910160405180910390a150600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b610bb76115ec565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610be18161166d565b610be9611677565b6001600160a01b03861660009081526001602052604090205460ff16610c3b576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610c55906001600160a01b038881169116876116d5565b6000546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063aa0c0fc190610ca89089908b908a908a908a908a90600401612813565b600060405180830381600087803b158015610cc257600080fd5b505af1158015610cd6573d6000803e3d6000fd5b50505050856001600160a01b0316876001600160a01b03167f7b53ec10a80164e60591c43d9c222e9354886981b880a3fba19c9ceb77fb972187878787604051610d23949392919061286a565b60405180910390a350610d5560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a610d878161166d565b6001600160a01b038216610dc7576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216600081815260016020526040808220805460ff19169055517f51085ddf9ebdded84b76e829eb58c4078e4b5bdf97d9a94723f336039da467919190a25050565b7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a610e3b8161166d565b6001600160a01b038216610e7b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166000818152600160208190526040808320805460ff1916909217909155517faab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a549190a25050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f165750825b905060008267ffffffffffffffff166001148015610f335750303b155b905081158015610f41575080155b15610f78576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fd95784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0388161580610ff657506001600160a01b038716155b8061100857506001600160a01b038616155b1561103f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611047611c12565b61104f611c1a565b611057611c12565b61105f611c2a565b600080546001600160a01b03808b167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617835560028054918b16919092161790556110ad908761176f565b506110d87f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8761176f565b506111037f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8861176f565b5061112e7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48861176f565b506111597f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a8761176f565b506111847f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a8861176f565b5083156111e65784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461122a8161166d565b610910838361183e565b61123c6115ec565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46112668161166d565b61126e611677565b6001600160a01b03831660009081526001602052604090205460ff166112c0576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112d46001600160a01b03841685846116d5565b826001600160a01b0316846001600160a01b03167fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb8460405161131991815260200190565b60405180910390a35061096260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6113536115ec565b61135b611677565b60025474010000000000000000000000000000000000000000900460ff166113af576040517f73cba66300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03841660009081526001602052604090205460ff16611401576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015611461573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114859190612896565b905061149c6001600160a01b038616333087611c3a565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038616907f1dafa057cc5c3bccb5ad974129a2bccd3c74002d9dfd7062404ba9523b18d6ae9089908990859085906370a0823190602401602060405180830381865afa158015611523573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115479190612896565b61155191906128af565b87876040516115649594939291906128e9565b60405180910390a250610d5560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60006115a18161166d565b506002805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611667576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6109998133611c73565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16156116d3576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040516001600160a01b0383811660248301526044820183905261096291859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d00565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611834576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556117ea3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061071d565b600091505061071d565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611834576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061071d565b6118ec611d7c565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806119ef57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166119e37f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b156116d3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006109b78161166d565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611aa9575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611aa691810190612896565b60015b611aef576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611b4b576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611ae6565b6109628383611dd7565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146116d3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611bbf611677565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611938565b6116d3611e2d565b611c22611e2d565b6116d3611e94565b611c32611e2d565b6116d3611e9c565b6040516001600160a01b0384811660248301528381166044830152606482018390526109109186918216906323b872dd90608401611702565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166109b7576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611ae6565b6000611d156001600160a01b03841683611ecf565b90508051600014158015611d3a575080806020019051810190611d389190612922565b155b15610962576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401611ae6565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166116d3576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611de082611ee4565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611e25576109628282611f8c565b6109b7612002565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166116d3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611749611e2d565b611ea4611e2d565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff19169055565b6060611edd8383600061203a565b9392505050565b806001600160a01b03163b600003611f33576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611ae6565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611fa9919061293f565b600060405180830381855af49150503d8060008114611fe4576040519150601f19603f3d011682016040523d82523d6000602084013e611fe9565b606091505b5091509150611ff98583836120f0565b95945050505050565b34156116d3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081471015612078576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401611ae6565b600080856001600160a01b03168486604051612094919061293f565b60006040518083038185875af1925050503d80600081146120d1576040519150601f19603f3d011682016040523d82523d6000602084013e6120d6565b606091505b50915091506120e68683836120f0565b9695505050505050565b6060826121055761210082612165565b611edd565b815115801561211c57506001600160a01b0384163b155b1561215e576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611ae6565b5080611edd565b8051156121755780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602082840312156121b957600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611edd57600080fd5b6001600160a01b038116811461099957600080fd5b60008083601f84011261221057600080fd5b50813567ffffffffffffffff81111561222857600080fd5b60208301915083602082850101111561224057600080fd5b9250929050565b60008060008060006080868803121561225f57600080fd5b853561226a816121e9565b9450602086013561227a816121e9565b935060408601359250606086013567ffffffffffffffff81111561229d57600080fd5b6122a9888289016121fe565b969995985093965092949392505050565b6000602082840312156122cc57600080fd5b5035919050565b600080604083850312156122e657600080fd5b8235915060208301356122f8816121e9565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561234557600080fd5b8235612350816121e9565b9150602083013567ffffffffffffffff81111561236c57600080fd5b8301601f8101851361237d57600080fd5b803567ffffffffffffffff81111561239757612397612303565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561240357612403612303565b60405281815282820160200187101561241b57600080fd5b816020840160208301376000602083830101528093505050509250929050565b60006020828403121561244d57600080fd5b8135611edd816121e9565b60008060008060008060a0878903121561247157600080fd5b863561247c816121e9565b9550602087013561248c816121e9565b945060408701359350606087013567ffffffffffffffff8111156124af57600080fd5b6124bb89828a016121fe565b909450925050608087013567ffffffffffffffff8111156124db57600080fd5b87016080818a0312156124ed57600080fd5b809150509295509295509295565b60005b838110156125165781810151838201526020016124fe565b50506000910152565b602081526000825180602084015261253e8160408501602087016124fb565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008060006060848603121561258557600080fd5b8335612590816121e9565b925060208401356125a0816121e9565b915060408401356125b0816121e9565b809150509250925092565b6000806000606084860312156125d057600080fd5b83356125db816121e9565b925060208401356125eb816121e9565b929592945050506040919091013590565b6000806000806000806080878903121561261557600080fd5b863567ffffffffffffffff81111561262c57600080fd5b61263889828a016121fe565b909750955050602087013561264c816121e9565b935060408701359250606087013567ffffffffffffffff81111561266f57600080fd5b61267b89828a016121fe565b979a9699509497509295939492505050565b801515811461099957600080fd5b6000602082840312156126ad57600080fd5b8135611edd8161268d565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b03861681526001600160a01b03851660208201528360408201526080606082015260006127396080830184866126b8565b979650505050505050565b838152604060208201526000611ff96040830184866126b8565b6000813561276b816121e9565b6001600160a01b031683526020820135612784816121e9565b6001600160a01b03166020840152604082810135908401526060820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe10181126127d257600080fd5b820160208101903567ffffffffffffffff8111156127ef57600080fd5b8036038213156127fe57600080fd5b60806060860152611ff96080860182846126b8565b6001600160a01b03871681526001600160a01b038616602082015284604082015260a06060820152600061284b60a0830185876126b8565b828103608084015261285d818561275e565b9998505050505050505050565b8481526060602082015260006128846060830185876126b8565b8281036040840152612739818561275e565b6000602082840312156128a857600080fd5b5051919050565b8181038181111561071d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6060815260006128fd6060830187896126b8565b85602084015282810360408401526129168185876126b8565b98975050505050505050565b60006020828403121561293457600080fd5b8151611edd8161268d565b600082516129518184602087016124fb565b919091019291505056fea26469706673582212207a20ae6f4de44d8614b3f15643f6f6aea60080c2e642775549b18270202b098464736f6c634300081a0033", } // ERC20CustodyABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/erc20custody.t.sol/erc20custodytest.go b/v2/pkg/erc20custody.t.sol/erc20custodytest.go index baff82723..3d19ec8b3 100644 --- a/v2/pkg/erc20custody.t.sol/erc20custodytest.go +++ b/v2/pkg/erc20custody.t.sol/erc20custodytest.go @@ -67,7 +67,7 @@ type StdInvariantFuzzSelector struct { // ERC20CustodyTestMetaData contains all meta data concerning the ERC20CustodyTest contract. var ERC20CustodyTestMetaData = &bind.MetaData{ ABI: "[{\"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\":\"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\":\"WHITELISTER_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\":\"testDepositLegacy\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositLegacyFailsIfNotSupported\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositLegacyFailsIfTokenNotWhitelisted\",\"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\":\"testForwardCallToReceiveERC20ThroughCustodyFailsIfReceiverIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotWithdrawer\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveERC20ThroughCustodyTogglePause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveNoParamsThroughCustody\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTSSUpgrade\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTSSUpgradeFailsIfSenderIsNotTSSUpdater\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTSSUpgradeFailsIfZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUnwhitelist\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUnwhitelistFailsIfSenderIsNotWhitelister\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUnwhitelistFailsIfZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpgradeAndWithdraw\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWhitelist\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWhitelistFailsIfSenderIsNotWhitelister\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWhitelistFailsIfZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallFailsIfTokenIsNotWhitelisted\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevertFailsIfTokenIsNotWhitelisted\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevertThroughCustody\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevertThroughCustodyFailsIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevertThroughCustodyFailsIfReceiverIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevertThroughCustodyFailsIfSenderIsNotWithdrawer\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawFailsIfTokenIsNotWhitelisted\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawThroughCustody\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawThroughCustodyFailsIfSenderIsNotWithdrawer\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Called\",\"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\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposited\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposited\",\"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\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\":\"ReceivedOnCall\",\"inputs\":[],\"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\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unwhitelisted\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedCustodyTSSAddress\",\"inputs\":[{\"name\":\"oldTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedGatewayTSSAddress\",\"inputs\":[{\"name\":\"oldTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Whitelisted\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawn\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawnAndCalled\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"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\":\"WithdrawnAndReverted\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawnV2\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"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\":\"ConnectorInitialized\",\"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\":\"LegacyMethodsNotSupported\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotAllowedToCallOnCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotAllowedToCallOnRevert\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotWhitelisted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotWhitelistedInCustody\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PayloadSizeExceeded\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061fa5a8061003c6000396000f3fe608060405234801561001057600080fd5b50600436106103365760003560e01c806385f438c1116101b2578063b5508aa9116100f9578063eb1ce7f9116100a2578063fa2a70741161007c578063fa2a7074146105b0578063fa7626d4146105b8578063fb176c12146105c5578063fe8e5f1b146105cd57600080fd5b8063eb1ce7f914610598578063f0c8e7e0146105a0578063f4221f08146105a857600080fd5b8063cbd57e2f116100d3578063cbd57e2f14610561578063e20c9f7114610569578063e63ab1e91461057157600080fd5b8063b5508aa914610539578063ba414fa614610541578063c713f8271461055957600080fd5b8063a3f9d0e01161015b578063af298bb111610135578063af298bb114610521578063b0464fdc14610529578063b421ca701461053157600080fd5b8063a3f9d0e0146104ea578063a4943deb146104f2578063a783c789146104fa57600080fd5b80639918c1c21161018c5780639918c1c2146104d25780639fc7fd55146104da578063a217fddf146104e257600080fd5b806385f438c11461048e5780639158c623146104b5578063916a17c6146104bd57600080fd5b806349c783dd1161028157806366d9a9a01161022a57806371149c941161020457806371149c94146104615780637e91c50f1461046957806382c529921461047157806385226c811461047957600080fd5b806366d9a9a01461043c5780636a621854146104515780637099d6f81461045957600080fd5b806352ff59391161025b57806352ff5939146103d8578063570618e1146103e05780635d62c8601461041557600080fd5b806349c783dd146103c05780634df42da1146103c857806351ecdf3c146103d057600080fd5b80632ade3880116102e35780633e73ecb4116102bd5780633e73ecb4146103a85780633ee92923146103b05780633f7286f4146103b857600080fd5b80632ade3880146103835780632be6a162146103985780633e5e3c23146103a057600080fd5b80631779672f116103145780631779672f146103555780631ed7831c1461035d578063284cb9291461037b57600080fd5b8063070f2ad01461033b5780630a9254e4146103455780630eee72a91461034d575b600080fd5b6103436105d5565b005b6103436107c1565b610343611248565b6103436114c5565b610365611603565b604051610372919061c4be565b60405180910390f35b610343611665565b61038b611946565b604051610372919061c55a565b610343611a88565b610365611c34565b610343611c94565b6103436121e7565b6103656122a3565b610343612303565b610343612640565b610343612798565b610343612956565b6104077f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a81565b604051908152602001610372565b6104077f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b610444613186565b604051610372919061c6c0565b6103436132f3565b6103436133ac565b61034361365a565b610343613e67565b610343613ff2565b610481614264565b604051610372919061c75e565b6104077f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b610343614334565b6104c5614402565b604051610372919061c7d5565b6103436144e8565b6103436147cc565b610407600081565b61034361489a565b610343614e79565b6104077f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b61034361508c565b6104c5615630565b610343615716565b610481615c4c565b610549615d1c565b6040519015158152602001610372565b610343615df0565b610343616a41565b610365616adf565b6104077f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b610343616b3f565b610343616c4b565b610343616df7565b61034361704e565b601f546105499060ff1681565b61034361732f565b610343617986565b6027546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b15801561064757600080fd5b505af115801561065b573d6000803e3d6000fd5b5050602754604080516001600160a01b039092166024830152600060448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250610712919060040161c86c565b600060405180830381600087803b15801561072c57600080fd5b505af1158015610740573d6000803e3d6000fd5b50506021546025546040517f950837aa0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063950837aa91506024015b600060405180830381600087803b1580156107a757600080fd5b505af11580156107bb573d6000803e3d6000fd5b50505050565b602580547fffffffffffffffffffffffff000000000000000000000000000000000000000090811630179091556026805482166112341790556027805482166156781790556028805490911661987617905560405161081f9061c3eb565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f0801580156108a4573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516108e99061c3eb565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f08015801561096d573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c000000000000000000000000000000000000602082015260275460255492519086169481019490945260448401929092529092166064820152600091610a4c916084015b60408051601f198184030181529190526020810180516001600160e01b03167fc0c53b8b00000000000000000000000000000000000000000000000000000000179052617b5f565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0384811682029290921792839055604080518082018252601081527f4552433230437573746f64792e736f6c0000000000000000000000000000000060208201526027546025549251939095048416602484015293831660448301529091166064820152919250610aef91608401610a04565b602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383811691909117909155604080518082018252601a81527f5a657461436f6e6e6563746f724e6f6e4e61746976652e736f6c0000000000006020820152601f546024805460275460255495516101009094048716928401929092528516604483015284166064820152919092166084820152919250610be19160a40160408051601f198184030181529190526020810180516001600160e01b03167ff8c8765e00000000000000000000000000000000000000000000000000000000179052617b5f565b602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038316179055604051909150610c239061c3f8565b604051809103906000f080158015610c3f573d6000803e3d6000fd5b50602080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556027546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b158015610ceb57600080fd5b505af1158015610cff573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610d7557600080fd5b505af1158015610d89573d6000803e3d6000fd5b5050601f546021546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261010090920416925063ae7a3a6f9150602401600060405180830381600087803b158015610df457600080fd5b505af1158015610e08573d6000803e3d6000fd5b5050601f546022546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526101009092041692506310188aef9150602401600060405180830381600087803b158015610e7357600080fd5b505af1158015610e87573d6000803e3d6000fd5b50506021546023546040517f9b19251a0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015291169250639b19251a9150602401600060405180830381600087803b158015610eed57600080fd5b505af1158015610f01573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610f6357600080fd5b505af1158015610f77573d6000803e3d6000fd5b50506023546025546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f42406024820152911692506340c10f199150604401600060405180830381600087803b158015610fe657600080fd5b505af1158015610ffa573d6000803e3d6000fd5b5050602480546025546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f4240938101939093521692506340c10f199150604401600060405180830381600087803b15801561106b57600080fd5b505af115801561107f573d6000803e3d6000fd5b50506023546021546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12060248201529116925063a9059cbb91506044016020604051808303816000875af11580156110f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611117919061c87f565b506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561119857600080fd5b505af11580156111ac573d6000803e3d6000fd5b5050604080516080810182526025546001600160a01b039081168252602354811660208084019182526001848601908152855191820190955260008152606084018190528351602980549185167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161781559251602a8054919095169116179092559251602b55909350909150602c906107bb908261c969565b602354602654604051620186a0602482018190526001600160a01b03938416604483015292909116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167fc513169100000000000000000000000000000000000000000000000000000000179052602554905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b15801561131a57600080fd5b505af115801561132e573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250611404919060040161c86c565b600060405180830381600087803b15801561141e57600080fd5b505af1158015611432573d6000803e3d6000fd5b50506021546020546023546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f2945061148f9392831692909116908790879060040161ca28565b600060405180830381600087803b1580156114a957600080fd5b505af11580156114bd573d6000803e3d6000fd5b505050505050565b6023546026546040516000602482018190526001600160a01b039384166044830152929091166064820152819060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a200000000000000000000000000000000000000000000000000000000179052602754905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b15801561159457600080fd5b505af11580156115a8573d6000803e3d6000fd5b5050604051630618f58760e51b81527f951e19ed000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401611404565b6060601680548060200260200160405190810160405280929190818152602001828054801561165b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161163d575b5050505050905090565b602154602480546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600093919091169163d936547e9101602060405180830381865afa1580156116ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f2919061c87f565b90506116ff600082617b7e565b6021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561177457600080fd5b505af1158015611788573d6000803e3d6000fd5b50506024546040516001600160a01b0390911692507faab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a549150600090a260255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561181d57600080fd5b505af1158015611831573d6000803e3d6000fd5b5050602154602480546040517f9b19251a0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015292169350639b19251a925001600060405180830381600087803b15801561189657600080fd5b505af11580156118aa573d6000803e3d6000fd5b5050602154602480546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529216935063d936547e925001602060405180830381865afa158015611912573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611936919061c87f565b9050611943600182617b7e565b50565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015611a7f57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015611a685783829060005260206000200180546119db9061c8d0565b80601f0160208091040260200160405190810160405280929190818152602001828054611a079061c8d0565b8015611a545780601f10611a2957610100808354040283529160200191611a54565b820191906000526020600020905b815481529060010190602001808311611a3757829003601f168201915b5050505050815260200190600101906119bc565b50505050815250508152602001906001019061196a565b50505050905090565b60405163ca669fa760e01b81526101236004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611ad657600080fd5b505af1158015611aea573d6000803e3d6000fd5b50506040805161012360248201527f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a60448083019190915282518083039091018152606490910182526020810180516001600160e01b03167fe2517d3f0000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250611bb6919060040161c86c565b600060405180830381600087803b158015611bd057600080fd5b505af1158015611be4573d6000803e3d6000fd5b5050602154602480546040517f9b19251a0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015292169350639b19251a92500161078d565b6060601880548060200260200160405190810160405280929190818152602001828054801561165b576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161163d575050505050905090565b6023546026546040516370a0823160e01b81526001600160a01b039182166004820152620186a09260009216906370a0823190602401602060405180830381865afa158015611ce7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d0b919061ca5f565b9050611d18816000617c00565b6023546021546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611d69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d8d919061ca5f565b602654604080516001600160a01b039283166024820152604480820188905282518083039091018152606490910182526020810180516001600160e01b03167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260235491517ff30c7ba300000000000000000000000000000000000000000000000000000000815293945092737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba392611e4c92911690600090869060040161ca78565b600060405180830381600087803b158015611e6657600080fd5b505af1158015611e7a573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015611ef357600080fd5b505af1158015611f07573d6000803e3d6000fd5b50506023546026546040518881526001600160a01b039283169450911691507fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb9060200160405180910390a360275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611fac57600080fd5b505af1158015611fc0573d6000803e3d6000fd5b50506021546026546023546040517fd9caed120000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082166024820152604481018990529116925063d9caed129150606401600060405180830381600087803b15801561203857600080fd5b505af115801561204c573d6000803e3d6000fd5b50506023546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa15801561209f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c3919061ca5f565b90506120cf8186617c00565b6023546021546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015612120573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612144919061ca5f565b905061215981612154888761cacf565b617c00565b602354601f546040516370a0823160e01b81526101009091046001600160a01b03908116600483015260009216906370a0823190602401602060405180830381865afa1580156121ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d1919061ca5f565b90506121de816000617c00565b50505050505050565b602354602654604051620186a0602482018190526001600160a01b03938416604483015292909116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a200000000000000000000000000000000000000000000000000000000179052602554905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401611300565b6060601780548060200260200160405190810160405280929190818152602001828054801561165b576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161163d575050505050905090565b6021546040517feab103df000000000000000000000000000000000000000000000000000000008152600060048201526001600160a01b039091169063eab103df90602401600060405180830381600087803b15801561236257600080fd5b505af1158015612376573d6000803e3d6000fd5b50506023546021546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424060248201529116925063095ea7b391506044016020604051808303816000875af11580156123ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061240e919061c87f565b50602480546021546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424093810193909352169063095ea7b3906044016020604051808303816000875af1158015612481573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124a5919061c87f565b50604080517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152815160058183030181526025820192839052630618f58760e51b9092527f73cba663000000000000000000000000000000000000000000000000000000006029820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906049015b600060405180830381600087803b15801561254d57600080fd5b505af1158015612561573d6000803e3d6000fd5b505060215460265460405160609190911b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208201526001600160a01b03909116925063e609055e915060340160408051601f19818403018152908290526023547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261260b926001600160a01b03909116906103e890879060040161cae2565b600060405180830381600087803b15801561262557600080fd5b505af1158015612639573d6000803e3d6000fd5b5050505050565b6025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156126b257600080fd5b505af11580156126c6573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561273657600080fd5b505af115801561274a573d6000803e3d6000fd5b50506021546040517f950837aa000000000000000000000000000000000000000000000000000000008152600060048201526001600160a01b03909116925063950837aa915060240161078d565b6023546026546040516001602482018190526001600160a01b03938416604483015292909116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a200000000000000000000000000000000000000000000000000000000179052602754905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561286757600080fd5b505af115801561287b573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156128eb57600080fd5b505af11580156128ff573d6000803e3d6000fd5b50506021546023546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321fc65f2935061148f9260009216908790879060040161ca28565b6021546040517f91d148540000000000000000000000000000000000000000000000000000000081527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4600482015261432160248201819052916000916001600160a01b03909116906391d1485490604401602060405180830381865afa1580156129e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a09919061c87f565b9050612a1481617c58565b6021546040517f91d148540000000000000000000000000000000000000000000000000000000081527f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a60048201526001600160a01b03848116602483015260009216906391d1485490604401602060405180830381865afa158015612a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ac2919061c87f565b9050612acd81617c58565b6021546027546040517f91d148540000000000000000000000000000000000000000000000000000000081527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460048201526001600160a01b03918216602482015260009291909116906391d1485490604401602060405180830381865afa158015612b5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b81919061c87f565b9050612b8c81617cd2565b6021546027546040517f91d148540000000000000000000000000000000000000000000000000000000081527f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a60048201526001600160a01b03918216602482015260009291909116906391d1485490604401602060405180830381865afa158015612c1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c40919061c87f565b9050612c4b81617cd2565b6025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b158015612cbd57600080fd5b505af1158015612cd1573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015612d4a57600080fd5b505af1158015612d5e573d6000803e3d6000fd5b5050602754604080516001600160a01b03928316815291891660208301527f4d3470c839d3c4dd664eec934b920c12fe0966e3185103dd40149496815df2b6935001905060405180910390a16021546040517f950837aa0000000000000000000000000000000000000000000000000000000081526001600160a01b0387811660048301529091169063950837aa90602401600060405180830381600087803b158015612e0a57600080fd5b505af1158015612e1e573d6000803e3d6000fd5b50505050612ea285602160009054906101000a90046001600160a01b03166001600160a01b0316635b1125916040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e9d919061cb1c565b617d24565b6021546040517f91d148540000000000000000000000000000000000000000000000000000000081527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460048201526001600160a01b038781166024830152909116906391d1485490604401602060405180830381865afa158015612f2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f4f919061c87f565b9350612f5a84617cd2565b6021546040517f91d148540000000000000000000000000000000000000000000000000000000081527f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a60048201526001600160a01b038781166024830152909116906391d1485490604401602060405180830381865afa158015612fe3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613007919061c87f565b925061301283617cd2565b6021546027546040517f91d148540000000000000000000000000000000000000000000000000000000081527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460048201526001600160a01b0391821660248201529116906391d1485490604401602060405180830381865afa15801561309d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130c1919061c87f565b91506130cc82617c58565b6021546027546040517f91d148540000000000000000000000000000000000000000000000000000000081527f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a60048201526001600160a01b0391821660248201529116906391d1485490604401602060405180830381865afa158015613157573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061317b919061c87f565b905061263981617c58565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015611a7f57838290600052602060002090600202016040518060400160405290816000820180546131dd9061c8d0565b80601f01602080910402602001604051908101604052809291908181526020018280546132099061c8d0565b80156132565780601f1061322b57610100808354040283529160200191613256565b820191906000526020600020905b81548152906001019060200180831161323957829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156132db57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161329d5790505b505050505081525050815260200190600101906131aa565b6023546026546040516000602482018190526001600160a01b039384166044830152929091166064820152819060840160408051601f198184030181529181526020820180516001600160e01b03167fc513169100000000000000000000000000000000000000000000000000000000179052602754905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa79060240161157a565b6021546040517feab103df000000000000000000000000000000000000000000000000000000008152600160048201526001600160a01b039091169063eab103df90602401600060405180830381600087803b15801561340b57600080fd5b505af115801561341f573d6000803e3d6000fd5b50506021546023546040517f9a5904270000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015291169250639a5904279150602401600060405180830381600087803b15801561348557600080fd5b505af1158015613499573d6000803e3d6000fd5b50506023546021546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424060248201529116925063095ea7b391506044016020604051808303816000875af115801561350d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613531919061c87f565b50602480546021546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424093810193909352169063095ea7b3906044016020604051808303816000875af11580156135a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135c8919061c87f565b50604080517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152815160058183030181526025820192839052630618f58760e51b9092527f584a7938000000000000000000000000000000000000000000000000000000006029820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090604901612533565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a09060009060250160408051808303601f19018152908290526023546020546370a0823160e01b84526001600160a01b0390811660048501529193506000929116906370a0823190602401602060405180830381865afa1580156136ee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613712919061ca5f565b905061371f816000617c00565b6023546021546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015613770573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613794919061ca5f565b601f54604080516001600160a01b0361010090930483166024820152604480820189905282518083039091018152606490910182526020810180517fa9059cbb000000000000000000000000000000000000000000000000000000006001600160e01b0390911617905260235491517ff30c7ba300000000000000000000000000000000000000000000000000000000815293945092737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba39261385a92911690600090869060040161ca78565b600060405180830381600087803b15801561387457600080fd5b505af1158015613888573d6000803e3d6000fd5b50506020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561390157600080fd5b505af1158015613915573d6000803e3d6000fd5b505050507f689a5a5cb55e795ffe4cd8b419cd3bb0a3373974c54d25f64e734d7388b93e9b601f60019054906101000a90046001600160a01b0316602960405161396092919061cc22565b60405180910390a1601f546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156139e157600080fd5b505af11580156139f5573d6000803e3d6000fd5b50506023546020546040516001600160a01b039283169450911691507fde7603a6ed5d07c9f43597ccfe9043d15b66d3284f0de321f5cdf56329e6e03590613a43908990899060299061cc44565b60405180910390a36021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015613ac057600080fd5b505af1158015613ad4573d6000803e3d6000fd5b50506023546020546040516001600160a01b039283169450911691507f7b53ec10a80164e60591c43d9c222e9354886981b880a3fba19c9ceb77fb972190613b22908990899060299061cc44565b60405180910390a360275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613b8357600080fd5b505af1158015613b97573d6000803e3d6000fd5b50506021546020546023546040517f99a3c3560000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506399a3c3569450613bf79392831692909116908a908a9060299060040161cc6f565b600060405180830381600087803b158015613c1157600080fd5b505af1158015613c25573d6000803e3d6000fd5b50506023546020546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a08231906024015b602060405180830381865afa158015613c79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c9d919061ca5f565b9050613ca98187617c00565b6023546021546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015613cfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d1e919061ca5f565b9050613d2e81612154898761cacf565b602354601f546020546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526101009092046001600160a01b0390811660048401529081166024830152600092169063dd62ed3e90604401602060405180830381865afa158015613da6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dca919061ca5f565b9050613dd7816000617c00565b602354601f546040516370a0823160e01b81526101009091046001600160a01b03908116600483015260009216906370a0823190602401602060405180830381865afa158015613e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e4f919061ca5f565b9050613e5c816000617c00565b505050505050505050565b6040517f68656c6c6f000000000000000000000000000000000000000000000000000000602082015260019060009060250160408051808303601f190181529082905260275463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613f0057600080fd5b505af1158015613f14573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015613f8457600080fd5b505af1158015613f98573d6000803e3d6000fd5b50506021546023546040517f99a3c3560000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506399a3c356935061148f9260009216908790879060299060040161cc6f565b6027546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b15801561406457600080fd5b505af1158015614078573d6000803e3d6000fd5b50506021546023546040517f9a5904270000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015291169250639a5904279150602401600060405180830381600087803b1580156140de57600080fd5b505af11580156140f2573d6000803e3d6000fd5b5050604051630618f58760e51b81527f584a7938000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561416257600080fd5b505af1158015614176573d6000803e3d6000fd5b50506021546026546023546040517fd9caed120000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082166024820152600160448201529116925063d9caed129150606401600060405180830381600087803b1580156141ee57600080fd5b505af1158015614202573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156107a757600080fd5b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015611a7f5783829060005260206000200180546142a79061c8d0565b80601f01602080910402602001604051908101604052809291908181526020018280546142d39061c8d0565b80156143205780601f106142f557610100808354040283529160200191614320565b820191906000526020600020905b81548152906001019060200180831161430357829003601f168201915b505050505081526020019060010190614288565b604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156143a057600080fd5b505af11580156143b4573d6000803e3d6000fd5b50506021546040517f9a590427000000000000000000000000000000000000000000000000000000008152600060048201526001600160a01b039091169250639a590427915060240161078d565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015611a7f5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156144d057602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116144925790505b50505050508152505081526020019060010190614426565b602354602654604051600160248201526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a20000000000000000000000000000000000000000000000000000000017905260275490517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156145cc57600080fd5b505af11580156145e0573d6000803e3d6000fd5b50506021546023546040517f9a5904270000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015291169250639a5904279150602401600060405180830381600087803b15801561464657600080fd5b505af115801561465a573d6000803e3d6000fd5b5050604051630618f58760e51b81527f584a7938000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156146ca57600080fd5b505af11580156146de573d6000803e3d6000fd5b50506021546020546023546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f2945061473c939283169290911690600190879060040161ca28565b600060405180830381600087803b15801561475657600080fd5b505af115801561476a573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561262557600080fd5b604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561483857600080fd5b505af115801561484c573d6000803e3d6000fd5b50506021546040517f9b19251a000000000000000000000000000000000000000000000000000000008152600060048201526001600160a01b039091169250639b19251a915060240161078d565b604080516004808252602480830184526020830180516001600160e01b03167f6ed701690000000000000000000000000000000000000000000000000000000017905260235460265494516370a0823160e01b81526001600160a01b0395861693810193909352620186a0946000939116916370a082319101602060405180830381865afa158015614930573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614954919061ca5f565b9050614961816000617c00565b6023546021546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156149b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906149d6919061ca5f565b601f54604080516001600160a01b0361010090930483166024820152604480820189905282518083039091018152606490910182526020810180517fa9059cbb000000000000000000000000000000000000000000000000000000006001600160e01b0390911617905260235491517ff30c7ba300000000000000000000000000000000000000000000000000000000815293945092737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba392614a9c92911690600090869060040161ca78565b600060405180830381600087803b158015614ab657600080fd5b505af1158015614aca573d6000803e3d6000fd5b50506020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015614b4357600080fd5b505af1158015614b57573d6000803e3d6000fd5b5050601f546040516101009091046001600160a01b031681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09250602001905060405180910390a16021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015614c1557600080fd5b505af1158015614c29573d6000803e3d6000fd5b50506023546020546040516001600160a01b039283169450911691507f6478cbb6e28c0823c691dfd74c01c985634faddd4c401b990fe4ec26277ea8d590614c74908990899061ccc4565b60405180910390a360275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614cd557600080fd5b505af1158015614ce9573d6000803e3d6000fd5b50506021546020546023546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f29450614d469392831692909116908a908a9060040161ca28565b600060405180830381600087803b158015614d6057600080fd5b505af1158015614d74573d6000803e3d6000fd5b50506023546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015614dc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614deb919061ca5f565b9050614df8816000617c00565b6023546021546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015614e49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614e6d919061ca5f565b9050613d2e8185617c00565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a09060009060250160408051808303601f190181529082905260255463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614f1457600080fd5b505af1158015614f28573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250614ffe919060040161c86c565b600060405180830381600087803b15801561501857600080fd5b505af115801561502c573d6000803e3d6000fd5b50506021546020546023546040517f99a3c3560000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506399a3c356945061148f9392831692909116908790879060299060040161cc6f565b602154604080518082018252601b81527f4552433230437573746f647955706772616465546573742e736f6c00000000006020808301919091528251908101909252600082526025546150ec936001600160a01b03908116939116617d85565b6021546023546026546040516370a0823160e01b81526001600160a01b03918216600482015292811692620186a09260009216906370a0823190602401602060405180830381865afa158015615146573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061516a919061ca5f565b9050615177816000617c00565b6023546040516370a0823160e01b81526001600160a01b03858116600483015260009216906370a0823190602401602060405180830381865afa1580156151c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906151e6919061ca5f565b602654604080516001600160a01b039283166024820152604480820188905282518083039091018152606490910182526020810180516001600160e01b03167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260235491517ff30c7ba300000000000000000000000000000000000000000000000000000000815293945092737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba3926152a592911690600090869060040161ca78565b600060405180830381600087803b1580156152bf57600080fd5b505af11580156152d3573d6000803e3d6000fd5b50506040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b0388166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561534857600080fd5b505af115801561535c573d6000803e3d6000fd5b50506023546026546040518881526001600160a01b039283169450911691507fd4dabfe72081670cc78f2ebda8e2eddaf3feebde6288dcb8fe673b3dc201b5a49060200160405180910390a360275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561540157600080fd5b505af1158015615415573d6000803e3d6000fd5b50506026546023546040517fd9caed120000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152908216602482015260448101889052908816925063d9caed129150606401600060405180830381600087803b15801561548b57600080fd5b505af115801561549f573d6000803e3d6000fd5b50506023546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156154f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615516919061ca5f565b90506155228186617c00565b6023546040516370a0823160e01b81526001600160a01b03888116600483015260009216906370a0823190602401602060405180830381865afa15801561556d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615591919061ca5f565b90506155a181612154888761cacf565b602354601f546040516370a0823160e01b81526101009091046001600160a01b03908116600483015260009216906370a0823190602401602060405180830381865afa1580156155f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615619919061ca5f565b9050615626816000617c00565b5050505050505050565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015611a7f5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156156fe57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116156c05790505b50505050508152505081526020019060010190615654565b6021546040517feab103df000000000000000000000000000000000000000000000000000000008152600160048201526103e8916001600160a01b03169063eab103df90602401600060405180830381600087803b15801561577757600080fd5b505af115801561578b573d6000803e3d6000fd5b50506023546021546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424060248201529116925063095ea7b391506044016020604051808303816000875af11580156157ff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615823919061c87f565b50602480546021546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424093810193909352169063095ea7b3906044016020604051808303816000875af1158015615896573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906158ba919061c87f565b506023546021546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801561590c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615930919061ca5f565b602480546027546040516370a0823160e01b81526001600160a01b0391821660048201529394506000939116916370a082319101602060405180830381865afa158015615981573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906159a5919061ca5f565b905060006040516020016159dc907f68656c6c6f000000000000000000000000000000000000000000000000000000815260050190565b60408051808303601f19018152908290526021546381bad6f360e01b8352600160048401819052602484018190526044840181905260648401526001600160a01b031660848301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015615a5f57600080fd5b505af1158015615a73573d6000803e3d6000fd5b505060235460265460405160609190911b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208201526001600160a01b0390911692507f1dafa057cc5c3bccb5ad974129a2bccd3c74002d9dfd7062404ba9523b18d6ae915060340160408051601f1981840301815290829052615afc918890869061ccdd565b60405180910390a26021546026546040805160609290921b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208301528051808303601401815260348301918290526023547fe609055e000000000000000000000000000000000000000000000000000000009092526001600160a01b039384169363e609055e93615b9b9391909116908990879060380161cae2565b600060405180830381600087803b158015615bb557600080fd5b505af1158015615bc9573d6000803e3d6000fd5b505050506107bb8484615bdc919061cd08565b6023546021546040516370a0823160e01b81526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa158015615c28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612154919061ca5f565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015611a7f578382906000526020600020018054615c8f9061c8d0565b80601f0160208091040260200160405190810160405280929190818152602001828054615cbb9061c8d0565b8015615d085780601f10615cdd57610100808354040283529160200191615d08565b820191906000526020600020905b815481529060010190602001808311615ceb57829003601f168201915b505050505081526020019060010190615c70565b60085460009060ff1615615d34575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015615dc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615de9919061ca5f565b1415905090565b60285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015615e4957600080fd5b505af1158015615e5d573d6000803e3d6000fd5b5050602854604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250615f33919060040161c86c565b600060405180830381600087803b158015615f4d57600080fd5b505af1158015615f61573d6000803e3d6000fd5b50505050602160009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b158015615fb557600080fd5b505af1158015615fc9573d6000803e3d6000fd5b505060285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561602657600080fd5b505af115801561603a573d6000803e3d6000fd5b5050602854604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250616110919060040161c86c565b600060405180830381600087803b15801561612a57600080fd5b505af115801561613e573d6000803e3d6000fd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561619257600080fd5b505af11580156161a6573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561620357600080fd5b505af1158015616217573d6000803e3d6000fd5b50505050602160009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561626b57600080fd5b505af115801561627f573d6000803e3d6000fd5b5050602354602654604051620186a0602482018190526001600160a01b0393841660448301529290911660648201529092506000915060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a20000000000000000000000000000000000000000000000000000000017905251630618f58760e51b81527fd93c0665000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561636857600080fd5b505af115801561637c573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156163d957600080fd5b505af11580156163ed573d6000803e3d6000fd5b50506021546020546023546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f2945061644a9392831692909116908790879060040161ca28565b600060405180830381600087803b15801561646457600080fd5b505af1158015616478573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156164d557600080fd5b505af11580156164e9573d6000803e3d6000fd5b50505050602160009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561653d57600080fd5b505af1158015616551573d6000803e3d6000fd5b50506023546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a08231906024015b602060405180830381865afa1580156165a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906165c9919061ca5f565b90506165d6816000617c00565b6023546021546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015616627573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061664b919061ca5f565b601f54604080516001600160a01b0361010090930483166024820152604480820189905282518083039091018152606490910182526020810180517fa9059cbb000000000000000000000000000000000000000000000000000000006001600160e01b0390911617905260235491517ff30c7ba300000000000000000000000000000000000000000000000000000000815293945092737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba39261671192911690600090869060040161ca78565b600060405180830381600087803b15801561672b57600080fd5b505af115801561673f573d6000803e3d6000fd5b50506020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156167b857600080fd5b505af11580156167cc573d6000803e3d6000fd5b5050601f54602354602654604080516101009094046001600160a01b039081168552602085018c9052928316908401521660608201527f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609250608001905060405180910390a16021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156168a757600080fd5b505af11580156168bb573d6000803e3d6000fd5b50506023546020546040516001600160a01b039283169450911691507f6478cbb6e28c0823c691dfd74c01c985634faddd4c401b990fe4ec26277ea8d590616906908990899061ccc4565b60405180910390a360275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561696757600080fd5b505af115801561697b573d6000803e3d6000fd5b50506021546020546023546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f294506169d89392831692909116908a908a9060040161ca28565b600060405180830381600087803b1580156169f257600080fd5b505af1158015616a06573d6000803e3d6000fd5b50506023546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401613c5c565b60235460265460408051620186a060248083018290526001600160a01b039586166044840181905295909416606480840182905284518085039091018152608490930184526020830180516001600160e01b03167f357fc5a20000000000000000000000000000000000000000000000000000000017905292516370a0823160e01b815260048101939093529390926000926370a082319101616588565b6060601580548060200260200160405190810160405280929190818152602001828054801561165b576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161163d575050505050905090565b600080604051602001616b75907f68656c6c6f000000000000000000000000000000000000000000000000000000815260050190565b60408051808303601f190181529082905260275463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015616bdc57600080fd5b505af1158015616bf0573d6000803e3d6000fd5b5050604051630618f58760e51b81527f951e19ed000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401614ffe565b60405163ca669fa760e01b81526101236004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015616c9957600080fd5b505af1158015616cad573d6000803e3d6000fd5b50506040805161012360248201527f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a60448083019190915282518083039091018152606490910182526020810180516001600160e01b03167fe2517d3f0000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250616d79919060040161c86c565b600060405180830381600087803b158015616d9357600080fd5b505af1158015616da7573d6000803e3d6000fd5b5050602154602480546040517f9a5904270000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015292169350639a59042792500161078d565b602354602654604051600160248201526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a20000000000000000000000000000000000000000000000000000000017905260275490517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b158015616edb57600080fd5b505af1158015616eef573d6000803e3d6000fd5b50506021546023546040517f9a5904270000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015291169250639a5904279150602401600060405180830381600087803b158015616f5557600080fd5b505af1158015616f69573d6000803e3d6000fd5b5050604051630618f58760e51b81527f584a7938000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015616fd957600080fd5b505af1158015616fed573d6000803e3d6000fd5b50506021546020546023546040517f99a3c3560000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506399a3c356945061473c939283169290911690600190879060299060040161cc6f565b6021546023546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600092919091169063d936547e90602401602060405180830381865afa1580156170b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906170dc919061c87f565b90506170e9600182617b7e565b6021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561715e57600080fd5b505af1158015617172573d6000803e3d6000fd5b50506023546040516001600160a01b0390911692507f51085ddf9ebdded84b76e829eb58c4078e4b5bdf97d9a94723f336039da467919150600090a260255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561720757600080fd5b505af115801561721b573d6000803e3d6000fd5b50506021546023546040517f9a5904270000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015291169250639a5904279150602401600060405180830381600087803b15801561728157600080fd5b505af1158015617295573d6000803e3d6000fd5b50506021546023546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063d936547e9150602401602060405180830381865afa1580156172fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190617322919061c87f565b9050611943600082617b7e565b602354602654604051620186a0602482018190526001600160a01b03938416604483015292909116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167fc51316910000000000000000000000000000000000000000000000000000000017905260235460265491516370a0823160e01b81526001600160a01b0392831660048201529293506000929116906370a0823190602401602060405180830381865afa1580156173f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061741a919061ca5f565b9050617427816000617c00565b6023546021546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015617478573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061749c919061ca5f565b601f54604080516001600160a01b0361010090930483166024820152604480820189905282518083039091018152606490910182526020810180517fa9059cbb000000000000000000000000000000000000000000000000000000006001600160e01b0390911617905260235491517ff30c7ba300000000000000000000000000000000000000000000000000000000815293945092737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba39261756292911690600090869060040161ca78565b600060405180830381600087803b15801561757c57600080fd5b505af1158015617590573d6000803e3d6000fd5b50506020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561760957600080fd5b505af115801561761d573d6000803e3d6000fd5b5050601f547f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60925061010090046001600160a01b0316905061766060028861cd1b565b602354602654604080516001600160a01b03958616815260208101949094529184168383015292909216606082015290519081900360800190a16021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561770f57600080fd5b505af1158015617723573d6000803e3d6000fd5b50506023546020546040516001600160a01b039283169450911691507f6478cbb6e28c0823c691dfd74c01c985634faddd4c401b990fe4ec26277ea8d59061776e908990899061ccc4565b60405180910390a360275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156177cf57600080fd5b505af11580156177e3573d6000803e3d6000fd5b50506021546020546023546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f294506178409392831692909116908a908a9060040161ca28565b600060405180830381600087803b15801561785a57600080fd5b505af115801561786e573d6000803e3d6000fd5b50506023546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156178c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906178e5919061ca5f565b90506178f68161215460028961cd1b565b6023546021546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015617947573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061796b919061ca5f565b9050613d2e8161797c60028a61cd1b565b612154908761cacf565b60255460405163ca669fa760e01b81526001600160a01b039091166004820152620186a090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156179e457600080fd5b505af11580156179f8573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250617ace919060040161c86c565b600060405180830381600087803b158015617ae857600080fd5b505af1158015617afc573d6000803e3d6000fd5b50506021546026546023546040517fd9caed120000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082166024820152604481018690529116925063d9caed12915060640161260b565b6000617b6961c405565b617b74848483617d9a565b9150505b92915050565b6040517ff7fe347700000000000000000000000000000000000000000000000000000000815282151560048201528115156024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f7fe3477906044015b60006040518083038186803b158015617bec57600080fd5b505afa1580156114bd573d6000803e3d6000fd5b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c5490604401617bd4565b6040517fa59828850000000000000000000000000000000000000000000000000000000081528115156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063a5982885906024015b60006040518083038186803b158015617cbe57600080fd5b505afa158015612639573d6000803e3d6000fd5b6040517f0c9fd5810000000000000000000000000000000000000000000000000000000081528115156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90630c9fd58190602401617ca6565b6040517f515361f60000000000000000000000000000000000000000000000000000000081526001600160a01b03808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f690604401617bd4565b617d8d61c405565b6126398585858486617e15565b600080617da78584617f15565b9050617e0a6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001617df592919061cd56565b60405160208183030381529060405285617f21565b9150505b9392505050565b6040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201528190737109709ecfa91a80626ff3989d68f67f5b1dd12d9081906306447d5690602401600060405180830381600087803b158015617e8757600080fd5b505af1925050508015617e98575060015b617ead57617ea887878787617f4f565b6121de565b617eb987878787617f4f565b806001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015617ef457600080fd5b505af1158015617f08573d6000803e3d6000fd5b5050505050505050505050565b6000617e0e8383617f68565b60c08101515160009015617f4557617f3e84848460c00151617f83565b9050617e0e565b617f3e8484618129565b6000617f5b8483618214565b9050612639858285618220565b6000617f7483836185ea565b617e0e83836020015184617f21565b600080617f8e6185fa565b90506000617f9c86836186cd565b90506000617fb38260600151836020015185618b73565b90506000617fc383838989618d85565b90506000617fd082619c02565b602081015181519192509060030b1561804357898260400151604051602001617ffa92919061cd78565b60408051601f19818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261803a9160040161c86c565b60405180910390fd5b60006180866040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001619dd1565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d906180d990849060040161c86c565b602060405180830381865afa1580156180f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061811a919061cb1c565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc9259061817e90879060040161c86c565b600060405180830381865afa15801561819b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526181c3919081019061ceb2565b905060006181f182856040516020016181dd92919061cee7565b604051602081830303815290604052619fd1565b90506001600160a01b038116617b74578484604051602001617ffa92919061cf16565b6000617f748383619fe4565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201527fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61036024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90600090829063667f9d7090604401602060405180830381865afa1580156182bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906182e0919061ca5f565b9050806184875760006182f286619ff0565b604080518082018252600581527f352e302e300000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061837d905b6040805180820182526000808252602091820152815180830190925284518252808501908201529061a0d3565b80618389575060008451115b1561840c576040517f4f1ef2860000000000000000000000000000000000000000000000000000000081526001600160a01b03871690634f1ef286906183d5908890889060040161cd56565b600060405180830381600087803b1580156183ef57600080fd5b505af1158015618403573d6000803e3d6000fd5b50505050618481565b6040517f3659cfe60000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152871690633659cfe690602401600060405180830381600087803b15801561846857600080fd5b505af115801561847c573d6000803e3d6000fd5b505050505b50612639565b80600061849382619ff0565b604080518082018252600581527f352e302e30000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506184f590618350565b80618501575060008551115b15618586576040517f9623609d0000000000000000000000000000000000000000000000000000000081526001600160a01b03831690639623609d9061854f908a908a908a9060040161cfc1565b600060405180830381600087803b15801561856957600080fd5b505af115801561857d573d6000803e3d6000fd5b505050506121de565b6040517f99a88ec40000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015287811660248301528316906399a88ec490604401600060405180830381600087803b158015617ef457600080fd5b6185f68282600061a0e7565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c9061868190849060040161cff2565b600060405180830381865afa15801561869e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526186c6919081019061d039565b9250505090565b6186ff6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d905061874a6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6187538561a1ea565b602082015260006187638661a5cf565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa1580156187a5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526187cd919081019061d039565b868385602001516040516020016187e7949392919061d082565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb119061883f90859060040161c86c565b600060405180830381865afa15801561885c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052618884919081019061d039565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f6906188cc90849060040161d186565b602060405180830381865afa1580156188e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061890d919061c87f565b6189225781604051602001617ffa919061d1d8565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061896790849060040161d26a565b600060405180830381865afa158015618984573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526189ac919081019061d039565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f6906189f390849060040161d2bc565b602060405180830381865afa158015618a10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190618a34919061c87f565b15618ac9576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890618a7e90849060040161d2bc565b600060405180830381865afa158015618a9b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052618ac3919081019061d039565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001618aee919061d30e565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401618b1a92919061d37a565b600060405180830381865afa158015618b37573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052618b5f919081019061d039565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081618b8f5790505090506040518060400160405280600481526020017f677265700000000000000000000000000000000000000000000000000000000081525081600081518110618bef57618bef61d39f565b60200260200101819052506040518060400160405280600381526020017f2d726c000000000000000000000000000000000000000000000000000000000081525081600181518110618c4357618c4361d39f565b602002602001018190525084604051602001618c5f919061d3ce565b60405160208183030381529060405281600281518110618c8157618c8161d39f565b602002602001018190525082604051602001618c9d919061d43a565b60405160208183030381529060405281600381518110618cbf57618cbf61d39f565b60200260200101819052506000618cd582619c02565b602080820151604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000008185019081528251808401845260008082529086015282518084019093529051825292810192909252919250618d66906040805180820182526000808252602091820152815180830190925284518252808501908201529061a852565b618d7b5785604051602001617ffa919061d47b565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015618dd5565b511590565b618f4957826020015115618e91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a40161803a565b8260c0015115618f49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a40161803a565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081618f6257905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280618fbd9061d50c565b935060ff1681518110618fd257618fd261d39f565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001619023919061d52b565b60405160208183030381529060405282828061903e9061d50c565b935060ff16815181106190535761905361d39f565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806190a09061d50c565b935060ff16815181106190b5576190b561d39f565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806191029061d50c565b935060ff16815181106191175761911761d39f565b602002602001018190525087602001518282806191339061d50c565b935060ff16815181106191485761914861d39f565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806191959061d50c565b935060ff16815181106191aa576191aa61d39f565b6020908102919091010152875182826191c28161d50c565b935060ff16815181106191d7576191d761d39f565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806192249061d50c565b935060ff16815181106192395761923961d39f565b602002602001018190525061924d4661a8b3565b82826192588161d50c565b935060ff168151811061926d5761926d61d39f565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c6500000000000000000000000000000000008152508282806192ba9061d50c565b935060ff16815181106192cf576192cf61d39f565b6020026020010181905250868282806192e79061d50c565b935060ff16815181106192fc576192fc61d39f565b60209081029190910101528551156194235760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261934d8161d50c565b935060ff16815181106193625761936261d39f565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d906193b290899060040161c86c565b600060405180830381865afa1580156193cf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526193f7919081019061d039565b82826194028161d50c565b935060ff16815181106194175761941761d39f565b60200260200101819052505b8460200151156194f35760408051808201909152601281527f2d2d766572696679536f75726365436f646500000000000000000000000000006020820152828261946c8161d50c565b935060ff16815181106194815761948161d39f565b60200260200101819052506040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152508282806194ce9061d50c565b935060ff16815181106194e3576194e361d39f565b60200260200101819052506196ba565b61952b618dd08660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6195be5760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828261956e8161d50c565b935060ff16815181106195835761958361d39f565b60200260200101819052508460a001516040516020016195a3919061d3ce565b6040516020818303038152906040528282806194ce9061d50c565b8460c001511580156196015750604080890151815180830183526000808252602091820152825180840190935281518352908101908201526195ff90511590565b155b156196ba5760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826196458161d50c565b935060ff168151811061965a5761965a61d39f565b602002602001018190525061966e8861a953565b60405160200161967e919061d3ce565b6040516020818303038152906040528282806196999061d50c565b935060ff16815181106196ae576196ae61d39f565b60200260200101819052505b604080860151815180830183526000808252602091820152825180840190935281518352908101908201526196ee90511590565b6197835760408051808201909152600b81527f2d2d72656c617965724964000000000000000000000000000000000000000000602082015282826197318161d50c565b935060ff16815181106197465761974661d39f565b602002602001018190525084604001518282806197629061d50c565b935060ff16815181106197775761977761d39f565b60200260200101819052505b6060850151156198a45760408051808201909152600681527f2d2d73616c740000000000000000000000000000000000000000000000000000602082015282826197cc8161d50c565b935060ff16815181106197e1576197e161d39f565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015619850573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052619878919081019061d039565b82826198838161d50c565b935060ff16815181106198985761989861d39f565b60200260200101819052505b60e0850151511561994b5760408051808201909152600a81527f2d2d6761734c696d697400000000000000000000000000000000000000000000602082015282826198ee8161d50c565b935060ff16815181106199035761990361d39f565b602002602001018190525061991f8560e001516000015161a8b3565b828261992a8161d50c565b935060ff168151811061993f5761993f61d39f565b60200260200101819052505b60e085015160200151156199f55760408051808201909152600a81527f2d2d676173507269636500000000000000000000000000000000000000000000602082015282826199988161d50c565b935060ff16815181106199ad576199ad61d39f565b60200260200101819052506199c98560e001516020015161a8b3565b82826199d48161d50c565b935060ff16815181106199e9576199e961d39f565b60200260200101819052505b60e08501516040015115619a9f5760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282619a428161d50c565b935060ff1681518110619a5757619a5761d39f565b6020026020010181905250619a738560e001516040015161a8b3565b8282619a7e8161d50c565b935060ff1681518110619a9357619a9361d39f565b60200260200101819052505b60e08501516060015115619b495760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282619aec8161d50c565b935060ff1681518110619b0157619b0161d39f565b6020026020010181905250619b1d8560e001516060015161a8b3565b8282619b288161d50c565b935060ff1681518110619b3d57619b3d61d39f565b60200260200101819052505b60008160ff1667ffffffffffffffff811115619b6757619b6761c8a1565b604051908082528060200260200182016040528015619b9a57816020015b6060815260200190600190039081619b855790505b50905060005b8260ff168160ff161015619bf357838160ff1681518110619bc357619bc361d39f565b6020026020010151828260ff1681518110619be057619be061d39f565b6020908102919091010152600101619ba0565b5093505050505b949350505050565b619c296040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c91619caf9186910161d596565b600060405180830381865afa158015619ccc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052619cf4919081019061d039565b90506000619d02868361b442565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401619d32919061c75e565b6000604051808303816000875af1158015619d51573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052619d79919081019061d5dd565b805190915060030b15801590619d925750602081015151155b8015619da15750604081015151155b15618d7b5781600081518110619db957619db961d39f565b6020026020010151604051602001617ffa919061d693565b60606000619e068560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150619e3d9082905b9061b597565b15619f9a576000619eba82619eb484619eae619e808a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b9061b5be565b9061b620565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150619f1e90829061b597565b15619f8857604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152619f85905b829061b6a5565b90505b619f918161b6cb565b92505050617e0e565b8215619fb3578484604051602001617ffa92919061d87f565b5050604080516020810190915260008152617e0e565b509392505050565b6000808251602084016000f09392505050565b6185f68282600161a0e7565b60408051600481526024810182526020810180516001600160e01b03167fad3cb1cc00000000000000000000000000000000000000000000000000000000179052905160609160009182916001600160a01b0386169161a050919061d926565b600060405180830381855afa9150503d806000811461a08b576040519150601f19603f3d011682016040523d82523d6000602084013e61a090565b606091505b509150915081801561a0a3575060208151115b1561a0bc5780806020019051810190619bfa919061d039565b505060408051602081019091526000815292915050565b600061a0df838361b734565b159392505050565b8160a001511561a0f657505050565b600061a10384848461b80f565b9050600061a11082619c02565b602081015181519192509060030b15801561a1ac5750604080518082018252600781527f53554343455353000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261a1ac90604080518082018252600080825260209182015281518083019092528451825280850190820152619e37565b1561a1b957505050505050565b6040820151511561a1d9578160400151604051602001617ffa919061d942565b80604051602001617ffa919061d9a0565b6060600061a21f8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061a284905b829061a852565b1561a2f357604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617e0e9061a2ee90839061bdaa565b61b6cb565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261a355905b829061be34565b60010361a42257604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261a3bb90619f7e565b50604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617e0e9061a2ee905b839061b6a5565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261a4819061a27d565b1561a5b857604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061a4e990839061bece565b90506000816001835161a4fc919061cacf565b8151811061a50c5761a50c61d39f565b6020026020010151905061a5af61a2ee61a5826040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529061bdaa565b95945050505050565b82604051602001617ffa919061da0b565b50919050565b6060600061a6048360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061a6669061a27d565b1561a67457617e0e8161b6cb565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261a6d39061a34e565b60010361a73d57604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617e0e9061a2ee9061a41b565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261a79c9061a27d565b1561a5b857604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061a80490839061bece565b905060018151111561a84057806002825161a81f919061cacf565b8151811061a82f5761a82f61d39f565b602002602001015192505050919050565b5082604051602001617ffa919061da0b565b80518251600091111561a86757506000617b78565b8151835160208501516000929161a87d9161cd08565b61a887919061cacf565b90508260200151810361a89e576001915050617b78565b82516020840151819020912014905092915050565b6060600061a8c08361bf73565b600101905060008167ffffffffffffffff81111561a8e05761a8e061c8a1565b6040519080825280601f01601f19166020018201604052801561a90a576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461a91457509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e534544000000000000000000000000000000000000000000008184019081528551808701875283815284019290925284518086019095525184529083015260609161a9df905b829061a0d3565b1561aa1f57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261aa7e9061a9d8565b1561aabe57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d495400000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261ab1d9061a9d8565b1561ab5d57505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261abbc9061a9d8565b8061ac215750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261ac219061a9d8565b1561ac6157505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261acc09061a9d8565b8061ad255750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261ad259061a9d8565b1561ad6557505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261adc49061a9d8565b8061ae295750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261ae299061a9d8565b1561ae6957505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261aec89061a9d8565b8061af2d5750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261af2d9061a9d8565b1561af6d57505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261afcc9061a9d8565b1561b00c57505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261b06b9061a9d8565b1561b0ab57505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261b10a9061a9d8565b1561b14a57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261b1a99061a9d8565b1561b1e957505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261b2489061a9d8565b1561b28857505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261b2e79061a9d8565b8061b34c5750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261b34c9061a9d8565b1561b38c57505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261b3eb9061a9d8565b1561b42b57505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151617ffa929060200161dae9565b60608060005b845181101561b4cd578185828151811061b4645761b46461d39f565b602002602001015160405160200161b47d92919061cee7565b60405160208183030381529060405291506001855161b49c919061cacf565b811461b4c5578160405160200161b4b3919061dc52565b60405160208183030381529060405291505b60010161b448565b5060408051600380825260808201909252600091816020015b606081526020019060019003908161b4e6579050509050838160008151811061b5115761b51161d39f565b60200260200101819052506040518060400160405280600281526020017f2d630000000000000000000000000000000000000000000000000000000000008152508160018151811061b5655761b56561d39f565b6020026020010181905250818160028151811061b5845761b58461d39f565b6020908102919091010152949350505050565b602080830151835183519284015160009361b5b5929184919061c055565b14159392505050565b6040805180820190915260008082526020820152600061b5f0846000015185602001518560000151866020015161c166565b905083602001518161b602919061cacf565b8451859061b61190839061cacf565b90525060208401525090919050565b604080518082019091526000808252602082015281518351101561b645575081617b78565b602080830151908401516001911461b66c5750815160208481015190840151829020919020145b801561b69d5782518451859061b68390839061cacf565b905250825160208501805161b69990839061cd08565b9052505b509192915050565b604080518082019091526000808252602082015261b6c483838361c286565b5092915050565b60606000826000015167ffffffffffffffff81111561b6ec5761b6ec61c8a1565b6040519080825280601f01601f19166020018201604052801561b716576020820181803683370190505b509050600060208201905061b6c4818560200151866000015161c331565b815181516000919081111561b747575081515b6020808501519084015160005b8381101561b800578251825180821461b7d057600019602087101561b7af5760018461b78189602061cacf565b61b78b919061cd08565b61b79690600861dc93565b61b7a190600261dd91565b61b7ab919061cacf565b1990505b818116838216818103911461b7cd579750617b789650505050505050565b50505b61b7db60208661cd08565b945061b7e860208561cd08565b9350505060208161b7f9919061cd08565b905061b754565b5084518651618d7b919061dd9d565b6060600061b81b6185fa565b6040805160ff808252612000820190925291925060009190816020015b606081526020019060019003908161b83857905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061b8939061d50c565b935060ff168151811061b8a85761b8a861d39f565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e330000000000000000000000000000000000000000000000000081525060405160200161b8f9919061ddbd565b60405160208183030381529060405282828061b9149061d50c565b935060ff168151811061b9295761b92961d39f565b60200260200101819052506040518060400160405280600881526020017f76616c696461746500000000000000000000000000000000000000000000000081525082828061b9769061d50c565b935060ff168151811061b98b5761b98b61d39f565b60200260200101819052508260405160200161b9a7919061d43a565b60405160208183030381529060405282828061b9c29061d50c565b935060ff168151811061b9d75761b9d761d39f565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e74726163740000000000000000000000000000000000000000000081525082828061ba249061d50c565b935060ff168151811061ba395761ba3961d39f565b602002602001018190525061ba4e878461c3ab565b828261ba598161d50c565b935060ff168151811061ba6e5761ba6e61d39f565b60209081029190910101528551511561bb1a5760408051808201909152600b81527f2d2d7265666572656e63650000000000000000000000000000000000000000006020820152828261bac08161d50c565b935060ff168151811061bad55761bad561d39f565b602002602001018190525061baee86600001518461c3ab565b828261baf98161d50c565b935060ff168151811061bb0e5761bb0e61d39f565b60200260200101819052505b85608001511561bb885760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261bb638161d50c565b935060ff168151811061bb785761bb7861d39f565b602002602001018190525061bbee565b841561bbee5760408051808201909152601281527f2d2d726571756972655265666572656e636500000000000000000000000000006020820152828261bbcd8161d50c565b935060ff168151811061bbe25761bbe261d39f565b60200260200101819052505b6040860151511561bc8a5760408051808201909152600d81527f2d2d756e73616665416c6c6f77000000000000000000000000000000000000006020820152828261bc388161d50c565b935060ff168151811061bc4d5761bc4d61d39f565b6020026020010181905250856040015182828061bc699061d50c565b935060ff168151811061bc7e5761bc7e61d39f565b60200260200101819052505b85606001511561bcf45760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261bcd38161d50c565b935060ff168151811061bce85761bce861d39f565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561bd125761bd1261c8a1565b60405190808252806020026020018201604052801561bd4557816020015b606081526020019060019003908161bd305790505b50905060005b8260ff168160ff16101561bd9e57838160ff168151811061bd6e5761bd6e61d39f565b6020026020010151828260ff168151811061bd8b5761bd8b61d39f565b602090810291909101015260010161bd4b565b50979650505050505050565b604080518082019091526000808252602082015281518351101561bdcf575081617b78565b8151835160208501516000929161bde59161cd08565b61bdef919061cacf565b6020840151909150600190821461be10575082516020840151819020908220145b801561be2b5783518551869061be2790839061cacf565b9052505b50929392505050565b600080826000015161be58856000015186602001518660000151876020015161c166565b61be62919061cd08565b90505b8351602085015161be76919061cd08565b811161b6c4578161be868161de02565b925050826000015161bebd85602001518361bea1919061cacf565b865161bead919061cacf565b838660000151876020015161c166565b61bec7919061cd08565b905061be65565b6060600061bedc848461be34565b61bee790600161cd08565b67ffffffffffffffff81111561beff5761beff61c8a1565b60405190808252806020026020018201604052801561bf3257816020015b606081526020019060019003908161bf1d5790505b50905060005b8151811015619fc95761bf4e61a2ee868661b6a5565b82828151811061bf605761bf6061d39f565b602090810291909101015260010161bf38565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061bfbc577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831061bfe8576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061c00657662386f26fc10000830492506010015b6305f5e100831061c01e576305f5e100830492506008015b612710831061c03257612710830492506004015b6064831061c044576064830492506002015b600a8310617b785760010192915050565b60008085841161c15c576020841161c108576000841561c0a057600161c07c86602061cacf565b61c08790600861dc93565b61c09290600261dd91565b61c09c919061cacf565b1990505b835181168561c0af898961cd08565b61c0b9919061cacf565b805190935082165b81811461c0f35787841161c0db5787945050505050619bfa565b8361c0e58161de1c565b94505082845116905061c0c1565b61c0fd878561cd08565b945050505050619bfa565b83832061c115858861cacf565b61c11f908761cd08565b91505b85821061c15a5784822080820361c1475761c13d868461cd08565b9350505050619bfa565b61c15260018461cacf565b92505061c122565b505b5092949350505050565b6000838186851161c271576020851161c220576000851561c1b257600161c18e87602061cacf565b61c19990600861dc93565b61c1a490600261dd91565b61c1ae919061cacf565b1990505b8451811660008761c1c38b8b61cd08565b61c1cd919061cacf565b855190915083165b82811461c2125781861061c1fa5761c1ed8b8b61cd08565b9650505050505050619bfa565b8561c2048161de02565b96505083865116905061c1d5565b859650505050505050619bfa565b508383206000905b61c232868961cacf565b821161c26f5785832080820361c24e5783945050505050619bfa565b61c25960018561cd08565b935050818061c2679061de02565b92505061c228565b505b61c27b878761cd08565b979650505050505050565b6040805180820190915260008082526020820152600061c2b8856000015186602001518660000151876020015161c166565b60208087018051918601919091525190915061c2d4908261cacf565b83528451602086015161c2e7919061cd08565b810361c2f6576000855261c328565b8351835161c304919061cd08565b8551869061c31390839061cacf565b905250835161c322908261cd08565b60208601525b50909392505050565b6020811061c369578151835261c34860208461cd08565b925061c35560208361cd08565b915061c36260208261cacf565b905061c331565b600019811561c39857600161c37f83602061cacf565b61c38b9061010061dd91565b61c395919061cacf565b90505b9151835183169219169190911790915250565b6060600061c3b984846186cd565b805160208083015160405193945061c3d39390910161de33565b60405160208183030381529060405291505092915050565b610c9f8061de8c83390190565b610efa8061eb2b83390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161c44861c44d565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161c4486040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b8181101561c4ff5783516001600160a01b031683526020938401939092019160010161c4d8565b509095945050505050565b60005b8381101561c52557818101518382015260200161c50d565b50506000910152565b6000815180845261c54681602086016020860161c50a565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561c656577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b8181101561c63c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261c62684865161c52e565b602095860195909450929092019160010161c5ec565b50919750505060209485019492909201915060010161c582565b50929695505050505050565b600081518084526020840193506020830160005b8281101561c6b65781517fffffffff000000000000000000000000000000000000000000000000000000001686526020958601959091019060010161c676565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561c656577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516040875261c72c604088018261c52e565b905060208201519150868103602088015261c747818361c662565b96505050602093840193919091019060010161c6e8565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561c656577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845261c7c085835161c52e565b9450602093840193919091019060010161c786565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561c656577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b038151168652602081015190506040602087015261c856604087018261c662565b955050602093840193919091019060010161c7fd565b602081526000617e0e602083018461c52e565b60006020828403121561c89157600080fd5b81518015158114617e0e57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600181811c9082168061c8e457607f821691505b60208210810361a5c9577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b601f82111561c96457806000526020600020601f840160051c8101602085101561c9445750805b601f840160051c820191505b81811015612639576000815560010161c950565b505050565b815167ffffffffffffffff81111561c9835761c98361c8a1565b61c9978161c991845461c8d0565b8461c91d565b6020601f82116001811461c9cb576000831561c9b35750848201515b600019600385901b1c1916600184901b178455612639565b600084815260208120601f198516915b8281101561c9fb578785015182556020948501946001909201910161c9db565b508482101561ca195786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6001600160a01b03851681526001600160a01b0384166020820152826040820152608060608201526000618d7b608083018461c52e565b60006020828403121561ca7157600080fd5b5051919050565b6001600160a01b038416815282602082015260606040820152600061a5af606083018461c52e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115617b7857617b7861caa0565b60808152600061caf5608083018761c52e565b6001600160a01b0386166020840152846040840152828103606084015261c27b818561c52e565b60006020828403121561cb2e57600080fd5b81516001600160a01b0381168114617e0e57600080fd5b6001600160a01b0381541682526001600160a01b03600182015416602083015260028101546040830152600060038201608060608501526000815461cb898161c8d0565b806080880152600182166000811461cba8576001811461cbe25761cc16565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831660a089015260a082151560051b890101935061cc16565b84600052602060002060005b8381101561cc0d5781548a820160a0015260019091019060200161cbee565b890160a0019450505b50919695505050505050565b6001600160a01b0383168152604060208201526000619bfa604083018461cb45565b83815260606020820152600061cc5d606083018561c52e565b8281036040840152618d7b818561cb45565b6001600160a01b03861681526001600160a01b038516602082015283604082015260a06060820152600061cca660a083018561c52e565b828103608084015261ccb8818561cb45565b98975050505050505050565b828152604060208201526000619bfa604083018461c52e565b60608152600061ccf0606083018661c52e565b8460208401528281036040840152618d7b818561c52e565b80820180821115617b7857617b7861caa0565b60008261cd51577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6001600160a01b0383168152604060208201526000619bfa604083018461c52e565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161cdb081601a85016020880161c50a565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161cded81601c84016020880161c50a565b01601c01949350505050565b6040516060810167ffffffffffffffff8111828210171561ce1c5761ce1c61c8a1565b60405290565b60008067ffffffffffffffff84111561ce3d5761ce3d61c8a1565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561ce6c5761ce6c61c8a1565b60405283815290508082840185101561ce8457600080fd5b619fc984602083018561c50a565b600082601f83011261cea357600080fd5b617e0e8383516020850161ce22565b60006020828403121561cec457600080fd5b815167ffffffffffffffff81111561cedb57600080fd5b617b748482850161ce92565b6000835161cef981846020880161c50a565b83519083019061cf0d81836020880161c50a565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161cf4e81601a85016020880161c50a565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161cf8b81603384016020880161c50a565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b6001600160a01b03841681526001600160a01b038316602082015260606040820152600061a5af606083018461c52e565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000617e0e608083018461c52e565b60006020828403121561d04b57600080fd5b815167ffffffffffffffff81111561d06257600080fd5b8201601f8101841361d07357600080fd5b617b748482516020840161ce22565b6000855161d094818460208a0161c50a565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161d0ce816001840160208a0161c50a565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161d10c81600284016020890161c50a565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161d14e81600284016020880161c50a565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061d199604083018461c52e565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161d21081601f85016020870161c50a565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061d27d604083018461c52e565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061d2cf604083018461c52e565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161d34681601485016020870161c50a565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061d38d604083018561c52e565b8281036020840152617e0a818561c52e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161d40681600185016020870161c50a565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161d44c81846020870161c50a565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161d4ff81604b85016020870161c50a565b91909101604b0192915050565b600060ff821660ff810361d5225761d52261caa0565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161d58981602985016020870161c50a565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000617e0e608083018461c52e565b60006020828403121561d5ef57600080fd5b815167ffffffffffffffff81111561d60657600080fd5b82016060818503121561d61857600080fd5b61d62061cdf9565b81518060030b811461d63157600080fd5b8152602082015167ffffffffffffffff81111561d64d57600080fd5b61d6598682850161ce92565b602083015250604082015167ffffffffffffffff81111561d67957600080fd5b61d6858682850161ce92565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161d6f181602185016020870161c50a565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161d8dd81602185016020880161c50a565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161d91a81602e84016020880161c50a565b01602e01949350505050565b6000825161d93881846020870161c50a565b9190910192915050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161d58981602985016020870161c50a565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161d9fe81602285016020870161c50a565b9190910160220192915050565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161da4381600e85016020870161c50a565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161db2181601885016020880161c50a565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161db5e81601c84016020880161c50a565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161dc6481846020870161c50a565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b8082028115828204841417617b7857617b7861caa0565b6001815b600184111561dce55780850481111561dcc95761dcc961caa0565b600184161561dcd757908102905b60019390931c92800261dcae565b935093915050565b60008261dcfc57506001617b78565b8161dd0957506000617b78565b816001811461dd1f576002811461dd295761dd45565b6001915050617b78565b60ff84111561dd3a5761dd3a61caa0565b50506001821b617b78565b5060208310610133831016604e8410600b841016171561dd68575081810a617b78565b61dd75600019848461dcaa565b806000190482111561dd895761dd8961caa0565b029392505050565b6000617e0e838361dced565b818103600083128015838313168383128216171561b6c45761b6c461caa0565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161ddf581601c85016020870161c50a565b91909101601c0192915050565b6000600019820361de155761de1561caa0565b5060010190565b60008161de2b5761de2b61caa0565b506000190190565b6000835161de4581846020880161c50a565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161de7f81600184016020880161c50a565b0160010194935050505056fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220a043c41353215fce25ecb67a8a4f6f724aaa86dea8dcb0a6975bfb1f10ff3beb64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610ed6806100246000396000f3fe60806040526004361061006e5760003560e01c8063c51316911161004b578063c5131691146100d5578063c9028a36146100f5578063e04d4f9714610115578063f05b6abf1461012857005b8063357fc5a214610077578063676cc054146100975780636ed70169146100c057005b3661007557005b005b34801561008357600080fd5b50610075610092366004610724565b610148565b6100aa6100a5366004610760565b6101de565b6040516100b7919061085b565b60405180910390f35b3480156100cc57600080fd5b50610075610211565b3480156100e157600080fd5b506100756100f0366004610724565b610246565b34801561010157600080fd5b5061007561011036600461086e565b610321565b6100756101233660046109ce565b61035d565b34801561013457600080fd5b50610075610143366004610aba565b6103a1565b6101506103d6565b61017273ffffffffffffffffffffffffffffffffffffffff8316338386610419565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101d96001600055565b505050565b6040516060907f3658b46bab672c7672b69c2f0feda706eabdb7d2231421c96e9049b2db5e7eee90600090a19392505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b61024e6103d6565b600061025b600285610ba4565b905080600003610297576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102b973ffffffffffffffffffffffffffffffffffffffff8416338484610419565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101d96001600055565b7f689a5a5cb55e795ffe4cd8b419cd3bb0a3373974c54d25f64e734d7388b93e9b3382604051610352929190610c28565b60405180910390a150565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610394959493929190610d1a565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103949493929190610da4565b600260005403610412576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526104ae9085906104b4565b50505050565b60006104d673ffffffffffffffffffffffffffffffffffffffff84168361054f565b905080516000141580156104fb5750808060200190518101906104f99190610e67565b155b156101d9576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061055d83836000610564565b9392505050565b6060814710156105a2576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610546565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105cb9190610e84565b60006040518083038185875af1925050503d8060008114610608576040519150601f19603f3d011682016040523d82523d6000602084013e61060d565b606091505b509150915061061d868383610627565b9695505050505050565b60608261063c57610637826106b6565b61055d565b8151158015610660575073ffffffffffffffffffffffffffffffffffffffff84163b155b156106af576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610546565b508061055d565b8051156106c65780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff8116811461071f57600080fd5b919050565b60008060006060848603121561073957600080fd5b83359250610749602085016106fb565b9150610757604085016106fb565b90509250925092565b6000806000838503604081121561077657600080fd5b602081121561078457600080fd5b50839250602084013567ffffffffffffffff8111156107a257600080fd5b8401601f810186136107b357600080fd5b803567ffffffffffffffff8111156107ca57600080fd5b8660208284010111156107dc57600080fd5b939660209190910195509293505050565b60005b838110156108085781810151838201526020016107f0565b50506000910152565b600081518084526108298160208601602086016107ed565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061055d6020830184610811565b60006020828403121561088057600080fd5b813567ffffffffffffffff81111561089757600080fd5b82016080818503121561055d57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561091f5761091f6108a9565b604052919050565b600082601f83011261093857600080fd5b813567ffffffffffffffff811115610952576109526108a9565b61098360207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016108d8565b81815284602083860101111561099857600080fd5b816020850160208301376000918101602001919091529392505050565b80151581146106f857600080fd5b803561071f816109b5565b6000806000606084860312156109e357600080fd5b833567ffffffffffffffff8111156109fa57600080fd5b610a0686828701610927565b935050602084013591506040840135610a1e816109b5565b809150509250925092565b600067ffffffffffffffff821115610a4357610a436108a9565b5060051b60200190565b600082601f830112610a5e57600080fd5b8135610a71610a6c82610a29565b6108d8565b8082825260208201915060208360051b860101925085831115610a9357600080fd5b602085015b83811015610ab0578035835260209283019201610a98565b5095945050505050565b600080600060608486031215610acf57600080fd5b833567ffffffffffffffff811115610ae657600080fd5b8401601f81018613610af757600080fd5b8035610b05610a6c82610a29565b8082825260208201915060208360051b850101925088831115610b2757600080fd5b602084015b83811015610b6957803567ffffffffffffffff811115610b4b57600080fd5b610b5a8b602083890101610927565b84525060209283019201610b2c565b509550505050602084013567ffffffffffffffff811115610b8957600080fd5b610b9586828701610a4d565b925050610757604085016109c3565b600082610bda577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015273ffffffffffffffffffffffffffffffffffffffff610c66836106fb565b16604082015273ffffffffffffffffffffffffffffffffffffffff610c8d602084016106fb565b166060820152600080604084013590508060808401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610cd957600080fd5b830160208101903567ffffffffffffffff811115610cf657600080fd5b803603821315610d0557600080fd5b608060a085015261061d60c085018284610bdf565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610d4f60a0830186610811565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610d9a578151865260209586019590910190600101610d7c565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610e37577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610e22858351610811565b94506020938401939190910190600101610de8565b505050508281036040840152610e4d8186610d68565b915050610e5e606083018415159052565b95945050505050565b600060208284031215610e7957600080fd5b815161055d816109b5565b60008251610e968184602087016107ed565b919091019291505056fea2646970667358221220db940ec4fecaa3b11f71d6cf6ef0ac3141552c5e39d750c1e2295a761a9396ad64736f6c634300081a0033a2646970667358221220a4e93105143d3b2094cdaeeb6b1e696b80d1e3c45788b3026772e13dabf6845964736f6c634300081a0033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061f9ad8061003c6000396000f3fe608060405234801561001057600080fd5b50600436106103365760003560e01c806385f438c1116101b2578063b5508aa9116100f9578063eb1ce7f9116100a2578063fa2a70741161007c578063fa2a7074146105b0578063fa7626d4146105b8578063fb176c12146105c5578063fe8e5f1b146105cd57600080fd5b8063eb1ce7f914610598578063f0c8e7e0146105a0578063f4221f08146105a857600080fd5b8063cbd57e2f116100d3578063cbd57e2f14610561578063e20c9f7114610569578063e63ab1e91461057157600080fd5b8063b5508aa914610539578063ba414fa614610541578063c713f8271461055957600080fd5b8063a3f9d0e01161015b578063af298bb111610135578063af298bb114610521578063b0464fdc14610529578063b421ca701461053157600080fd5b8063a3f9d0e0146104ea578063a4943deb146104f2578063a783c789146104fa57600080fd5b80639918c1c21161018c5780639918c1c2146104d25780639fc7fd55146104da578063a217fddf146104e257600080fd5b806385f438c11461048e5780639158c623146104b5578063916a17c6146104bd57600080fd5b806349c783dd1161028157806366d9a9a01161022a57806371149c941161020457806371149c94146104615780637e91c50f1461046957806382c529921461047157806385226c811461047957600080fd5b806366d9a9a01461043c5780636a621854146104515780637099d6f81461045957600080fd5b806352ff59391161025b57806352ff5939146103d8578063570618e1146103e05780635d62c8601461041557600080fd5b806349c783dd146103c05780634df42da1146103c857806351ecdf3c146103d057600080fd5b80632ade3880116102e35780633e73ecb4116102bd5780633e73ecb4146103a85780633ee92923146103b05780633f7286f4146103b857600080fd5b80632ade3880146103835780632be6a162146103985780633e5e3c23146103a057600080fd5b80631779672f116103145780631779672f146103555780631ed7831c1461035d578063284cb9291461037b57600080fd5b8063070f2ad01461033b5780630a9254e4146103455780630eee72a91461034d575b600080fd5b6103436105d5565b005b6103436107c1565b610343611248565b6103436114c5565b610365611603565b604051610372919061c44e565b60405180910390f35b610343611665565b61038b611946565b604051610372919061c4ea565b610343611a88565b610365611c34565b610343611c94565b6103436121e7565b6103656122a3565b610343612303565b610343612640565b610343612798565b610343612956565b6104077f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a81565b604051908152602001610372565b6104077f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b610444613186565b604051610372919061c650565b6103436132f3565b6103436133ac565b61034361365a565b610343613e67565b610343613ff2565b610481614264565b604051610372919061c6ee565b6104077f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b610343614334565b6104c5614402565b604051610372919061c765565b6103436144e8565b6103436147cc565b610407600081565b61034361489a565b610343614e79565b6104077f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b61034361508c565b6104c5615630565b610343615716565b610481615bdc565b610549615cac565b6040519015158152602001610372565b610343615d80565b6103436169d1565b610365616a6f565b6104077f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b610343616acf565b610343616bdb565b610343616d87565b610343616fde565b601f546105499060ff1681565b6103436172bf565b610343617916565b6027546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b15801561064757600080fd5b505af115801561065b573d6000803e3d6000fd5b5050602754604080516001600160a01b039092166024830152600060448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250610712919060040161c7fc565b600060405180830381600087803b15801561072c57600080fd5b505af1158015610740573d6000803e3d6000fd5b50506021546025546040517f950837aa0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063950837aa91506024015b600060405180830381600087803b1580156107a757600080fd5b505af11580156107bb573d6000803e3d6000fd5b50505050565b602580547fffffffffffffffffffffffff000000000000000000000000000000000000000090811630179091556026805482166112341790556027805482166156781790556028805490911661987617905560405161081f9061c37b565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f0801580156108a4573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516108e99061c37b565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f08015801561096d573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c000000000000000000000000000000000000602082015260275460255492519086169481019490945260448401929092529092166064820152600091610a4c916084015b60408051601f198184030181529190526020810180516001600160e01b03167fc0c53b8b00000000000000000000000000000000000000000000000000000000179052617aef565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0384811682029290921792839055604080518082018252601081527f4552433230437573746f64792e736f6c0000000000000000000000000000000060208201526027546025549251939095048416602484015293831660448301529091166064820152919250610aef91608401610a04565b602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383811691909117909155604080518082018252601a81527f5a657461436f6e6e6563746f724e6f6e4e61746976652e736f6c0000000000006020820152601f546024805460275460255495516101009094048716928401929092528516604483015284166064820152919092166084820152919250610be19160a40160408051601f198184030181529190526020810180516001600160e01b03167ff8c8765e00000000000000000000000000000000000000000000000000000000179052617aef565b602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038316179055604051909150610c239061c388565b604051809103906000f080158015610c3f573d6000803e3d6000fd5b50602080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556027546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b158015610ceb57600080fd5b505af1158015610cff573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610d7557600080fd5b505af1158015610d89573d6000803e3d6000fd5b5050601f546021546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261010090920416925063ae7a3a6f9150602401600060405180830381600087803b158015610df457600080fd5b505af1158015610e08573d6000803e3d6000fd5b5050601f546022546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526101009092041692506310188aef9150602401600060405180830381600087803b158015610e7357600080fd5b505af1158015610e87573d6000803e3d6000fd5b50506021546023546040517f9b19251a0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015291169250639b19251a9150602401600060405180830381600087803b158015610eed57600080fd5b505af1158015610f01573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610f6357600080fd5b505af1158015610f77573d6000803e3d6000fd5b50506023546025546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f42406024820152911692506340c10f199150604401600060405180830381600087803b158015610fe657600080fd5b505af1158015610ffa573d6000803e3d6000fd5b5050602480546025546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f4240938101939093521692506340c10f199150604401600060405180830381600087803b15801561106b57600080fd5b505af115801561107f573d6000803e3d6000fd5b50506023546021546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12060248201529116925063a9059cbb91506044016020604051808303816000875af11580156110f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611117919061c80f565b506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561119857600080fd5b505af11580156111ac573d6000803e3d6000fd5b5050604080516080810182526025546001600160a01b039081168252602354811660208084019182526001848601908152855191820190955260008152606084018190528351602980549185167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161781559251602a8054919095169116179092559251602b55909350909150602c906107bb908261c8f4565b602354602654604051620186a0602482018190526001600160a01b03938416604483015292909116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167fc513169100000000000000000000000000000000000000000000000000000000179052602554905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b15801561131a57600080fd5b505af115801561132e573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250611404919060040161c7fc565b600060405180830381600087803b15801561141e57600080fd5b505af1158015611432573d6000803e3d6000fd5b50506021546020546023546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f2945061148f9392831692909116908790879060040161c9b3565b600060405180830381600087803b1580156114a957600080fd5b505af11580156114bd573d6000803e3d6000fd5b505050505050565b6023546026546040516000602482018190526001600160a01b039384166044830152929091166064820152819060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a200000000000000000000000000000000000000000000000000000000179052602754905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b15801561159457600080fd5b505af11580156115a8573d6000803e3d6000fd5b5050604051630618f58760e51b81527f951e19ed000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401611404565b6060601680548060200260200160405190810160405280929190818152602001828054801561165b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161163d575b5050505050905090565b602154602480546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600093919091169163d936547e9101602060405180830381865afa1580156116ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f2919061c80f565b90506116ff600082617b0e565b6021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561177457600080fd5b505af1158015611788573d6000803e3d6000fd5b50506024546040516001600160a01b0390911692507faab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a549150600090a260255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561181d57600080fd5b505af1158015611831573d6000803e3d6000fd5b5050602154602480546040517f9b19251a0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015292169350639b19251a925001600060405180830381600087803b15801561189657600080fd5b505af11580156118aa573d6000803e3d6000fd5b5050602154602480546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529216935063d936547e925001602060405180830381865afa158015611912573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611936919061c80f565b9050611943600182617b0e565b50565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015611a7f57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015611a685783829060005260206000200180546119db9061c860565b80601f0160208091040260200160405190810160405280929190818152602001828054611a079061c860565b8015611a545780601f10611a2957610100808354040283529160200191611a54565b820191906000526020600020905b815481529060010190602001808311611a3757829003601f168201915b5050505050815260200190600101906119bc565b50505050815250508152602001906001019061196a565b50505050905090565b60405163ca669fa760e01b81526101236004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611ad657600080fd5b505af1158015611aea573d6000803e3d6000fd5b50506040805161012360248201527f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a60448083019190915282518083039091018152606490910182526020810180516001600160e01b03167fe2517d3f0000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250611bb6919060040161c7fc565b600060405180830381600087803b158015611bd057600080fd5b505af1158015611be4573d6000803e3d6000fd5b5050602154602480546040517f9b19251a0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015292169350639b19251a92500161078d565b6060601880548060200260200160405190810160405280929190818152602001828054801561165b576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161163d575050505050905090565b6023546026546040516370a0823160e01b81526001600160a01b039182166004820152620186a09260009216906370a0823190602401602060405180830381865afa158015611ce7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d0b919061c9ea565b9050611d18816000617b90565b6023546021546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611d69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d8d919061c9ea565b602654604080516001600160a01b039283166024820152604480820188905282518083039091018152606490910182526020810180516001600160e01b03167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260235491517ff30c7ba300000000000000000000000000000000000000000000000000000000815293945092737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba392611e4c92911690600090869060040161ca03565b600060405180830381600087803b158015611e6657600080fd5b505af1158015611e7a573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015611ef357600080fd5b505af1158015611f07573d6000803e3d6000fd5b50506023546026546040518881526001600160a01b039283169450911691507fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb9060200160405180910390a360275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611fac57600080fd5b505af1158015611fc0573d6000803e3d6000fd5b50506021546026546023546040517fd9caed120000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082166024820152604481018990529116925063d9caed129150606401600060405180830381600087803b15801561203857600080fd5b505af115801561204c573d6000803e3d6000fd5b50506023546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa15801561209f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c3919061c9ea565b90506120cf8186617b90565b6023546021546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015612120573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612144919061c9ea565b905061215981612154888761ca5a565b617b90565b602354601f546040516370a0823160e01b81526101009091046001600160a01b03908116600483015260009216906370a0823190602401602060405180830381865afa1580156121ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d1919061c9ea565b90506121de816000617b90565b50505050505050565b602354602654604051620186a0602482018190526001600160a01b03938416604483015292909116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a200000000000000000000000000000000000000000000000000000000179052602554905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401611300565b6060601780548060200260200160405190810160405280929190818152602001828054801561165b576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161163d575050505050905090565b6021546040517feab103df000000000000000000000000000000000000000000000000000000008152600060048201526001600160a01b039091169063eab103df90602401600060405180830381600087803b15801561236257600080fd5b505af1158015612376573d6000803e3d6000fd5b50506023546021546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424060248201529116925063095ea7b391506044016020604051808303816000875af11580156123ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061240e919061c80f565b50602480546021546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424093810193909352169063095ea7b3906044016020604051808303816000875af1158015612481573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124a5919061c80f565b50604080517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152815160058183030181526025820192839052630618f58760e51b9092527f73cba663000000000000000000000000000000000000000000000000000000006029820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906049015b600060405180830381600087803b15801561254d57600080fd5b505af1158015612561573d6000803e3d6000fd5b505060215460265460405160609190911b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208201526001600160a01b03909116925063e609055e915060340160408051601f19818403018152908290526023547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261260b926001600160a01b03909116906103e890879060040161ca6d565b600060405180830381600087803b15801561262557600080fd5b505af1158015612639573d6000803e3d6000fd5b5050505050565b6025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156126b257600080fd5b505af11580156126c6573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561273657600080fd5b505af115801561274a573d6000803e3d6000fd5b50506021546040517f950837aa000000000000000000000000000000000000000000000000000000008152600060048201526001600160a01b03909116925063950837aa915060240161078d565b6023546026546040516001602482018190526001600160a01b03938416604483015292909116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a200000000000000000000000000000000000000000000000000000000179052602754905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561286757600080fd5b505af115801561287b573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156128eb57600080fd5b505af11580156128ff573d6000803e3d6000fd5b50506021546023546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321fc65f2935061148f9260009216908790879060040161c9b3565b6021546040517f91d148540000000000000000000000000000000000000000000000000000000081527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4600482015261432160248201819052916000916001600160a01b03909116906391d1485490604401602060405180830381865afa1580156129e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a09919061c80f565b9050612a1481617be8565b6021546040517f91d148540000000000000000000000000000000000000000000000000000000081527f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a60048201526001600160a01b03848116602483015260009216906391d1485490604401602060405180830381865afa158015612a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ac2919061c80f565b9050612acd81617be8565b6021546027546040517f91d148540000000000000000000000000000000000000000000000000000000081527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460048201526001600160a01b03918216602482015260009291909116906391d1485490604401602060405180830381865afa158015612b5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b81919061c80f565b9050612b8c81617c62565b6021546027546040517f91d148540000000000000000000000000000000000000000000000000000000081527f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a60048201526001600160a01b03918216602482015260009291909116906391d1485490604401602060405180830381865afa158015612c1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c40919061c80f565b9050612c4b81617c62565b6025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b158015612cbd57600080fd5b505af1158015612cd1573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015612d4a57600080fd5b505af1158015612d5e573d6000803e3d6000fd5b5050602754604080516001600160a01b03928316815291891660208301527f4d3470c839d3c4dd664eec934b920c12fe0966e3185103dd40149496815df2b6935001905060405180910390a16021546040517f950837aa0000000000000000000000000000000000000000000000000000000081526001600160a01b0387811660048301529091169063950837aa90602401600060405180830381600087803b158015612e0a57600080fd5b505af1158015612e1e573d6000803e3d6000fd5b50505050612ea285602160009054906101000a90046001600160a01b03166001600160a01b0316635b1125916040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e9d919061caa7565b617cb4565b6021546040517f91d148540000000000000000000000000000000000000000000000000000000081527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460048201526001600160a01b038781166024830152909116906391d1485490604401602060405180830381865afa158015612f2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f4f919061c80f565b9350612f5a84617c62565b6021546040517f91d148540000000000000000000000000000000000000000000000000000000081527f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a60048201526001600160a01b038781166024830152909116906391d1485490604401602060405180830381865afa158015612fe3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613007919061c80f565b925061301283617c62565b6021546027546040517f91d148540000000000000000000000000000000000000000000000000000000081527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460048201526001600160a01b0391821660248201529116906391d1485490604401602060405180830381865afa15801561309d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130c1919061c80f565b91506130cc82617be8565b6021546027546040517f91d148540000000000000000000000000000000000000000000000000000000081527f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a60048201526001600160a01b0391821660248201529116906391d1485490604401602060405180830381865afa158015613157573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061317b919061c80f565b905061263981617be8565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015611a7f57838290600052602060002090600202016040518060400160405290816000820180546131dd9061c860565b80601f01602080910402602001604051908101604052809291908181526020018280546132099061c860565b80156132565780601f1061322b57610100808354040283529160200191613256565b820191906000526020600020905b81548152906001019060200180831161323957829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156132db57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161329d5790505b505050505081525050815260200190600101906131aa565b6023546026546040516000602482018190526001600160a01b039384166044830152929091166064820152819060840160408051601f198184030181529181526020820180516001600160e01b03167fc513169100000000000000000000000000000000000000000000000000000000179052602754905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa79060240161157a565b6021546040517feab103df000000000000000000000000000000000000000000000000000000008152600160048201526001600160a01b039091169063eab103df90602401600060405180830381600087803b15801561340b57600080fd5b505af115801561341f573d6000803e3d6000fd5b50506021546023546040517f9a5904270000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015291169250639a5904279150602401600060405180830381600087803b15801561348557600080fd5b505af1158015613499573d6000803e3d6000fd5b50506023546021546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424060248201529116925063095ea7b391506044016020604051808303816000875af115801561350d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613531919061c80f565b50602480546021546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424093810193909352169063095ea7b3906044016020604051808303816000875af11580156135a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135c8919061c80f565b50604080517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152815160058183030181526025820192839052630618f58760e51b9092527f584a7938000000000000000000000000000000000000000000000000000000006029820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090604901612533565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a09060009060250160408051808303601f19018152908290526023546020546370a0823160e01b84526001600160a01b0390811660048501529193506000929116906370a0823190602401602060405180830381865afa1580156136ee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613712919061c9ea565b905061371f816000617b90565b6023546021546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015613770573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613794919061c9ea565b601f54604080516001600160a01b0361010090930483166024820152604480820189905282518083039091018152606490910182526020810180517fa9059cbb000000000000000000000000000000000000000000000000000000006001600160e01b0390911617905260235491517ff30c7ba300000000000000000000000000000000000000000000000000000000815293945092737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba39261385a92911690600090869060040161ca03565b600060405180830381600087803b15801561387457600080fd5b505af1158015613888573d6000803e3d6000fd5b50506020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561390157600080fd5b505af1158015613915573d6000803e3d6000fd5b505050507f689a5a5cb55e795ffe4cd8b419cd3bb0a3373974c54d25f64e734d7388b93e9b601f60019054906101000a90046001600160a01b0316602960405161396092919061cbad565b60405180910390a1601f546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156139e157600080fd5b505af11580156139f5573d6000803e3d6000fd5b50506023546020546040516001600160a01b039283169450911691507fde7603a6ed5d07c9f43597ccfe9043d15b66d3284f0de321f5cdf56329e6e03590613a43908990899060299061cbcf565b60405180910390a36021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015613ac057600080fd5b505af1158015613ad4573d6000803e3d6000fd5b50506023546020546040516001600160a01b039283169450911691507f7b53ec10a80164e60591c43d9c222e9354886981b880a3fba19c9ceb77fb972190613b22908990899060299061cbcf565b60405180910390a360275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613b8357600080fd5b505af1158015613b97573d6000803e3d6000fd5b50506021546020546023546040517f99a3c3560000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506399a3c3569450613bf79392831692909116908a908a9060299060040161cbfa565b600060405180830381600087803b158015613c1157600080fd5b505af1158015613c25573d6000803e3d6000fd5b50506023546020546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a08231906024015b602060405180830381865afa158015613c79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c9d919061c9ea565b9050613ca98187617b90565b6023546021546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015613cfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d1e919061c9ea565b9050613d2e81612154898761ca5a565b602354601f546020546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526101009092046001600160a01b0390811660048401529081166024830152600092169063dd62ed3e90604401602060405180830381865afa158015613da6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dca919061c9ea565b9050613dd7816000617b90565b602354601f546040516370a0823160e01b81526101009091046001600160a01b03908116600483015260009216906370a0823190602401602060405180830381865afa158015613e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e4f919061c9ea565b9050613e5c816000617b90565b505050505050505050565b6040517f68656c6c6f000000000000000000000000000000000000000000000000000000602082015260019060009060250160408051808303601f190181529082905260275463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613f0057600080fd5b505af1158015613f14573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015613f8457600080fd5b505af1158015613f98573d6000803e3d6000fd5b50506021546023546040517f99a3c3560000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506399a3c356935061148f9260009216908790879060299060040161cbfa565b6027546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b15801561406457600080fd5b505af1158015614078573d6000803e3d6000fd5b50506021546023546040517f9a5904270000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015291169250639a5904279150602401600060405180830381600087803b1580156140de57600080fd5b505af11580156140f2573d6000803e3d6000fd5b5050604051630618f58760e51b81527f584a7938000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561416257600080fd5b505af1158015614176573d6000803e3d6000fd5b50506021546026546023546040517fd9caed120000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082166024820152600160448201529116925063d9caed129150606401600060405180830381600087803b1580156141ee57600080fd5b505af1158015614202573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156107a757600080fd5b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015611a7f5783829060005260206000200180546142a79061c860565b80601f01602080910402602001604051908101604052809291908181526020018280546142d39061c860565b80156143205780601f106142f557610100808354040283529160200191614320565b820191906000526020600020905b81548152906001019060200180831161430357829003601f168201915b505050505081526020019060010190614288565b604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156143a057600080fd5b505af11580156143b4573d6000803e3d6000fd5b50506021546040517f9a590427000000000000000000000000000000000000000000000000000000008152600060048201526001600160a01b039091169250639a590427915060240161078d565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015611a7f5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156144d057602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116144925790505b50505050508152505081526020019060010190614426565b602354602654604051600160248201526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a20000000000000000000000000000000000000000000000000000000017905260275490517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156145cc57600080fd5b505af11580156145e0573d6000803e3d6000fd5b50506021546023546040517f9a5904270000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015291169250639a5904279150602401600060405180830381600087803b15801561464657600080fd5b505af115801561465a573d6000803e3d6000fd5b5050604051630618f58760e51b81527f584a7938000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156146ca57600080fd5b505af11580156146de573d6000803e3d6000fd5b50506021546020546023546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f2945061473c939283169290911690600190879060040161c9b3565b600060405180830381600087803b15801561475657600080fd5b505af115801561476a573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561262557600080fd5b604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561483857600080fd5b505af115801561484c573d6000803e3d6000fd5b50506021546040517f9b19251a000000000000000000000000000000000000000000000000000000008152600060048201526001600160a01b039091169250639b19251a915060240161078d565b604080516004808252602480830184526020830180516001600160e01b03167f6ed701690000000000000000000000000000000000000000000000000000000017905260235460265494516370a0823160e01b81526001600160a01b0395861693810193909352620186a0946000939116916370a082319101602060405180830381865afa158015614930573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614954919061c9ea565b9050614961816000617b90565b6023546021546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156149b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906149d6919061c9ea565b601f54604080516001600160a01b0361010090930483166024820152604480820189905282518083039091018152606490910182526020810180517fa9059cbb000000000000000000000000000000000000000000000000000000006001600160e01b0390911617905260235491517ff30c7ba300000000000000000000000000000000000000000000000000000000815293945092737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba392614a9c92911690600090869060040161ca03565b600060405180830381600087803b158015614ab657600080fd5b505af1158015614aca573d6000803e3d6000fd5b50506020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015614b4357600080fd5b505af1158015614b57573d6000803e3d6000fd5b5050601f546040516101009091046001600160a01b031681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09250602001905060405180910390a16021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015614c1557600080fd5b505af1158015614c29573d6000803e3d6000fd5b50506023546020546040516001600160a01b039283169450911691507f6478cbb6e28c0823c691dfd74c01c985634faddd4c401b990fe4ec26277ea8d590614c74908990899061cc4f565b60405180910390a360275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614cd557600080fd5b505af1158015614ce9573d6000803e3d6000fd5b50506021546020546023546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f29450614d469392831692909116908a908a9060040161c9b3565b600060405180830381600087803b158015614d6057600080fd5b505af1158015614d74573d6000803e3d6000fd5b50506023546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015614dc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614deb919061c9ea565b9050614df8816000617b90565b6023546021546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015614e49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614e6d919061c9ea565b9050613d2e8185617b90565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a09060009060250160408051808303601f190181529082905260255463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614f1457600080fd5b505af1158015614f28573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250614ffe919060040161c7fc565b600060405180830381600087803b15801561501857600080fd5b505af115801561502c573d6000803e3d6000fd5b50506021546020546023546040517f99a3c3560000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506399a3c356945061148f9392831692909116908790879060299060040161cbfa565b602154604080518082018252601b81527f4552433230437573746f647955706772616465546573742e736f6c00000000006020808301919091528251908101909252600082526025546150ec936001600160a01b03908116939116617d15565b6021546023546026546040516370a0823160e01b81526001600160a01b03918216600482015292811692620186a09260009216906370a0823190602401602060405180830381865afa158015615146573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061516a919061c9ea565b9050615177816000617b90565b6023546040516370a0823160e01b81526001600160a01b03858116600483015260009216906370a0823190602401602060405180830381865afa1580156151c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906151e6919061c9ea565b602654604080516001600160a01b039283166024820152604480820188905282518083039091018152606490910182526020810180516001600160e01b03167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260235491517ff30c7ba300000000000000000000000000000000000000000000000000000000815293945092737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba3926152a592911690600090869060040161ca03565b600060405180830381600087803b1580156152bf57600080fd5b505af11580156152d3573d6000803e3d6000fd5b50506040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b0388166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561534857600080fd5b505af115801561535c573d6000803e3d6000fd5b50506023546026546040518881526001600160a01b039283169450911691507fd4dabfe72081670cc78f2ebda8e2eddaf3feebde6288dcb8fe673b3dc201b5a49060200160405180910390a360275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561540157600080fd5b505af1158015615415573d6000803e3d6000fd5b50506026546023546040517fd9caed120000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152908216602482015260448101889052908816925063d9caed129150606401600060405180830381600087803b15801561548b57600080fd5b505af115801561549f573d6000803e3d6000fd5b50506023546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156154f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615516919061c9ea565b90506155228186617b90565b6023546040516370a0823160e01b81526001600160a01b03888116600483015260009216906370a0823190602401602060405180830381865afa15801561556d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615591919061c9ea565b90506155a181612154888761ca5a565b602354601f546040516370a0823160e01b81526101009091046001600160a01b03908116600483015260009216906370a0823190602401602060405180830381865afa1580156155f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615619919061c9ea565b9050615626816000617b90565b5050505050505050565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015611a7f5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156156fe57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116156c05790505b50505050508152505081526020019060010190615654565b6021546040517feab103df000000000000000000000000000000000000000000000000000000008152600160048201526103e8916001600160a01b03169063eab103df90602401600060405180830381600087803b15801561577757600080fd5b505af115801561578b573d6000803e3d6000fd5b50506023546021546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424060248201529116925063095ea7b391506044016020604051808303816000875af11580156157ff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615823919061c80f565b50602480546021546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424093810193909352169063095ea7b3906044016020604051808303816000875af1158015615896573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906158ba919061c80f565b506023546021546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801561590c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615930919061c9ea565b90506000604051602001615967907f68656c6c6f000000000000000000000000000000000000000000000000000000815260050190565b60408051808303601f19018152908290526021546381bad6f360e01b8352600160048401819052602484018190526044840181905260648401526001600160a01b031660848301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156159ea57600080fd5b505af11580156159fe573d6000803e3d6000fd5b505060235460265460405160609190911b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208201526001600160a01b0390911692507f1dafa057cc5c3bccb5ad974129a2bccd3c74002d9dfd7062404ba9523b18d6ae915060340160408051601f1981840301815290829052615a87918790869061cc68565b60405180910390a26021546026546040805160609290921b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208301528051808303601401815260348301918290526023547fe609055e000000000000000000000000000000000000000000000000000000009092526001600160a01b039384169363e609055e93615b269391909116908890879060380161ca6d565b600060405180830381600087803b158015615b4057600080fd5b505af1158015615b54573d6000803e3d6000fd5b50505050615bd78383615b67919061cc93565b6023546021546040516370a0823160e01b81526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa158015615bb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612154919061c9ea565b505050565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015611a7f578382906000526020600020018054615c1f9061c860565b80601f0160208091040260200160405190810160405280929190818152602001828054615c4b9061c860565b8015615c985780601f10615c6d57610100808354040283529160200191615c98565b820191906000526020600020905b815481529060010190602001808311615c7b57829003601f168201915b505050505081526020019060010190615c00565b60085460009060ff1615615cc4575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015615d55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615d79919061c9ea565b1415905090565b60285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015615dd957600080fd5b505af1158015615ded573d6000803e3d6000fd5b5050602854604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250615ec3919060040161c7fc565b600060405180830381600087803b158015615edd57600080fd5b505af1158015615ef1573d6000803e3d6000fd5b50505050602160009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b158015615f4557600080fd5b505af1158015615f59573d6000803e3d6000fd5b505060285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015615fb657600080fd5b505af1158015615fca573d6000803e3d6000fd5b5050602854604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506160a0919060040161c7fc565b600060405180830381600087803b1580156160ba57600080fd5b505af11580156160ce573d6000803e3d6000fd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561612257600080fd5b505af1158015616136573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561619357600080fd5b505af11580156161a7573d6000803e3d6000fd5b50505050602160009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156161fb57600080fd5b505af115801561620f573d6000803e3d6000fd5b5050602354602654604051620186a0602482018190526001600160a01b0393841660448301529290911660648201529092506000915060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a20000000000000000000000000000000000000000000000000000000017905251630618f58760e51b81527fd93c0665000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156162f857600080fd5b505af115801561630c573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561636957600080fd5b505af115801561637d573d6000803e3d6000fd5b50506021546020546023546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f294506163da9392831692909116908790879060040161c9b3565b600060405180830381600087803b1580156163f457600080fd5b505af1158015616408573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561646557600080fd5b505af1158015616479573d6000803e3d6000fd5b50505050602160009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156164cd57600080fd5b505af11580156164e1573d6000803e3d6000fd5b50506023546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a08231906024015b602060405180830381865afa158015616535573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616559919061c9ea565b9050616566816000617b90565b6023546021546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156165b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906165db919061c9ea565b601f54604080516001600160a01b0361010090930483166024820152604480820189905282518083039091018152606490910182526020810180517fa9059cbb000000000000000000000000000000000000000000000000000000006001600160e01b0390911617905260235491517ff30c7ba300000000000000000000000000000000000000000000000000000000815293945092737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba3926166a192911690600090869060040161ca03565b600060405180830381600087803b1580156166bb57600080fd5b505af11580156166cf573d6000803e3d6000fd5b50506020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561674857600080fd5b505af115801561675c573d6000803e3d6000fd5b5050601f54602354602654604080516101009094046001600160a01b039081168552602085018c9052928316908401521660608201527f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609250608001905060405180910390a16021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561683757600080fd5b505af115801561684b573d6000803e3d6000fd5b50506023546020546040516001600160a01b039283169450911691507f6478cbb6e28c0823c691dfd74c01c985634faddd4c401b990fe4ec26277ea8d590616896908990899061cc4f565b60405180910390a360275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156168f757600080fd5b505af115801561690b573d6000803e3d6000fd5b50506021546020546023546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f294506169689392831692909116908a908a9060040161c9b3565b600060405180830381600087803b15801561698257600080fd5b505af1158015616996573d6000803e3d6000fd5b50506023546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401613c5c565b60235460265460408051620186a060248083018290526001600160a01b039586166044840181905295909416606480840182905284518085039091018152608490930184526020830180516001600160e01b03167f357fc5a20000000000000000000000000000000000000000000000000000000017905292516370a0823160e01b815260048101939093529390926000926370a082319101616518565b6060601580548060200260200160405190810160405280929190818152602001828054801561165b576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161163d575050505050905090565b600080604051602001616b05907f68656c6c6f000000000000000000000000000000000000000000000000000000815260050190565b60408051808303601f190181529082905260275463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015616b6c57600080fd5b505af1158015616b80573d6000803e3d6000fd5b5050604051630618f58760e51b81527f951e19ed000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401614ffe565b60405163ca669fa760e01b81526101236004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015616c2957600080fd5b505af1158015616c3d573d6000803e3d6000fd5b50506040805161012360248201527f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a60448083019190915282518083039091018152606490910182526020810180516001600160e01b03167fe2517d3f0000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250616d09919060040161c7fc565b600060405180830381600087803b158015616d2357600080fd5b505af1158015616d37573d6000803e3d6000fd5b5050602154602480546040517f9a5904270000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015292169350639a59042792500161078d565b602354602654604051600160248201526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a20000000000000000000000000000000000000000000000000000000017905260275490517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b158015616e6b57600080fd5b505af1158015616e7f573d6000803e3d6000fd5b50506021546023546040517f9a5904270000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015291169250639a5904279150602401600060405180830381600087803b158015616ee557600080fd5b505af1158015616ef9573d6000803e3d6000fd5b5050604051630618f58760e51b81527f584a7938000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015616f6957600080fd5b505af1158015616f7d573d6000803e3d6000fd5b50506021546020546023546040517f99a3c3560000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506399a3c356945061473c939283169290911690600190879060299060040161cbfa565b6021546023546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600092919091169063d936547e90602401602060405180830381865afa158015617048573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061706c919061c80f565b9050617079600182617b0e565b6021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156170ee57600080fd5b505af1158015617102573d6000803e3d6000fd5b50506023546040516001600160a01b0390911692507f51085ddf9ebdded84b76e829eb58c4078e4b5bdf97d9a94723f336039da467919150600090a260255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561719757600080fd5b505af11580156171ab573d6000803e3d6000fd5b50506021546023546040517f9a5904270000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015291169250639a5904279150602401600060405180830381600087803b15801561721157600080fd5b505af1158015617225573d6000803e3d6000fd5b50506021546023546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063d936547e9150602401602060405180830381865afa15801561728e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906172b2919061c80f565b9050611943600082617b0e565b602354602654604051620186a0602482018190526001600160a01b03938416604483015292909116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167fc51316910000000000000000000000000000000000000000000000000000000017905260235460265491516370a0823160e01b81526001600160a01b0392831660048201529293506000929116906370a0823190602401602060405180830381865afa158015617386573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906173aa919061c9ea565b90506173b7816000617b90565b6023546021546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015617408573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061742c919061c9ea565b601f54604080516001600160a01b0361010090930483166024820152604480820189905282518083039091018152606490910182526020810180517fa9059cbb000000000000000000000000000000000000000000000000000000006001600160e01b0390911617905260235491517ff30c7ba300000000000000000000000000000000000000000000000000000000815293945092737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba3926174f292911690600090869060040161ca03565b600060405180830381600087803b15801561750c57600080fd5b505af1158015617520573d6000803e3d6000fd5b50506020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561759957600080fd5b505af11580156175ad573d6000803e3d6000fd5b5050601f547f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60925061010090046001600160a01b031690506175f060028861cca6565b602354602654604080516001600160a01b03958616815260208101949094529184168383015292909216606082015290519081900360800190a16021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561769f57600080fd5b505af11580156176b3573d6000803e3d6000fd5b50506023546020546040516001600160a01b039283169450911691507f6478cbb6e28c0823c691dfd74c01c985634faddd4c401b990fe4ec26277ea8d5906176fe908990899061cc4f565b60405180910390a360275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561775f57600080fd5b505af1158015617773573d6000803e3d6000fd5b50506021546020546023546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f294506177d09392831692909116908a908a9060040161c9b3565b600060405180830381600087803b1580156177ea57600080fd5b505af11580156177fe573d6000803e3d6000fd5b50506023546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015617851573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190617875919061c9ea565b90506178868161215460028961cca6565b6023546021546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156178d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906178fb919061c9ea565b9050613d2e8161790c60028a61cca6565b612154908761ca5a565b60255460405163ca669fa760e01b81526001600160a01b039091166004820152620186a090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561797457600080fd5b505af1158015617988573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250617a5e919060040161c7fc565b600060405180830381600087803b158015617a7857600080fd5b505af1158015617a8c573d6000803e3d6000fd5b50506021546026546023546040517fd9caed120000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082166024820152604481018690529116925063d9caed12915060640161260b565b6000617af961c395565b617b04848483617d2a565b9150505b92915050565b6040517ff7fe347700000000000000000000000000000000000000000000000000000000815282151560048201528115156024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f7fe3477906044015b60006040518083038186803b158015617b7c57600080fd5b505afa1580156114bd573d6000803e3d6000fd5b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c5490604401617b64565b6040517fa59828850000000000000000000000000000000000000000000000000000000081528115156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063a5982885906024015b60006040518083038186803b158015617c4e57600080fd5b505afa158015612639573d6000803e3d6000fd5b6040517f0c9fd5810000000000000000000000000000000000000000000000000000000081528115156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90630c9fd58190602401617c36565b6040517f515361f60000000000000000000000000000000000000000000000000000000081526001600160a01b03808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f690604401617b64565b617d1d61c395565b6126398585858486617da5565b600080617d378584617ea5565b9050617d9a6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001617d8592919061cce1565b60405160208183030381529060405285617eb1565b9150505b9392505050565b6040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201528190737109709ecfa91a80626ff3989d68f67f5b1dd12d9081906306447d5690602401600060405180830381600087803b158015617e1757600080fd5b505af1925050508015617e28575060015b617e3d57617e3887878787617edf565b6121de565b617e4987878787617edf565b806001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015617e8457600080fd5b505af1158015617e98573d6000803e3d6000fd5b5050505050505050505050565b6000617d9e8383617ef8565b60c08101515160009015617ed557617ece84848460c00151617f13565b9050617d9e565b617ece84846180b9565b6000617eeb84836181a4565b90506126398582856181b0565b6000617f04838361857a565b617d9e83836020015184617eb1565b600080617f1e61858a565b90506000617f2c868361865d565b90506000617f438260600151836020015185618b03565b90506000617f5383838989618d15565b90506000617f6082619b92565b602081015181519192509060030b15617fd357898260400151604051602001617f8a92919061cd03565b60408051601f19818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252617fca9160040161c7fc565b60405180910390fd5b60006180166040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001619d61565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d9061806990849060040161c7fc565b602060405180830381865afa158015618086573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906180aa919061caa7565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc9259061810e90879060040161c7fc565b600060405180830381865afa15801561812b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052618153919081019061ce3d565b90506000618181828560405160200161816d92919061ce72565b604051602081830303815290604052619f61565b90506001600160a01b038116617b04578484604051602001617f8a92919061cea1565b6000617f048383619f74565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201527fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61036024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90600090829063667f9d7090604401602060405180830381865afa15801561824c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190618270919061c9ea565b90508061841757600061828286619f80565b604080518082018252600581527f352e302e300000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061830d905b6040805180820182526000808252602091820152815180830190925284518252808501908201529061a063565b80618319575060008451115b1561839c576040517f4f1ef2860000000000000000000000000000000000000000000000000000000081526001600160a01b03871690634f1ef28690618365908890889060040161cce1565b600060405180830381600087803b15801561837f57600080fd5b505af1158015618393573d6000803e3d6000fd5b50505050618411565b6040517f3659cfe60000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152871690633659cfe690602401600060405180830381600087803b1580156183f857600080fd5b505af115801561840c573d6000803e3d6000fd5b505050505b50612639565b80600061842382619f80565b604080518082018252600581527f352e302e3000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150618485906182e0565b80618491575060008551115b15618516576040517f9623609d0000000000000000000000000000000000000000000000000000000081526001600160a01b03831690639623609d906184df908a908a908a9060040161cf4c565b600060405180830381600087803b1580156184f957600080fd5b505af115801561850d573d6000803e3d6000fd5b505050506121de565b6040517f99a88ec40000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015287811660248301528316906399a88ec490604401600060405180830381600087803b158015617e8457600080fd5b6185868282600061a077565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c9061861190849060040161cf7d565b600060405180830381865afa15801561862e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052618656919081019061cfc4565b9250505090565b61868f6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d90506186da6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6186e38561a17a565b602082015260006186f38661a55f565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015618735573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261875d919081019061cfc4565b86838560200151604051602001618777949392919061d00d565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb11906187cf90859060040161c7fc565b600060405180830381865afa1580156187ec573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052618814919081019061cfc4565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f69061885c90849060040161d111565b602060405180830381865afa158015618879573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061889d919061c80f565b6188b25781604051602001617f8a919061d163565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906188f790849060040161d1f5565b600060405180830381865afa158015618914573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261893c919081019061cfc4565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f69061898390849060040161d247565b602060405180830381865afa1580156189a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906189c4919061c80f565b15618a59576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890618a0e90849060040161d247565b600060405180830381865afa158015618a2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052618a53919081019061cfc4565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001618a7e919061d299565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401618aaa92919061d305565b600060405180830381865afa158015618ac7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052618aef919081019061cfc4565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081618b1f5790505090506040518060400160405280600481526020017f677265700000000000000000000000000000000000000000000000000000000081525081600081518110618b7f57618b7f61d32a565b60200260200101819052506040518060400160405280600381526020017f2d726c000000000000000000000000000000000000000000000000000000000081525081600181518110618bd357618bd361d32a565b602002602001018190525084604051602001618bef919061d359565b60405160208183030381529060405281600281518110618c1157618c1161d32a565b602002602001018190525082604051602001618c2d919061d3c5565b60405160208183030381529060405281600381518110618c4f57618c4f61d32a565b60200260200101819052506000618c6582619b92565b602080820151604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000008185019081528251808401845260008082529086015282518084019093529051825292810192909252919250618cf6906040805180820182526000808252602091820152815180830190925284518252808501908201529061a7e2565b618d0b5785604051602001617f8a919061d406565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015618d65565b511590565b618ed957826020015115618e21576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401617fca565b8260c0015115618ed9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401617fca565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081618ef257905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280618f4d9061d497565b935060ff1681518110618f6257618f6261d32a565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001618fb3919061d4b6565b604051602081830303815290604052828280618fce9061d497565b935060ff1681518110618fe357618fe361d32a565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806190309061d497565b935060ff16815181106190455761904561d32a565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806190929061d497565b935060ff16815181106190a7576190a761d32a565b602002602001018190525087602001518282806190c39061d497565b935060ff16815181106190d8576190d861d32a565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806191259061d497565b935060ff168151811061913a5761913a61d32a565b6020908102919091010152875182826191528161d497565b935060ff16815181106191675761916761d32a565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806191b49061d497565b935060ff16815181106191c9576191c961d32a565b60200260200101819052506191dd4661a843565b82826191e88161d497565b935060ff16815181106191fd576191fd61d32a565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c65000000000000000000000000000000000081525082828061924a9061d497565b935060ff168151811061925f5761925f61d32a565b6020026020010181905250868282806192779061d497565b935060ff168151811061928c5761928c61d32a565b60209081029190910101528551156193b35760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826192dd8161d497565b935060ff16815181106192f2576192f261d32a565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d9061934290899060040161c7fc565b600060405180830381865afa15801561935f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052619387919081019061cfc4565b82826193928161d497565b935060ff16815181106193a7576193a761d32a565b60200260200101819052505b8460200151156194835760408051808201909152601281527f2d2d766572696679536f75726365436f64650000000000000000000000000000602082015282826193fc8161d497565b935060ff16815181106194115761941161d32a565b60200260200101819052506040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525082828061945e9061d497565b935060ff16815181106194735761947361d32a565b602002602001018190525061964a565b6194bb618d608660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b61954e5760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826194fe8161d497565b935060ff16815181106195135761951361d32a565b60200260200101819052508460a00151604051602001619533919061d359565b60405160208183030381529060405282828061945e9061d497565b8460c0015115801561959157506040808901518151808301835260008082526020918201528251808401909352815183529081019082015261958f90511590565b155b1561964a5760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826195d58161d497565b935060ff16815181106195ea576195ea61d32a565b60200260200101819052506195fe8861a8e3565b60405160200161960e919061d359565b6040516020818303038152906040528282806196299061d497565b935060ff168151811061963e5761963e61d32a565b60200260200101819052505b6040808601518151808301835260008082526020918201528251808401909352815183529081019082015261967e90511590565b6197135760408051808201909152600b81527f2d2d72656c617965724964000000000000000000000000000000000000000000602082015282826196c18161d497565b935060ff16815181106196d6576196d661d32a565b602002602001018190525084604001518282806196f29061d497565b935060ff16815181106197075761970761d32a565b60200260200101819052505b6060850151156198345760408051808201909152600681527f2d2d73616c7400000000000000000000000000000000000000000000000000006020820152828261975c8161d497565b935060ff16815181106197715761977161d32a565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa1580156197e0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052619808919081019061cfc4565b82826198138161d497565b935060ff16815181106198285761982861d32a565b60200260200101819052505b60e085015151156198db5760408051808201909152600a81527f2d2d6761734c696d6974000000000000000000000000000000000000000000006020820152828261987e8161d497565b935060ff16815181106198935761989361d32a565b60200260200101819052506198af8560e001516000015161a843565b82826198ba8161d497565b935060ff16815181106198cf576198cf61d32a565b60200260200101819052505b60e085015160200151156199855760408051808201909152600a81527f2d2d676173507269636500000000000000000000000000000000000000000000602082015282826199288161d497565b935060ff168151811061993d5761993d61d32a565b60200260200101819052506199598560e001516020015161a843565b82826199648161d497565b935060ff16815181106199795761997961d32a565b60200260200101819052505b60e08501516040015115619a2f5760408051808201909152600e81527f2d2d6d6178466565506572476173000000000000000000000000000000000000602082015282826199d28161d497565b935060ff16815181106199e7576199e761d32a565b6020026020010181905250619a038560e001516040015161a843565b8282619a0e8161d497565b935060ff1681518110619a2357619a2361d32a565b60200260200101819052505b60e08501516060015115619ad95760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282619a7c8161d497565b935060ff1681518110619a9157619a9161d32a565b6020026020010181905250619aad8560e001516060015161a843565b8282619ab88161d497565b935060ff1681518110619acd57619acd61d32a565b60200260200101819052505b60008160ff1667ffffffffffffffff811115619af757619af761c831565b604051908082528060200260200182016040528015619b2a57816020015b6060815260200190600190039081619b155790505b50905060005b8260ff168160ff161015619b8357838160ff1681518110619b5357619b5361d32a565b6020026020010151828260ff1681518110619b7057619b7061d32a565b6020908102919091010152600101619b30565b5093505050505b949350505050565b619bb96040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c91619c3f9186910161d521565b600060405180830381865afa158015619c5c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052619c84919081019061cfc4565b90506000619c92868361b3d2565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401619cc2919061c6ee565b6000604051808303816000875af1158015619ce1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052619d09919081019061d568565b805190915060030b15801590619d225750602081015151155b8015619d315750604081015151155b15618d0b5781600081518110619d4957619d4961d32a565b6020026020010151604051602001617f8a919061d61e565b60606000619d968560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150619dcd9082905b9061b527565b15619f2a576000619e4a82619e4484619e3e619e108a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b9061b54e565b9061b5b0565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150619eae90829061b527565b15619f1857604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152619f15905b829061b635565b90505b619f218161b65b565b92505050617d9e565b8215619f43578484604051602001617f8a92919061d80a565b5050604080516020810190915260008152617d9e565b509392505050565b6000808251602084016000f09392505050565b6185868282600161a077565b60408051600481526024810182526020810180516001600160e01b03167fad3cb1cc00000000000000000000000000000000000000000000000000000000179052905160609160009182916001600160a01b03861691619fe0919061d8b1565b600060405180830381855afa9150503d806000811461a01b576040519150601f19603f3d011682016040523d82523d6000602084013e61a020565b606091505b509150915081801561a033575060208151115b1561a04c5780806020019051810190619b8a919061cfc4565b505060408051602081019091526000815292915050565b600061a06f838361b6c4565b159392505050565b8160a001511561a08657505050565b600061a09384848461b79f565b9050600061a0a082619b92565b602081015181519192509060030b15801561a13c5750604080518082018252600781527f53554343455353000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261a13c90604080518082018252600080825260209182015281518083019092528451825280850190820152619dc7565b1561a14957505050505050565b6040820151511561a169578160400151604051602001617f8a919061d8cd565b80604051602001617f8a919061d92b565b6060600061a1af8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061a214905b829061a7e2565b1561a28357604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617d9e9061a27e90839061bd3a565b61b65b565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261a2e5905b829061bdc4565b60010361a3b257604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261a34b90619f0e565b50604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617d9e9061a27e905b839061b635565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261a4119061a20d565b1561a54857604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061a47990839061be5e565b90506000816001835161a48c919061ca5a565b8151811061a49c5761a49c61d32a565b6020026020010151905061a53f61a27e61a5126040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529061bd3a565b95945050505050565b82604051602001617f8a919061d996565b50919050565b6060600061a5948360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061a5f69061a20d565b1561a60457617d9e8161b65b565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261a6639061a2de565b60010361a6cd57604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617d9e9061a27e9061a3ab565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261a72c9061a20d565b1561a54857604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061a79490839061be5e565b905060018151111561a7d057806002825161a7af919061ca5a565b8151811061a7bf5761a7bf61d32a565b602002602001015192505050919050565b5082604051602001617f8a919061d996565b80518251600091111561a7f757506000617b08565b8151835160208501516000929161a80d9161cc93565b61a817919061ca5a565b90508260200151810361a82e576001915050617b08565b82516020840151819020912014905092915050565b6060600061a8508361bf03565b600101905060008167ffffffffffffffff81111561a8705761a87061c831565b6040519080825280601f01601f19166020018201604052801561a89a576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461a8a457509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e534544000000000000000000000000000000000000000000008184019081528551808701875283815284019290925284518086019095525184529083015260609161a96f905b829061a063565b1561a9af57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261aa0e9061a968565b1561aa4e57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d495400000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261aaad9061a968565b1561aaed57505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261ab4c9061a968565b8061abb15750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261abb19061a968565b1561abf157505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261ac509061a968565b8061acb55750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261acb59061a968565b1561acf557505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261ad549061a968565b8061adb95750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261adb99061a968565b1561adf957505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261ae589061a968565b8061aebd5750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261aebd9061a968565b1561aefd57505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261af5c9061a968565b1561af9c57505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261affb9061a968565b1561b03b57505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261b09a9061a968565b1561b0da57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261b1399061a968565b1561b17957505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261b1d89061a968565b1561b21857505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261b2779061a968565b8061b2dc5750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261b2dc9061a968565b1561b31c57505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261b37b9061a968565b1561b3bb57505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151617f8a929060200161da74565b60608060005b845181101561b45d578185828151811061b3f45761b3f461d32a565b602002602001015160405160200161b40d92919061ce72565b60405160208183030381529060405291506001855161b42c919061ca5a565b811461b455578160405160200161b443919061dbdd565b60405160208183030381529060405291505b60010161b3d8565b5060408051600380825260808201909252600091816020015b606081526020019060019003908161b476579050509050838160008151811061b4a15761b4a161d32a565b60200260200101819052506040518060400160405280600281526020017f2d630000000000000000000000000000000000000000000000000000000000008152508160018151811061b4f55761b4f561d32a565b6020026020010181905250818160028151811061b5145761b51461d32a565b6020908102919091010152949350505050565b602080830151835183519284015160009361b545929184919061bfe5565b14159392505050565b6040805180820190915260008082526020820152600061b580846000015185602001518560000151866020015161c0f6565b905083602001518161b592919061ca5a565b8451859061b5a190839061ca5a565b90525060208401525090919050565b604080518082019091526000808252602082015281518351101561b5d5575081617b08565b602080830151908401516001911461b5fc5750815160208481015190840151829020919020145b801561b62d5782518451859061b61390839061ca5a565b905250825160208501805161b62990839061cc93565b9052505b509192915050565b604080518082019091526000808252602082015261b65483838361c216565b5092915050565b60606000826000015167ffffffffffffffff81111561b67c5761b67c61c831565b6040519080825280601f01601f19166020018201604052801561b6a6576020820181803683370190505b509050600060208201905061b654818560200151866000015161c2c1565b815181516000919081111561b6d7575081515b6020808501519084015160005b8381101561b790578251825180821461b76057600019602087101561b73f5760018461b71189602061ca5a565b61b71b919061cc93565b61b72690600861dc1e565b61b73190600261dd1c565b61b73b919061ca5a565b1990505b818116838216818103911461b75d579750617b089650505050505050565b50505b61b76b60208661cc93565b945061b77860208561cc93565b9350505060208161b789919061cc93565b905061b6e4565b5084518651618d0b919061dd28565b6060600061b7ab61858a565b6040805160ff808252612000820190925291925060009190816020015b606081526020019060019003908161b7c857905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061b8239061d497565b935060ff168151811061b8385761b83861d32a565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e330000000000000000000000000000000000000000000000000081525060405160200161b889919061dd48565b60405160208183030381529060405282828061b8a49061d497565b935060ff168151811061b8b95761b8b961d32a565b60200260200101819052506040518060400160405280600881526020017f76616c696461746500000000000000000000000000000000000000000000000081525082828061b9069061d497565b935060ff168151811061b91b5761b91b61d32a565b60200260200101819052508260405160200161b937919061d3c5565b60405160208183030381529060405282828061b9529061d497565b935060ff168151811061b9675761b96761d32a565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e74726163740000000000000000000000000000000000000000000081525082828061b9b49061d497565b935060ff168151811061b9c95761b9c961d32a565b602002602001018190525061b9de878461c33b565b828261b9e98161d497565b935060ff168151811061b9fe5761b9fe61d32a565b60209081029190910101528551511561baaa5760408051808201909152600b81527f2d2d7265666572656e63650000000000000000000000000000000000000000006020820152828261ba508161d497565b935060ff168151811061ba655761ba6561d32a565b602002602001018190525061ba7e86600001518461c33b565b828261ba898161d497565b935060ff168151811061ba9e5761ba9e61d32a565b60200260200101819052505b85608001511561bb185760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261baf38161d497565b935060ff168151811061bb085761bb0861d32a565b602002602001018190525061bb7e565b841561bb7e5760408051808201909152601281527f2d2d726571756972655265666572656e636500000000000000000000000000006020820152828261bb5d8161d497565b935060ff168151811061bb725761bb7261d32a565b60200260200101819052505b6040860151511561bc1a5760408051808201909152600d81527f2d2d756e73616665416c6c6f77000000000000000000000000000000000000006020820152828261bbc88161d497565b935060ff168151811061bbdd5761bbdd61d32a565b6020026020010181905250856040015182828061bbf99061d497565b935060ff168151811061bc0e5761bc0e61d32a565b60200260200101819052505b85606001511561bc845760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261bc638161d497565b935060ff168151811061bc785761bc7861d32a565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561bca25761bca261c831565b60405190808252806020026020018201604052801561bcd557816020015b606081526020019060019003908161bcc05790505b50905060005b8260ff168160ff16101561bd2e57838160ff168151811061bcfe5761bcfe61d32a565b6020026020010151828260ff168151811061bd1b5761bd1b61d32a565b602090810291909101015260010161bcdb565b50979650505050505050565b604080518082019091526000808252602082015281518351101561bd5f575081617b08565b8151835160208501516000929161bd759161cc93565b61bd7f919061ca5a565b6020840151909150600190821461bda0575082516020840151819020908220145b801561bdbb5783518551869061bdb790839061ca5a565b9052505b50929392505050565b600080826000015161bde8856000015186602001518660000151876020015161c0f6565b61bdf2919061cc93565b90505b8351602085015161be06919061cc93565b811161b654578161be168161dd8d565b925050826000015161be4d85602001518361be31919061ca5a565b865161be3d919061ca5a565b838660000151876020015161c0f6565b61be57919061cc93565b905061bdf5565b6060600061be6c848461bdc4565b61be7790600161cc93565b67ffffffffffffffff81111561be8f5761be8f61c831565b60405190808252806020026020018201604052801561bec257816020015b606081526020019060019003908161bead5790505b50905060005b8151811015619f595761bede61a27e868661b635565b82828151811061bef05761bef061d32a565b602090810291909101015260010161bec8565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061bf4c577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831061bf78576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061bf9657662386f26fc10000830492506010015b6305f5e100831061bfae576305f5e100830492506008015b612710831061bfc257612710830492506004015b6064831061bfd4576064830492506002015b600a8310617b085760010192915050565b60008085841161c0ec576020841161c098576000841561c03057600161c00c86602061ca5a565b61c01790600861dc1e565b61c02290600261dd1c565b61c02c919061ca5a565b1990505b835181168561c03f898961cc93565b61c049919061ca5a565b805190935082165b81811461c0835787841161c06b5787945050505050619b8a565b8361c0758161dda7565b94505082845116905061c051565b61c08d878561cc93565b945050505050619b8a565b83832061c0a5858861ca5a565b61c0af908761cc93565b91505b85821061c0ea5784822080820361c0d75761c0cd868461cc93565b9350505050619b8a565b61c0e260018461ca5a565b92505061c0b2565b505b5092949350505050565b6000838186851161c201576020851161c1b0576000851561c14257600161c11e87602061ca5a565b61c12990600861dc1e565b61c13490600261dd1c565b61c13e919061ca5a565b1990505b8451811660008761c1538b8b61cc93565b61c15d919061ca5a565b855190915083165b82811461c1a25781861061c18a5761c17d8b8b61cc93565b9650505050505050619b8a565b8561c1948161dd8d565b96505083865116905061c165565b859650505050505050619b8a565b508383206000905b61c1c2868961ca5a565b821161c1ff5785832080820361c1de5783945050505050619b8a565b61c1e960018561cc93565b935050818061c1f79061dd8d565b92505061c1b8565b505b61c20b878761cc93565b979650505050505050565b6040805180820190915260008082526020820152600061c248856000015186602001518660000151876020015161c0f6565b60208087018051918601919091525190915061c264908261ca5a565b83528451602086015161c277919061cc93565b810361c286576000855261c2b8565b8351835161c294919061cc93565b8551869061c2a390839061ca5a565b905250835161c2b2908261cc93565b60208601525b50909392505050565b6020811061c2f9578151835261c2d860208461cc93565b925061c2e560208361cc93565b915061c2f260208261ca5a565b905061c2c1565b600019811561c32857600161c30f83602061ca5a565b61c31b9061010061dd1c565b61c325919061ca5a565b90505b9151835183169219169190911790915250565b6060600061c349848461865d565b805160208083015160405193945061c3639390910161ddbe565b60405160208183030381529060405291505092915050565b610c9f8061de1783390190565b610ec28061eab683390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161c3d861c3dd565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161c3d86040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b8181101561c48f5783516001600160a01b031683526020938401939092019160010161c468565b509095945050505050565b60005b8381101561c4b557818101518382015260200161c49d565b50506000910152565b6000815180845261c4d681602086016020860161c49a565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561c5e6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b8181101561c5cc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261c5b684865161c4be565b602095860195909450929092019160010161c57c565b50919750505060209485019492909201915060010161c512565b50929695505050505050565b600081518084526020840193506020830160005b8281101561c6465781517fffffffff000000000000000000000000000000000000000000000000000000001686526020958601959091019060010161c606565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561c5e6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516040875261c6bc604088018261c4be565b905060208201519150868103602088015261c6d7818361c5f2565b96505050602093840193919091019060010161c678565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561c5e6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845261c75085835161c4be565b9450602093840193919091019060010161c716565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561c5e6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b038151168652602081015190506040602087015261c7e6604087018261c5f2565b955050602093840193919091019060010161c78d565b602081526000617d9e602083018461c4be565b60006020828403121561c82157600080fd5b81518015158114617d9e57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600181811c9082168061c87457607f821691505b60208210810361a559577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b601f821115615bd757806000526020600020601f840160051c8101602085101561c8d45750805b601f840160051c820191505b81811015612639576000815560010161c8e0565b815167ffffffffffffffff81111561c90e5761c90e61c831565b61c9228161c91c845461c860565b8461c8ad565b6020601f82116001811461c956576000831561c93e5750848201515b600019600385901b1c1916600184901b178455612639565b600084815260208120601f198516915b8281101561c986578785015182556020948501946001909201910161c966565b508482101561c9a45786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6001600160a01b03851681526001600160a01b0384166020820152826040820152608060608201526000618d0b608083018461c4be565b60006020828403121561c9fc57600080fd5b5051919050565b6001600160a01b038416815282602082015260606040820152600061a53f606083018461c4be565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115617b0857617b0861ca2b565b60808152600061ca80608083018761c4be565b6001600160a01b0386166020840152846040840152828103606084015261c20b818561c4be565b60006020828403121561cab957600080fd5b81516001600160a01b0381168114617d9e57600080fd5b6001600160a01b0381541682526001600160a01b03600182015416602083015260028101546040830152600060038201608060608501526000815461cb148161c860565b806080880152600182166000811461cb33576001811461cb6d5761cba1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831660a089015260a082151560051b890101935061cba1565b84600052602060002060005b8381101561cb985781548a820160a0015260019091019060200161cb79565b890160a0019450505b50919695505050505050565b6001600160a01b0383168152604060208201526000619b8a604083018461cad0565b83815260606020820152600061cbe8606083018561c4be565b8281036040840152618d0b818561cad0565b6001600160a01b03861681526001600160a01b038516602082015283604082015260a06060820152600061cc3160a083018561c4be565b828103608084015261cc43818561cad0565b98975050505050505050565b828152604060208201526000619b8a604083018461c4be565b60608152600061cc7b606083018661c4be565b8460208401528281036040840152618d0b818561c4be565b80820180821115617b0857617b0861ca2b565b60008261ccdc577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6001600160a01b0383168152604060208201526000619b8a604083018461c4be565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161cd3b81601a85016020880161c49a565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161cd7881601c84016020880161c49a565b01601c01949350505050565b6040516060810167ffffffffffffffff8111828210171561cda75761cda761c831565b60405290565b60008067ffffffffffffffff84111561cdc85761cdc861c831565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561cdf75761cdf761c831565b60405283815290508082840185101561ce0f57600080fd5b619f5984602083018561c49a565b600082601f83011261ce2e57600080fd5b617d9e8383516020850161cdad565b60006020828403121561ce4f57600080fd5b815167ffffffffffffffff81111561ce6657600080fd5b617b048482850161ce1d565b6000835161ce8481846020880161c49a565b83519083019061ce9881836020880161c49a565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161ced981601a85016020880161c49a565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161cf1681603384016020880161c49a565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b6001600160a01b03841681526001600160a01b038316602082015260606040820152600061a53f606083018461c4be565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000617d9e608083018461c4be565b60006020828403121561cfd657600080fd5b815167ffffffffffffffff81111561cfed57600080fd5b8201601f8101841361cffe57600080fd5b617b048482516020840161cdad565b6000855161d01f818460208a0161c49a565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161d059816001840160208a0161c49a565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161d09781600284016020890161c49a565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161d0d981600284016020880161c49a565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061d124604083018461c4be565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161d19b81601f85016020870161c49a565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061d208604083018461c4be565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061d25a604083018461c4be565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161d2d181601485016020870161c49a565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061d318604083018561c4be565b8281036020840152617d9a818561c4be565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161d39181600185016020870161c49a565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161d3d781846020870161c49a565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161d48a81604b85016020870161c49a565b91909101604b0192915050565b600060ff821660ff810361d4ad5761d4ad61ca2b565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161d51481602985016020870161c49a565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000617d9e608083018461c4be565b60006020828403121561d57a57600080fd5b815167ffffffffffffffff81111561d59157600080fd5b82016060818503121561d5a357600080fd5b61d5ab61cd84565b81518060030b811461d5bc57600080fd5b8152602082015167ffffffffffffffff81111561d5d857600080fd5b61d5e48682850161ce1d565b602083015250604082015167ffffffffffffffff81111561d60457600080fd5b61d6108682850161ce1d565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161d67c81602185016020870161c49a565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161d86881602185016020880161c49a565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161d8a581602e84016020880161c49a565b01602e01949350505050565b6000825161d8c381846020870161c49a565b9190910192915050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161d51481602985016020870161c49a565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161d98981602285016020870161c49a565b9190910160220192915050565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161d9ce81600e85016020870161c49a565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161daac81601885016020880161c49a565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161dae981601c84016020880161c49a565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161dbef81846020870161c49a565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b8082028115828204841417617b0857617b0861ca2b565b6001815b600184111561dc705780850481111561dc545761dc5461ca2b565b600184161561dc6257908102905b60019390931c92800261dc39565b935093915050565b60008261dc8757506001617b08565b8161dc9457506000617b08565b816001811461dcaa576002811461dcb45761dcd0565b6001915050617b08565b60ff84111561dcc55761dcc561ca2b565b50506001821b617b08565b5060208310610133831016604e8410600b841016171561dcf3575081810a617b08565b61dd00600019848461dc35565b806000190482111561dd145761dd1461ca2b565b029392505050565b6000617d9e838361dc78565b818103600083128015838313168383128216171561b6545761b65461ca2b565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161dd8081601c85016020870161c49a565b91909101601c0192915050565b6000600019820361dda05761dda061ca2b565b5060010190565b60008161ddb65761ddb661ca2b565b506000190190565b6000835161ddd081846020880161c49a565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161de0a81600184016020880161c49a565b0160010194935050505056fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212205f76808fb3dc6dacf4bd766b2d0bf9d6beb64856c952cec8e267368511bd936a64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610e9e806100246000396000f3fe60806040526004361061006e5760003560e01c8063c51316911161004b578063c5131691146100d5578063c9028a36146100f5578063e04d4f9714610115578063f05b6abf1461012857005b8063357fc5a214610077578063676cc054146100975780636ed70169146100c057005b3661007557005b005b34801561008357600080fd5b506100756100923660046106ec565b610148565b6100aa6100a5366004610728565b6101de565b6040516100b79190610823565b60405180910390f35b3480156100cc57600080fd5b50610075610222565b3480156100e157600080fd5b506100756100f03660046106ec565b610257565b34801561010157600080fd5b50610075610110366004610836565b610332565b610075610123366004610996565b61036e565b34801561013457600080fd5b50610075610143366004610a82565b6103b2565b6101506103e7565b61017273ffffffffffffffffffffffffffffffffffffffff831633838661042a565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101d96001600055565b505050565b6040516060907f3658b46bab672c7672b69c2f0feda706eabdb7d2231421c96e9049b2db5e7eee90600090a1506040805160208101909152600081525b9392505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b61025f6103e7565b600061026c600285610b6c565b9050806000036102a8576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102ca73ffffffffffffffffffffffffffffffffffffffff841633848461042a565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101d96001600055565b7f689a5a5cb55e795ffe4cd8b419cd3bb0a3373974c54d25f64e734d7388b93e9b3382604051610363929190610bf0565b60405180910390a150565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa33348585856040516103a5959493929190610ce2565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103a59493929190610d6c565b600260005403610423576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526104bf9085906104c5565b50505050565b60006104e773ffffffffffffffffffffffffffffffffffffffff841683610560565b9050805160001415801561050c57508080602001905181019061050a9190610e2f565b155b156101d9576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061021b83836000846000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105939190610e4c565b60006040518083038185875af1925050503d80600081146105d0576040519150601f19603f3d011682016040523d82523d6000602084013e6105d5565b606091505b50915091506105e58683836105ef565b9695505050505050565b606082610604576105ff8261067e565b61021b565b8151158015610628575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610677576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610557565b508061021b565b80511561068e5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106e757600080fd5b919050565b60008060006060848603121561070157600080fd5b83359250610711602085016106c3565b915061071f604085016106c3565b90509250925092565b6000806000838503604081121561073e57600080fd5b602081121561074c57600080fd5b50839250602084013567ffffffffffffffff81111561076a57600080fd5b8401601f8101861361077b57600080fd5b803567ffffffffffffffff81111561079257600080fd5b8660208284010111156107a457600080fd5b939660209190910195509293505050565b60005b838110156107d05781810151838201526020016107b8565b50506000910152565b600081518084526107f18160208601602086016107b5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061021b60208301846107d9565b60006020828403121561084857600080fd5b813567ffffffffffffffff81111561085f57600080fd5b82016080818503121561021b57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156108e7576108e7610871565b604052919050565b600082601f83011261090057600080fd5b813567ffffffffffffffff81111561091a5761091a610871565b61094b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016108a0565b81815284602083860101111561096057600080fd5b816020850160208301376000918101602001919091529392505050565b80151581146106c057600080fd5b80356106e78161097d565b6000806000606084860312156109ab57600080fd5b833567ffffffffffffffff8111156109c257600080fd5b6109ce868287016108ef565b9350506020840135915060408401356109e68161097d565b809150509250925092565b600067ffffffffffffffff821115610a0b57610a0b610871565b5060051b60200190565b600082601f830112610a2657600080fd5b8135610a39610a34826109f1565b6108a0565b8082825260208201915060208360051b860101925085831115610a5b57600080fd5b602085015b83811015610a78578035835260209283019201610a60565b5095945050505050565b600080600060608486031215610a9757600080fd5b833567ffffffffffffffff811115610aae57600080fd5b8401601f81018613610abf57600080fd5b8035610acd610a34826109f1565b8082825260208201915060208360051b850101925088831115610aef57600080fd5b602084015b83811015610b3157803567ffffffffffffffff811115610b1357600080fd5b610b228b6020838901016108ef565b84525060209283019201610af4565b509550505050602084013567ffffffffffffffff811115610b5157600080fd5b610b5d86828701610a15565b92505061071f6040850161098b565b600082610ba2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015273ffffffffffffffffffffffffffffffffffffffff610c2e836106c3565b16604082015273ffffffffffffffffffffffffffffffffffffffff610c55602084016106c3565b166060820152600080604084013590508060808401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610ca157600080fd5b830160208101903567ffffffffffffffff811115610cbe57600080fd5b803603821315610ccd57600080fd5b608060a08501526105e560c085018284610ba7565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610d1760a08301866107d9565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610d62578151865260209586019590910190600101610d44565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610dff577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610dea8583516107d9565b94506020938401939190910190600101610db0565b505050508281036040840152610e158186610d30565b915050610e26606083018415159052565b95945050505050565b600060208284031215610e4157600080fd5b815161021b8161097d565b60008251610e5e8184602087016107b5565b919091019291505056fea26469706673582212200208dfaef53d7ec7d471b3a513486f45b234e5fb6727c50beff735b8aa974ee464736f6c634300081a0033a264697066735822122025b84b67bd4e84b967ada37e774374f540862c7d987fdaf35edde07b8f988ba864736f6c634300081a0033", } // ERC20CustodyTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/erc20custodyupgradetest.sol/erc20custodyupgradetest.go b/v2/pkg/erc20custodyupgradetest.sol/erc20custodyupgradetest.go index 6e337869a..aa23c9044 100644 --- a/v2/pkg/erc20custodyupgradetest.sol/erc20custodyupgradetest.go +++ b/v2/pkg/erc20custodyupgradetest.sol/erc20custodyupgradetest.go @@ -40,7 +40,7 @@ type RevertContext struct { // ERC20CustodyUpgradeTestMetaData contains all meta data concerning the ERC20CustodyUpgradeTest contract. var ERC20CustodyUpgradeTestMetaData = &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\":\"UPGRADE_INTERFACE_VERSION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WHITELISTER_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\":\"deposit\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"initialize\",\"inputs\":[{\"name\":\"gateway_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"tssAddress_\",\"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\":\"setSupportsLegacy\",\"inputs\":[{\"name\":\"_supportsLegacy\",\"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\":\"supportsLegacy\",\"inputs\":[],\"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\":\"unwhitelist\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateTSSAddress\",\"inputs\":[{\"name\":\"newTSSAddress\",\"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\":\"whitelist\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"whitelisted\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"token\",\"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\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Deposited\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"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\":\"Unwhitelisted\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedCustodyTSSAddress\",\"inputs\":[{\"name\":\"oldTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newTSSAddress\",\"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\":\"Whitelisted\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawn\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawnAndCalled\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"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\":\"WithdrawnAndReverted\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawnV2\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"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\":\"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\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LegacyMethodsNotSupported\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotWhitelisted\",\"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: "0x60a060405230608052348015601357600080fd5b5060805161295861003d60003960008181611928015281816119510152611b2701526129586000f3fe6080604052600436106101c25760003560e01c806385f438c1116100f7578063ad3cb1cc11610095578063d9caed1211610064578063d9caed12146105f6578063e609055e14610616578063e63ab1e914610636578063eab103df1461066a57600080fd5b8063ad3cb1cc14610530578063c0c53b8b14610586578063d547741f146105a6578063d936547e146105c657600080fd5b806399a3c356116100d157806399a3c356146104bb5780639a590427146104db5780639b19251a146104fb578063a217fddf1461051b57600080fd5b806385f438c11461040257806391d1485414610436578063950837aa1461049b57600080fd5b80633f4ba83a11610164578063570618e11161013e578063570618e1146103625780635b112591146103965780635c975abb146103b65780638456cb59146103ed57600080fd5b80633f4ba83a146103255780634f1ef2861461033a57806352d1902d1461034d57600080fd5b8063248a9ca3116101a0578063248a9ca314610256578063252f07bf146102b35780632f2ff15d146102e557806336568abe1461030557600080fd5b806301ffc9a7146101c7578063116191b6146101fc57806321fc65f214610234575b600080fd5b3480156101d357600080fd5b506101e76101e236600461216e565b61068a565b60405190151581526020015b60405180910390f35b34801561020857600080fd5b5060005461021c906001600160a01b031681565b6040516001600160a01b0390911681526020016101f3565b34801561024057600080fd5b5061025461024f36600461220e565b610723565b005b34801561026257600080fd5b506102a5610271366004612281565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101f3565b3480156102bf57600080fd5b506002546101e79074010000000000000000000000000000000000000000900460ff1681565b3480156102f157600080fd5b5061025461030036600461229a565b6108cc565b34801561031157600080fd5b5061025461032036600461229a565b610916565b34801561033157600080fd5b50610254610967565b6102546103483660046122f9565b61099c565b34801561035957600080fd5b506102a56109bb565b34801561036e57600080fd5b506102a57f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a81565b3480156103a257600080fd5b5060025461021c906001600160a01b031681565b3480156103c257600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101e7565b3480156103f957600080fd5b506102546109ea565b34801561040e57600080fd5b506102a57f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b34801561044257600080fd5b506101e761045136600461229a565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156104a757600080fd5b506102546104b6366004612402565b610a1c565b3480156104c757600080fd5b506102546104d636600461241f565b610ba1565b3480156104e757600080fd5b506102546104f6366004612402565b610d4f565b34801561050757600080fd5b50610254610516366004612402565b610e03565b34801561052757600080fd5b506102a5600081565b34801561053c57600080fd5b506105796040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101f391906124e6565b34801561059257600080fd5b506102546105a1366004612537565b610ebd565b3480156105b257600080fd5b506102546105c136600461229a565b6111b7565b3480156105d257600080fd5b506101e76105e1366004612402565b60016020526000908152604090205460ff1681565b34801561060257600080fd5b50610254610611366004612582565b6111fb565b34801561062257600080fd5b506102546106313660046125c3565b611312565b34801561064257600080fd5b506102a57f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b34801561067657600080fd5b50610254610685366004612662565b61155d565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061071d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61072b6115b3565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461075581611634565b61075d61163e565b6001600160a01b03851660009081526001602052604090205460ff166107af576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546107c9906001600160a01b0387811691168661169c565b6000546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690635131ab599061081a9088908a908990899089906004016126c8565b600060405180830381600087803b15801561083457600080fd5b505af1158015610848573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167f6478cbb6e28c0823c691dfd74c01c985634faddd4c401b990fe4ec26277ea8d58686866040516108939392919061270b565b60405180910390a3506108c560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461090681611634565b6109108383611736565b50505050565b6001600160a01b0381163314610958576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109628282611805565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61099181611634565b6109996118ab565b50565b6109a461191d565b6109ad826119ed565b6109b782826119f8565b5050565b60006109c5611b1c565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a1481611634565b610999611b7e565b6000610a2781611634565b6001600160a01b038216610a67576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254610a9e907f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4906001600160a01b0316611805565b50600254610ad6907f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a906001600160a01b0316611805565b50610b017f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483611736565b50610b2c7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a83611736565b50600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0384169081179091556040805182815260208101929092527f4d3470c839d3c4dd664eec934b920c12fe0966e3185103dd40149496815df2b6910160405180910390a15050565b610ba96115b3565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610bd381611634565b610bdb61163e565b6001600160a01b03861660009081526001602052604090205460ff16610c2d576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610c47906001600160a01b0388811691168761169c565b6000546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063aa0c0fc190610c9a9089908b908a908a908a908a906004016127da565b600060405180830381600087803b158015610cb457600080fd5b505af1158015610cc8573d6000803e3d6000fd5b50505050856001600160a01b0316876001600160a01b03167f7b53ec10a80164e60591c43d9c222e9354886981b880a3fba19c9ceb77fb972187878787604051610d159493929190612831565b60405180910390a350610d4760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a610d7981611634565b6001600160a01b038216610db9576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216600081815260016020526040808220805460ff19169055517f51085ddf9ebdded84b76e829eb58c4078e4b5bdf97d9a94723f336039da467919190a25050565b7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a610e2d81611634565b6001600160a01b038216610e6d576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166000818152600160208190526040808320805460ff1916909217909155517faab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a549190a25050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f085750825b905060008267ffffffffffffffff166001148015610f255750303b155b905081158015610f33575080155b15610f6a576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fcb5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0388161580610fe857506001600160a01b038716155b80610ffa57506001600160a01b038616155b15611031576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611039611bd9565b611041611be1565b611049611bd9565b611051611bf1565b600080546001600160a01b03808b167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617835560028054918b169190921617905561109f9087611736565b506110ca7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611736565b506110f57f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e488611736565b506111207f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a87611736565b5061114b7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a88611736565b5083156111ad5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546111f181611634565b6109108383611805565b6112036115b3565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461122d81611634565b61123561163e565b6001600160a01b03831660009081526001602052604090205460ff16611287576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61129b6001600160a01b038416858461169c565b826001600160a01b0316846001600160a01b03167fd4dabfe72081670cc78f2ebda8e2eddaf3feebde6288dcb8fe673b3dc201b5a4846040516112e091815260200190565b60405180910390a35061096260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b61131a6115b3565b61132261163e565b60025474010000000000000000000000000000000000000000900460ff16611376576040517f73cba66300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03841660009081526001602052604090205460ff166113c8576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015611428573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144c919061285d565b90506114636001600160a01b038616333087611c01565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038616907f1dafa057cc5c3bccb5ad974129a2bccd3c74002d9dfd7062404ba9523b18d6ae9089908990859085906370a0823190602401602060405180830381865afa1580156114ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150e919061285d565b6115189190612876565b878760405161152b9594939291906128b0565b60405180910390a250610d4760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b600061156881611634565b506002805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0161162e576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6109998133611c3a565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff161561169a576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040516001600160a01b0383811660248301526044820183905261096291859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611cc7565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166117fb576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556117b13390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061071d565b600091505061071d565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156117fb576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061071d565b6118b3611d43565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806119b657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166119aa7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b1561169a576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006109b781611634565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611a70575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611a6d9181019061285d565b60015b611ab6576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611b12576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611aad565b6109628383611d9e565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461169a576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b8661163e565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258336118ff565b61169a611df4565b611be9611df4565b61169a611e5b565b611bf9611df4565b61169a611e63565b6040516001600160a01b0384811660248301528381166044830152606482018390526109109186918216906323b872dd906084016116c9565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166109b7576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611aad565b6000611cdc6001600160a01b03841683611e96565b90508051600014158015611d01575080806020019051810190611cff91906128e9565b155b15610962576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401611aad565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1661169a576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611da782611eab565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611dec576109628282611f53565b6109b7611fc9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661169a576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611710611df4565b611e6b611df4565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff19169055565b6060611ea483836000612001565b9392505050565b806001600160a01b03163b600003611efa576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611aad565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611f709190612906565b600060405180830381855af49150503d8060008114611fab576040519150601f19603f3d011682016040523d82523d6000602084013e611fb0565b606091505b5091509150611fc08583836120b7565b95945050505050565b341561169a576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608147101561203f576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401611aad565b600080856001600160a01b0316848660405161205b9190612906565b60006040518083038185875af1925050503d8060008114612098576040519150601f19603f3d011682016040523d82523d6000602084013e61209d565b606091505b50915091506120ad8683836120b7565b9695505050505050565b6060826120cc576120c78261212c565b611ea4565b81511580156120e357506001600160a01b0384163b155b15612125576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611aad565b5080611ea4565b80511561213c5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561218057600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611ea457600080fd5b6001600160a01b038116811461099957600080fd5b60008083601f8401126121d757600080fd5b50813567ffffffffffffffff8111156121ef57600080fd5b60208301915083602082850101111561220757600080fd5b9250929050565b60008060008060006080868803121561222657600080fd5b8535612231816121b0565b94506020860135612241816121b0565b935060408601359250606086013567ffffffffffffffff81111561226457600080fd5b612270888289016121c5565b969995985093965092949392505050565b60006020828403121561229357600080fd5b5035919050565b600080604083850312156122ad57600080fd5b8235915060208301356122bf816121b0565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561230c57600080fd5b8235612317816121b0565b9150602083013567ffffffffffffffff81111561233357600080fd5b8301601f8101851361234457600080fd5b803567ffffffffffffffff81111561235e5761235e6122ca565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156123ca576123ca6122ca565b6040528181528282016020018710156123e257600080fd5b816020840160208301376000602083830101528093505050509250929050565b60006020828403121561241457600080fd5b8135611ea4816121b0565b60008060008060008060a0878903121561243857600080fd5b8635612443816121b0565b95506020870135612453816121b0565b945060408701359350606087013567ffffffffffffffff81111561247657600080fd5b61248289828a016121c5565b909450925050608087013567ffffffffffffffff8111156124a257600080fd5b87016080818a0312156124b457600080fd5b809150509295509295509295565b60005b838110156124dd5781810151838201526020016124c5565b50506000910152565b60208152600082518060208401526125058160408501602087016124c2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008060006060848603121561254c57600080fd5b8335612557816121b0565b92506020840135612567816121b0565b91506040840135612577816121b0565b809150509250925092565b60008060006060848603121561259757600080fd5b83356125a2816121b0565b925060208401356125b2816121b0565b929592945050506040919091013590565b600080600080600080608087890312156125dc57600080fd5b863567ffffffffffffffff8111156125f357600080fd5b6125ff89828a016121c5565b9097509550506020870135612613816121b0565b935060408701359250606087013567ffffffffffffffff81111561263657600080fd5b61264289828a016121c5565b979a9699509497509295939492505050565b801515811461099957600080fd5b60006020828403121561267457600080fd5b8135611ea481612654565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015260806060820152600061270060808301848661267f565b979650505050505050565b838152604060208201526000611fc060408301848661267f565b60008135612732816121b0565b6001600160a01b03168352602082013561274b816121b0565b6001600160a01b03166020840152604082810135908401526060820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe101811261279957600080fd5b820160208101903567ffffffffffffffff8111156127b657600080fd5b8036038213156127c557600080fd5b60806060860152611fc060808601828461267f565b6001600160a01b03871681526001600160a01b038616602082015284604082015260a06060820152600061281260a08301858761267f565b82810360808401526128248185612725565b9998505050505050505050565b84815260606020820152600061284b60608301858761267f565b82810360408401526127008185612725565b60006020828403121561286f57600080fd5b5051919050565b8181038181111561071d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6060815260006128c460608301878961267f565b85602084015282810360408401526128dd81858761267f565b98975050505050505050565b6000602082840312156128fb57600080fd5b8151611ea481612654565b600082516129188184602087016124c2565b919091019291505056fea26469706673582212209677fb20584c2da2d9821bbbc7955ade138c175013e15534e533f173d0e2389c64736f6c634300081a0033", + Bin: "0x60a060405230608052348015601357600080fd5b5060805161295861003d60003960008181611928015281816119510152611b2701526129586000f3fe6080604052600436106101c25760003560e01c806385f438c1116100f7578063ad3cb1cc11610095578063d9caed1211610064578063d9caed12146105f6578063e609055e14610616578063e63ab1e914610636578063eab103df1461066a57600080fd5b8063ad3cb1cc14610530578063c0c53b8b14610586578063d547741f146105a6578063d936547e146105c657600080fd5b806399a3c356116100d157806399a3c356146104bb5780639a590427146104db5780639b19251a146104fb578063a217fddf1461051b57600080fd5b806385f438c11461040257806391d1485414610436578063950837aa1461049b57600080fd5b80633f4ba83a11610164578063570618e11161013e578063570618e1146103625780635b112591146103965780635c975abb146103b65780638456cb59146103ed57600080fd5b80633f4ba83a146103255780634f1ef2861461033a57806352d1902d1461034d57600080fd5b8063248a9ca3116101a0578063248a9ca314610256578063252f07bf146102b35780632f2ff15d146102e557806336568abe1461030557600080fd5b806301ffc9a7146101c7578063116191b6146101fc57806321fc65f214610234575b600080fd5b3480156101d357600080fd5b506101e76101e236600461216e565b61068a565b60405190151581526020015b60405180910390f35b34801561020857600080fd5b5060005461021c906001600160a01b031681565b6040516001600160a01b0390911681526020016101f3565b34801561024057600080fd5b5061025461024f36600461220e565b610723565b005b34801561026257600080fd5b506102a5610271366004612281565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101f3565b3480156102bf57600080fd5b506002546101e79074010000000000000000000000000000000000000000900460ff1681565b3480156102f157600080fd5b5061025461030036600461229a565b6108cc565b34801561031157600080fd5b5061025461032036600461229a565b610916565b34801561033157600080fd5b50610254610967565b6102546103483660046122f9565b61099c565b34801561035957600080fd5b506102a56109bb565b34801561036e57600080fd5b506102a57f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a81565b3480156103a257600080fd5b5060025461021c906001600160a01b031681565b3480156103c257600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101e7565b3480156103f957600080fd5b506102546109ea565b34801561040e57600080fd5b506102a57f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b34801561044257600080fd5b506101e761045136600461229a565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156104a757600080fd5b506102546104b6366004612402565b610a1c565b3480156104c757600080fd5b506102546104d636600461241f565b610ba1565b3480156104e757600080fd5b506102546104f6366004612402565b610d4f565b34801561050757600080fd5b50610254610516366004612402565b610e03565b34801561052757600080fd5b506102a5600081565b34801561053c57600080fd5b506105796040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101f391906124e6565b34801561059257600080fd5b506102546105a1366004612537565b610ebd565b3480156105b257600080fd5b506102546105c136600461229a565b6111b7565b3480156105d257600080fd5b506101e76105e1366004612402565b60016020526000908152604090205460ff1681565b34801561060257600080fd5b50610254610611366004612582565b6111fb565b34801561062257600080fd5b506102546106313660046125c3565b611312565b34801561064257600080fd5b506102a57f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b34801561067657600080fd5b50610254610685366004612662565b61155d565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061071d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61072b6115b3565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461075581611634565b61075d61163e565b6001600160a01b03851660009081526001602052604090205460ff166107af576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546107c9906001600160a01b0387811691168661169c565b6000546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690635131ab599061081a9088908a908990899089906004016126c8565b600060405180830381600087803b15801561083457600080fd5b505af1158015610848573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167f6478cbb6e28c0823c691dfd74c01c985634faddd4c401b990fe4ec26277ea8d58686866040516108939392919061270b565b60405180910390a3506108c560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461090681611634565b6109108383611736565b50505050565b6001600160a01b0381163314610958576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109628282611805565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61099181611634565b6109996118ab565b50565b6109a461191d565b6109ad826119ed565b6109b782826119f8565b5050565b60006109c5611b1c565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a1481611634565b610999611b7e565b6000610a2781611634565b6001600160a01b038216610a67576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254610a9e907f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4906001600160a01b0316611805565b50600254610ad6907f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a906001600160a01b0316611805565b50610b017f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483611736565b50610b2c7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a83611736565b50600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0384169081179091556040805182815260208101929092527f4d3470c839d3c4dd664eec934b920c12fe0966e3185103dd40149496815df2b6910160405180910390a15050565b610ba96115b3565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610bd381611634565b610bdb61163e565b6001600160a01b03861660009081526001602052604090205460ff16610c2d576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610c47906001600160a01b0388811691168761169c565b6000546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063aa0c0fc190610c9a9089908b908a908a908a908a906004016127da565b600060405180830381600087803b158015610cb457600080fd5b505af1158015610cc8573d6000803e3d6000fd5b50505050856001600160a01b0316876001600160a01b03167f7b53ec10a80164e60591c43d9c222e9354886981b880a3fba19c9ceb77fb972187878787604051610d159493929190612831565b60405180910390a350610d4760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a610d7981611634565b6001600160a01b038216610db9576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216600081815260016020526040808220805460ff19169055517f51085ddf9ebdded84b76e829eb58c4078e4b5bdf97d9a94723f336039da467919190a25050565b7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a610e2d81611634565b6001600160a01b038216610e6d576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166000818152600160208190526040808320805460ff1916909217909155517faab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a549190a25050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f085750825b905060008267ffffffffffffffff166001148015610f255750303b155b905081158015610f33575080155b15610f6a576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fcb5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0388161580610fe857506001600160a01b038716155b80610ffa57506001600160a01b038616155b15611031576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611039611bd9565b611041611be1565b611049611bd9565b611051611bf1565b600080546001600160a01b03808b167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617835560028054918b169190921617905561109f9087611736565b506110ca7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611736565b506110f57f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e488611736565b506111207f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a87611736565b5061114b7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a88611736565b5083156111ad5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546111f181611634565b6109108383611805565b6112036115b3565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461122d81611634565b61123561163e565b6001600160a01b03831660009081526001602052604090205460ff16611287576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61129b6001600160a01b038416858461169c565b826001600160a01b0316846001600160a01b03167fd4dabfe72081670cc78f2ebda8e2eddaf3feebde6288dcb8fe673b3dc201b5a4846040516112e091815260200190565b60405180910390a35061096260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b61131a6115b3565b61132261163e565b60025474010000000000000000000000000000000000000000900460ff16611376576040517f73cba66300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03841660009081526001602052604090205460ff166113c8576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015611428573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144c919061285d565b90506114636001600160a01b038616333087611c01565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038616907f1dafa057cc5c3bccb5ad974129a2bccd3c74002d9dfd7062404ba9523b18d6ae9089908990859085906370a0823190602401602060405180830381865afa1580156114ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150e919061285d565b6115189190612876565b878760405161152b9594939291906128b0565b60405180910390a250610d4760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b600061156881611634565b506002805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0161162e576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6109998133611c3a565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff161561169a576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040516001600160a01b0383811660248301526044820183905261096291859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611cc7565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166117fb576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556117b13390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061071d565b600091505061071d565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156117fb576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061071d565b6118b3611d43565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806119b657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166119aa7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b1561169a576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006109b781611634565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611a70575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611a6d9181019061285d565b60015b611ab6576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611b12576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611aad565b6109628383611d9e565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461169a576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b8661163e565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258336118ff565b61169a611df4565b611be9611df4565b61169a611e5b565b611bf9611df4565b61169a611e63565b6040516001600160a01b0384811660248301528381166044830152606482018390526109109186918216906323b872dd906084016116c9565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166109b7576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611aad565b6000611cdc6001600160a01b03841683611e96565b90508051600014158015611d01575080806020019051810190611cff91906128e9565b155b15610962576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401611aad565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1661169a576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611da782611eab565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611dec576109628282611f53565b6109b7611fc9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661169a576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611710611df4565b611e6b611df4565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff19169055565b6060611ea483836000612001565b9392505050565b806001600160a01b03163b600003611efa576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611aad565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611f709190612906565b600060405180830381855af49150503d8060008114611fab576040519150601f19603f3d011682016040523d82523d6000602084013e611fb0565b606091505b5091509150611fc08583836120b7565b95945050505050565b341561169a576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608147101561203f576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401611aad565b600080856001600160a01b0316848660405161205b9190612906565b60006040518083038185875af1925050503d8060008114612098576040519150601f19603f3d011682016040523d82523d6000602084013e61209d565b606091505b50915091506120ad8683836120b7565b9695505050505050565b6060826120cc576120c78261212c565b611ea4565b81511580156120e357506001600160a01b0384163b155b15612125576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611aad565b5080611ea4565b80511561213c5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561218057600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611ea457600080fd5b6001600160a01b038116811461099957600080fd5b60008083601f8401126121d757600080fd5b50813567ffffffffffffffff8111156121ef57600080fd5b60208301915083602082850101111561220757600080fd5b9250929050565b60008060008060006080868803121561222657600080fd5b8535612231816121b0565b94506020860135612241816121b0565b935060408601359250606086013567ffffffffffffffff81111561226457600080fd5b612270888289016121c5565b969995985093965092949392505050565b60006020828403121561229357600080fd5b5035919050565b600080604083850312156122ad57600080fd5b8235915060208301356122bf816121b0565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561230c57600080fd5b8235612317816121b0565b9150602083013567ffffffffffffffff81111561233357600080fd5b8301601f8101851361234457600080fd5b803567ffffffffffffffff81111561235e5761235e6122ca565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156123ca576123ca6122ca565b6040528181528282016020018710156123e257600080fd5b816020840160208301376000602083830101528093505050509250929050565b60006020828403121561241457600080fd5b8135611ea4816121b0565b60008060008060008060a0878903121561243857600080fd5b8635612443816121b0565b95506020870135612453816121b0565b945060408701359350606087013567ffffffffffffffff81111561247657600080fd5b61248289828a016121c5565b909450925050608087013567ffffffffffffffff8111156124a257600080fd5b87016080818a0312156124b457600080fd5b809150509295509295509295565b60005b838110156124dd5781810151838201526020016124c5565b50506000910152565b60208152600082518060208401526125058160408501602087016124c2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008060006060848603121561254c57600080fd5b8335612557816121b0565b92506020840135612567816121b0565b91506040840135612577816121b0565b809150509250925092565b60008060006060848603121561259757600080fd5b83356125a2816121b0565b925060208401356125b2816121b0565b929592945050506040919091013590565b600080600080600080608087890312156125dc57600080fd5b863567ffffffffffffffff8111156125f357600080fd5b6125ff89828a016121c5565b9097509550506020870135612613816121b0565b935060408701359250606087013567ffffffffffffffff81111561263657600080fd5b61264289828a016121c5565b979a9699509497509295939492505050565b801515811461099957600080fd5b60006020828403121561267457600080fd5b8135611ea481612654565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015260806060820152600061270060808301848661267f565b979650505050505050565b838152604060208201526000611fc060408301848661267f565b60008135612732816121b0565b6001600160a01b03168352602082013561274b816121b0565b6001600160a01b03166020840152604082810135908401526060820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe101811261279957600080fd5b820160208101903567ffffffffffffffff8111156127b657600080fd5b8036038213156127c557600080fd5b60806060860152611fc060808601828461267f565b6001600160a01b03871681526001600160a01b038616602082015284604082015260a06060820152600061281260a08301858761267f565b82810360808401526128248185612725565b9998505050505050505050565b84815260606020820152600061284b60608301858761267f565b82810360408401526127008185612725565b60006020828403121561286f57600080fd5b5051919050565b8181038181111561071d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6060815260006128c460608301878961267f565b85602084015282810360408401526128dd81858761267f565b98975050505050505050565b6000602082840312156128fb57600080fd5b8151611ea481612654565b600082516129188184602087016124c2565b919091019291505056fea2646970667358221220fbb55424e7ee194b89ec113d95e0692cfe9170bbcc6967609a29f30f15ae2be764736f6c634300081a0033", } // ERC20CustodyUpgradeTestABI 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 36c1d3da3..64a7c8200 100644 --- a/v2/pkg/gatewayevm.sol/gatewayevm.go +++ b/v2/pkg/gatewayevm.sol/gatewayevm.go @@ -54,7 +54,7 @@ type RevertOptions struct { // 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\":\"MAX_PAYLOAD_SIZE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"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\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\":\"execute\",\"inputs\":[{\"name\":\"messageContext\",\"type\":\"tuple\",\"internalType\":\"structMessageContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"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\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"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\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"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\":\"updateTSSAddress\",\"inputs\":[{\"name\":\"newTSSAddress\",\"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\":\"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\":\"Called\",\"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\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposited\",\"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\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"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\":\"UpdatedGatewayTSSAddress\",\"inputs\":[{\"name\":\"oldTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newTSSAddress\",\"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\":\"ConnectorInitialized\",\"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\":\"NotAllowedToCallOnCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotAllowedToCallOnRevert\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotWhitelistedInCustody\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PayloadSizeExceeded\",\"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: "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051613c976100fd600039600081816124fe0152818161252701526129950152613c976000f3fe6080604052600436106102345760003560e01c80635d62c86011610138578063aa0c0fc1116100b0578063cb7ba8e51161007f578063d547741f11610064578063d547741f146106db578063dda79b75146106fb578063e63ab1e91461071b57600080fd5b8063cb7ba8e5146106a8578063d09e3b78146106bb57600080fd5b8063aa0c0fc1146105ff578063ad3cb1cc1461061f578063ae7a3a6f14610668578063c0c53b8b1461068857600080fd5b806391d1485411610107578063a217fddf116100ec578063a217fddf146105a0578063a2ba1934146105b5578063a783c789146105cb57600080fd5b806391d148541461051b578063950837aa1461058057600080fd5b80635d62c860146104ac578063726ac97c146104e0578063744b9b8b146104f35780638456cb591461050657600080fd5b806336568abe116101cb5780635131ab591161019a57806357bec62f1161017f57806357bec62f146104355780635b112591146104555780635c975abb1461047557600080fd5b80635131ab591461040057806352d1902d1461042057600080fd5b806336568abe146103a557806338e22527146103c55780633f4ba83a146103d85780634f1ef286146103ed57600080fd5b80631cff79cd116102075780631cff79cd146102d057806321e093b1146102f0578063248a9ca3146103285780632f2ff15d1461038557600080fd5b806301ffc9a71461023957806310188aef1461026e578063102614b0146102905780631becceb4146102b0575b600080fd5b34801561024557600080fd5b5061025961025436600461317c565b61074f565b60405190151581526020015b60405180910390f35b34801561027a57600080fd5b5061028e6102893660046131da565b6107e8565b005b34801561029c57600080fd5b5061028e6102ab36600461320d565b6108c3565b3480156102bc57600080fd5b5061028e6102cb3660046132be565b610a07565b6102e36102de366004613325565b610ad8565b60405161026591906133c8565b3480156102fc57600080fd5b50600354610310906001600160a01b031681565b6040516001600160a01b039091168152602001610265565b34801561033457600080fd5b506103776103433660046133db565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610265565b34801561039157600080fd5b5061028e6103a03660046133f4565b610b90565b3480156103b157600080fd5b5061028e6103c03660046133f4565b610bd4565b6102e36103d3366004613420565b610c25565b3480156103e457600080fd5b5061028e610d11565b61028e6103fb366004613511565b610d46565b34801561040c57600080fd5b5061028e61041b3660046135a2565b610d65565b34801561042c57600080fd5b50610377611065565b34801561044157600080fd5b50600254610310906001600160a01b031681565b34801561046157600080fd5b50600154610310906001600160a01b031681565b34801561048157600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610259565b3480156104b857600080fd5b506103777f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b61028e6104ee366004613611565b611094565b61028e6105013660046132be565b611256565b34801561051257600080fd5b5061028e611425565b34801561052757600080fd5b506102596105363660046133f4565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561058c57600080fd5b5061028e61059b3660046131da565b611457565b3480156105ac57600080fd5b50610377600081565b3480156105c157600080fd5b5061037761040081565b3480156105d757600080fd5b506103777f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561060b57600080fd5b5061028e61061a366004613671565b61156e565b34801561062b57600080fd5b506102e36040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b34801561067457600080fd5b5061028e6106833660046131da565b611717565b34801561069457600080fd5b5061028e6106a3366004613709565b6117f2565b61028e6106b636600461374c565b611ab9565b3480156106c757600080fd5b5061028e6106d63660046137bf565b611ca1565b3480156106e757600080fd5b5061028e6106f63660046133f4565b611dec565b34801561070757600080fd5b50600054610310906001600160a01b031681565b34801561072757600080fd5b506103777f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806107e257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60006107f381611e30565b6001600160a01b03821661081a5760405163d92e233d60e01b815260040160405180910390fd5b6002546001600160a01b03161561085d576040517f0c8dc01600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108877f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611e3a565b5050600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6108cb611f27565b6108d3611f85565b8260000361090d576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166109345760405163d92e233d60e01b815260040160405180910390fd5b610400610944606083018361384a565b9050111561097e576040517f386691aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610989338385612006565b836001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c8585856040516109d0939291906139c9565b60405180910390a3610a0160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050565b610a0f611f27565b610a17611f85565b6001600160a01b038416610a3e5760405163d92e233d60e01b815260040160405180910390fd5b610400610a4e606083018361384a565b610a599150846139ff565b1115610a91576040517f386691aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167fd34634f30f94a646fdf4ce7078f38fc5fa0d3f0b193658facea4e3e43330d9748585856040516109d093929190613a39565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610b0481611e30565b610b0c611f27565b6001600160a01b038516610b335760405163d92e233d60e01b815260040160405180910390fd5b6000610b40868686612269565b9050856001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f348787604051610b7f93929190613a5f565b60405180910390a295945050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610bca81611e30565b610a018383611e3a565b6001600160a01b0381163314610c16576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c20828261231c565b505050565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610c5181611e30565b610c59611f27565b610c61611f85565b6001600160a01b038516610c885760405163d92e233d60e01b815260040160405180910390fd5b6060610c96878787876123e0565b9050856001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f348787604051610cd593929190613a5f565b60405180910390a29150610d0860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50949350505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610d3b81611e30565b610d43612463565b50565b610d4e6124f3565b610d57826125c3565b610d6182826125ce565b5050565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9610d8f81611e30565b610d97611f27565b610d9f611f85565b83600003610dd9576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038516610e005760405163d92e233d60e01b815260040160405180910390fd5b610e0a86866126d4565b610e40576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905287169063095ea7b3906044016020604051808303816000875af1158015610ea8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ecc9190613a79565b610f02576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f0d858484612269565b50610f1886866126d4565b610f4e576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610fae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd29190613a96565b90508015610fe457610fe48782612764565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b738287878760405161102b93929190613a5f565b60405180910390a35061105d60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b600061106f61298a565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b61109c611f27565b6110a4611f85565b346000036110de576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166111055760405163d92e233d60e01b815260040160405180910390fd5b610400611115606083018361384a565b9050111561114f576040517f386691aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d806000811461119c576040519150601f19603f3d011682016040523d82523d6000602084013e6111a1565b606091505b50509050806111dc576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c34600086604051611224939291906139c9565b60405180910390a350610d6160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b61125e611f27565b611266611f85565b346000036112a0576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166112c75760405163d92e233d60e01b815260040160405180910390fd5b6104006112d7606083018361384a565b6112e29150846139ff565b111561131a576040517f386691aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114611367576040519150601f19603f3d011682016040523d82523d6000602084013e61136c565b606091505b50509050806113a7576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c3460008888886040516113f3959493929190613aaf565b60405180910390a350610a0160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61144f81611e30565b610d436129ec565b600061146281611e30565b6001600160a01b0382166114895760405163d92e233d60e01b815260040160405180910390fd5b6001546114c0907f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb906001600160a01b031661231c565b506114eb7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb83611e3a565b50600154604080516001600160a01b03928316815291841660208301527f3a7b8d6372645f474fe60c115a2ef21421306a3ed4664fa0023c461413c08579910160405180910390a150600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b961159881611e30565b6115a0611f27565b6115a8611f85565b846000036115e2576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0386166116095760405163d92e233d60e01b815260040160405180910390fd5b61161d6001600160a01b0388168787612a65565b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063c9028a3690611662908590600401613b52565b600060405180830381600087803b15801561167c57600080fd5b505af1158015611690573d6000803e3d6000fd5b50505050866001600160a01b0316866001600160a01b03167fde7603a6ed5d07c9f43597ccfe9043d15b66d3284f0de321f5cdf56329e6e035878787876040516116dd9493929190613b65565b60405180910390a361170e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050505050565b600061172281611e30565b6001600160a01b0382166117495760405163d92e233d60e01b815260040160405180910390fd5b6000546001600160a01b03161561178c576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117b67f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611e3a565b5050600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff1660008115801561183d5750825b905060008267ffffffffffffffff16600114801561185a5750303b155b905081158015611868575080155b1561189f576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156119005784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038816158061191d57506001600160a01b038716155b1561193b5760405163d92e233d60e01b815260040160405180910390fd5b611943612ad9565b61194b612ae1565b611953612ad9565b61195b612af1565b611966600087611e3a565b506119917f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611e3a565b506119bc7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a89611e3a565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a16179055611a1a7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb89611e3a565b50600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0389161790558315611aaf5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb611ae381611e30565b611aeb611f27565b611af3611f85565b6001600160a01b038516611b1a5760405163d92e233d60e01b815260040160405180910390fd5b6000856001600160a01b03163460405160006040518083038185875af1925050503d8060008114611b67576040519150601f19603f3d011682016040523d82523d6000602084013e611b6c565b606091505b5050905080611ba7576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063c9028a3690611bec908690600401613b52565b600060405180830381600087803b158015611c0657600080fd5b505af1158015611c1a573d6000803e3d6000fd5b5050505060006001600160a01b0316866001600160a01b03167fde7603a6ed5d07c9f43597ccfe9043d15b66d3284f0de321f5cdf56329e6e03534888888604051611c689493929190613b65565b60405180910390a350611c9a60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b611ca9611f27565b611cb1611f85565b84600003611ceb576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038616611d125760405163d92e233d60e01b815260040160405180910390fd5b610400611d22606083018361384a565b611d2d9150846139ff565b1115611d65576040517f386691aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d70338587612006565b856001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c8787878787604051611dbb959493929190613aaf565b60405180910390a361105d60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154611e2681611e30565b610a01838361231c565b610d438133612b01565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611f1d576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611ed33390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506107e2565b60009150506107e2565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611f83576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01612000576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6003546001600160a01b039081169083160361216a576120316001600160a01b038316843084612b8e565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561209d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c19190613a79565b6120f7576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561215657600080fd5b505af115801561170e573d6000803e3d6000fd5b6000546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301529091169063d936547e90602401602060405180830381865afa1580156121cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f19190613a79565b612227576040517fac2175f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610c20906001600160a01b038481169186911684612b8e565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60606122758383612bc7565b600080856001600160a01b0316348686604051612293929190613b9c565b60006040518083038185875af1925050503d80600081146122d0576040519150601f19603f3d011682016040523d82523d6000602084013e6122d5565b606091505b509150915081612311576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611f1d576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506107e2565b6060836001600160a01b031663676cc054348786866040518563ffffffff1660e01b815260040161241393929190613bac565b60006040518083038185885af1158015612431573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261245a9190810190613bd7565b95945050505050565b61246b612cc7565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061258c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166125807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611f83576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d6181611e30565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612628575060408051601f3d908101601f1916820190925261262591810190613a96565b60015b61266e576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146126ca576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401612665565b610c208383612d22565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015612740573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123159190613a79565b6003546001600160a01b03908116908316036128b3576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af11580156127e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061280a9190613a79565b612840576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561289f57600080fd5b505af115801561105d573d6000803e3d6000fd5b6000546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301529091169063d936547e90602401602060405180830381865afa158015612916573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061293a9190613a79565b612970576040517fac2175f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610d61906001600160a01b03848116911683612a65565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611f83576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6129f4611f27565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258336124d5565b6040516001600160a01b03838116602483015260448201839052610c2091859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612d78565b611f83612df4565b612ae9612df4565b611f83612e5b565b612af9612df4565b611f83612e63565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610d61576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401612665565b6040516001600160a01b038481166024830152838116604483015260648201839052610a019186918216906323b872dd90608401612a92565b60048110610d615781357f98933fac000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000821601612c4c576040517fed69977500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f36fd75ca000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000821601610c20576040517ff3459a9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611f83576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612d2b82612eb4565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115612d7057610c208282612f5c565b610d61612fc9565b6000612d8d6001600160a01b03841683613001565b90508051600014158015612db2575080806020019051810190612db09190613a79565b155b15610c20576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401612665565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611f83576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612243612df4565b612e6b612df4565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b806001600160a01b03163b600003612f03576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401612665565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051612f799190613c45565b600060405180830381855af49150503d8060008114612fb4576040519150601f19603f3d011682016040523d82523d6000602084013e612fb9565b606091505b509150915061245a85838361300f565b3415611f83576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061231583836000613084565b6060826130245761301f8261313a565b612315565b815115801561303b57506001600160a01b0384163b155b1561307d576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401612665565b5080612315565b6060814710156130c2576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401612665565b600080856001600160a01b031684866040516130de9190613c45565b60006040518083038185875af1925050503d806000811461311b576040519150601f19603f3d011682016040523d82523d6000602084013e613120565b606091505b509150915061313086838361300f565b9695505050505050565b80511561314a5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561318e57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461231557600080fd5b80356001600160a01b03811681146131d557600080fd5b919050565b6000602082840312156131ec57600080fd5b612315826131be565b600060a0828403121561320757600080fd5b50919050565b6000806000806080858703121561322357600080fd5b61322c856131be565b935060208501359250613241604086016131be565b9150606085013567ffffffffffffffff81111561325d57600080fd5b613269878288016131f5565b91505092959194509250565b60008083601f84011261328757600080fd5b50813567ffffffffffffffff81111561329f57600080fd5b6020830191508360208285010111156132b757600080fd5b9250929050565b600080600080606085870312156132d457600080fd5b6132dd856131be565b9350602085013567ffffffffffffffff8111156132f957600080fd5b61330587828801613275565b909450925050604085013567ffffffffffffffff81111561325d57600080fd5b60008060006040848603121561333a57600080fd5b613343846131be565b9250602084013567ffffffffffffffff81111561335f57600080fd5b61336b86828701613275565b9497909650939450505050565b60005b8381101561339357818101518382015260200161337b565b50506000910152565b600081518084526133b4816020860160208601613378565b601f01601f19169290920160200192915050565b602081526000612315602083018461339c565b6000602082840312156133ed57600080fd5b5035919050565b6000806040838503121561340757600080fd5b82359150613417602084016131be565b90509250929050565b600080600080848603606081121561343757600080fd5b602081121561344557600080fd5b50849350613455602086016131be565b9250604085013567ffffffffffffffff81111561347157600080fd5b61347d87828801613275565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156134e1576134e1613489565b604052919050565b600067ffffffffffffffff82111561350357613503613489565b50601f01601f191660200190565b6000806040838503121561352457600080fd5b61352d836131be565b9150602083013567ffffffffffffffff81111561354957600080fd5b8301601f8101851361355a57600080fd5b803561356d613568826134e9565b6134b8565b81815286602083850101111561358257600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000806000806000608086880312156135ba57600080fd5b6135c3866131be565b94506135d1602087016131be565b935060408601359250606086013567ffffffffffffffff8111156135f457600080fd5b61360088828901613275565b969995985093965092949392505050565b6000806040838503121561362457600080fd5b61362d836131be565b9150602083013567ffffffffffffffff81111561364957600080fd5b613655858286016131f5565b9150509250929050565b60006080828403121561320757600080fd5b60008060008060008060a0878903121561368a57600080fd5b613693876131be565b95506136a1602088016131be565b945060408701359350606087013567ffffffffffffffff8111156136c457600080fd5b6136d089828a01613275565b909450925050608087013567ffffffffffffffff8111156136f057600080fd5b6136fc89828a0161365f565b9150509295509295509295565b60008060006060848603121561371e57600080fd5b613727846131be565b9250613735602085016131be565b9150613743604085016131be565b90509250925092565b6000806000806060858703121561376257600080fd5b61376b856131be565b9350602085013567ffffffffffffffff81111561378757600080fd5b61379387828801613275565b909450925050604085013567ffffffffffffffff8111156137b357600080fd5b6132698782880161365f565b60008060008060008060a087890312156137d857600080fd5b6137e1876131be565b9550602087013594506137f6604088016131be565b9350606087013567ffffffffffffffff81111561381257600080fd5b61381e89828a01613275565b909450925050608087013567ffffffffffffffff81111561383e57600080fd5b6136fc89828a016131f5565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261387f57600080fd5b83018035915067ffffffffffffffff82111561389a57600080fd5b6020019150368190038213156132b757600080fd5b8015158114610d4357600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126138f257600080fd5b830160208101925035905067ffffffffffffffff81111561391257600080fd5b8036038213156132b757600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6001600160a01b0361395d826131be565b16825260006020820135613970816138af565b151560208401526001600160a01b0361398b604084016131be565b16604084015261399e60608301836138bd565b60a060608601526139b360a086018284613921565b6080948501359590940194909452509092915050565b8381526001600160a01b0383166020820152608060408201526000608082015260a06060820152600061245a60a083018461394c565b808201808211156107e2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b604081526000613a4d604083018587613921565b8281036020840152613130818561394c565b83815260406020820152600061245a604083018486613921565b600060208284031215613a8b57600080fd5b8151612315816138af565b600060208284031215613aa857600080fd5b5051919050565b8581526001600160a01b0385166020820152608060408201526000613ad8608083018587613921565b8281036060840152613aea818561394c565b98975050505050505050565b6001600160a01b03613b07826131be565b1682526001600160a01b03613b1e602083016131be565b166020830152604081810135908301526000613b3d60608301836138bd565b6080606086015261245a608086018284613921565b6020815260006123156020830184613af6565b848152606060208201526000613b7f606083018587613921565b8281036040840152613b918185613af6565b979650505050505050565b8183823760009101908152919050565b6001600160a01b03613bbd856131be565b16815260406020820152600061245a604083018486613921565b600060208284031215613be957600080fd5b815167ffffffffffffffff811115613c0057600080fd5b8201601f81018413613c1157600080fd5b8051613c1f613568826134e9565b818152856020838501011115613c3457600080fd5b61245a826020830160208601613378565b60008251613c57818460208701613378565b919091019291505056fea26469706673582212204af7d907eb7384a343a470cb14b7159285ba82bd5aa99a6a1edd6a85f0300b2664736f6c634300081a0033", + Bin: "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051613c976100fd600039600081816124fe0152818161252701526129950152613c976000f3fe6080604052600436106102345760003560e01c80635d62c86011610138578063aa0c0fc1116100b0578063cb7ba8e51161007f578063d547741f11610064578063d547741f146106db578063dda79b75146106fb578063e63ab1e91461071b57600080fd5b8063cb7ba8e5146106a8578063d09e3b78146106bb57600080fd5b8063aa0c0fc1146105ff578063ad3cb1cc1461061f578063ae7a3a6f14610668578063c0c53b8b1461068857600080fd5b806391d1485411610107578063a217fddf116100ec578063a217fddf146105a0578063a2ba1934146105b5578063a783c789146105cb57600080fd5b806391d148541461051b578063950837aa1461058057600080fd5b80635d62c860146104ac578063726ac97c146104e0578063744b9b8b146104f35780638456cb591461050657600080fd5b806336568abe116101cb5780635131ab591161019a57806357bec62f1161017f57806357bec62f146104355780635b112591146104555780635c975abb1461047557600080fd5b80635131ab591461040057806352d1902d1461042057600080fd5b806336568abe146103a557806338e22527146103c55780633f4ba83a146103d85780634f1ef286146103ed57600080fd5b80631cff79cd116102075780631cff79cd146102d057806321e093b1146102f0578063248a9ca3146103285780632f2ff15d1461038557600080fd5b806301ffc9a71461023957806310188aef1461026e578063102614b0146102905780631becceb4146102b0575b600080fd5b34801561024557600080fd5b5061025961025436600461317c565b61074f565b60405190151581526020015b60405180910390f35b34801561027a57600080fd5b5061028e6102893660046131da565b6107e8565b005b34801561029c57600080fd5b5061028e6102ab36600461320d565b6108c3565b3480156102bc57600080fd5b5061028e6102cb3660046132be565b610a07565b6102e36102de366004613325565b610ad8565b60405161026591906133c8565b3480156102fc57600080fd5b50600354610310906001600160a01b031681565b6040516001600160a01b039091168152602001610265565b34801561033457600080fd5b506103776103433660046133db565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610265565b34801561039157600080fd5b5061028e6103a03660046133f4565b610b90565b3480156103b157600080fd5b5061028e6103c03660046133f4565b610bd4565b6102e36103d3366004613420565b610c25565b3480156103e457600080fd5b5061028e610d11565b61028e6103fb366004613511565b610d46565b34801561040c57600080fd5b5061028e61041b3660046135a2565b610d65565b34801561042c57600080fd5b50610377611065565b34801561044157600080fd5b50600254610310906001600160a01b031681565b34801561046157600080fd5b50600154610310906001600160a01b031681565b34801561048157600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610259565b3480156104b857600080fd5b506103777f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b61028e6104ee366004613611565b611094565b61028e6105013660046132be565b611256565b34801561051257600080fd5b5061028e611425565b34801561052757600080fd5b506102596105363660046133f4565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561058c57600080fd5b5061028e61059b3660046131da565b611457565b3480156105ac57600080fd5b50610377600081565b3480156105c157600080fd5b5061037761040081565b3480156105d757600080fd5b506103777f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561060b57600080fd5b5061028e61061a366004613671565b61156e565b34801561062b57600080fd5b506102e36040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b34801561067457600080fd5b5061028e6106833660046131da565b611717565b34801561069457600080fd5b5061028e6106a3366004613709565b6117f2565b61028e6106b636600461374c565b611ab9565b3480156106c757600080fd5b5061028e6106d63660046137bf565b611ca1565b3480156106e757600080fd5b5061028e6106f63660046133f4565b611dec565b34801561070757600080fd5b50600054610310906001600160a01b031681565b34801561072757600080fd5b506103777f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806107e257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60006107f381611e30565b6001600160a01b03821661081a5760405163d92e233d60e01b815260040160405180910390fd5b6002546001600160a01b03161561085d576040517f0c8dc01600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108877f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611e3a565b5050600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6108cb611f27565b6108d3611f85565b8260000361090d576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166109345760405163d92e233d60e01b815260040160405180910390fd5b610400610944606083018361384a565b9050111561097e576040517f386691aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610989338385612006565b836001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c8585856040516109d0939291906139c9565b60405180910390a3610a0160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050565b610a0f611f27565b610a17611f85565b6001600160a01b038416610a3e5760405163d92e233d60e01b815260040160405180910390fd5b610400610a4e606083018361384a565b610a599150846139ff565b1115610a91576040517f386691aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167fd34634f30f94a646fdf4ce7078f38fc5fa0d3f0b193658facea4e3e43330d9748585856040516109d093929190613a39565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610b0481611e30565b610b0c611f27565b6001600160a01b038516610b335760405163d92e233d60e01b815260040160405180910390fd5b6000610b40868686612269565b9050856001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f348787604051610b7f93929190613a5f565b60405180910390a295945050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610bca81611e30565b610a018383611e3a565b6001600160a01b0381163314610c16576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c20828261231c565b505050565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610c5181611e30565b610c59611f27565b610c61611f85565b6001600160a01b038516610c885760405163d92e233d60e01b815260040160405180910390fd5b6060610c96878787876123e0565b9050856001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f348787604051610cd593929190613a5f565b60405180910390a29150610d0860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50949350505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610d3b81611e30565b610d43612463565b50565b610d4e6124f3565b610d57826125c3565b610d6182826125ce565b5050565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9610d8f81611e30565b610d97611f27565b610d9f611f85565b83600003610dd9576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038516610e005760405163d92e233d60e01b815260040160405180910390fd5b610e0a86866126d4565b610e40576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905287169063095ea7b3906044016020604051808303816000875af1158015610ea8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ecc9190613a79565b610f02576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f0d858484612269565b50610f1886866126d4565b610f4e576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610fae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd29190613a96565b90508015610fe457610fe48782612764565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b738287878760405161102b93929190613a5f565b60405180910390a35061105d60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b600061106f61298a565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b61109c611f27565b6110a4611f85565b346000036110de576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166111055760405163d92e233d60e01b815260040160405180910390fd5b610400611115606083018361384a565b9050111561114f576040517f386691aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d806000811461119c576040519150601f19603f3d011682016040523d82523d6000602084013e6111a1565b606091505b50509050806111dc576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c34600086604051611224939291906139c9565b60405180910390a350610d6160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b61125e611f27565b611266611f85565b346000036112a0576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166112c75760405163d92e233d60e01b815260040160405180910390fd5b6104006112d7606083018361384a565b6112e29150846139ff565b111561131a576040517f386691aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114611367576040519150601f19603f3d011682016040523d82523d6000602084013e61136c565b606091505b50509050806113a7576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c3460008888886040516113f3959493929190613aaf565b60405180910390a350610a0160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61144f81611e30565b610d436129ec565b600061146281611e30565b6001600160a01b0382166114895760405163d92e233d60e01b815260040160405180910390fd5b6001546114c0907f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb906001600160a01b031661231c565b506114eb7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb83611e3a565b50600154604080516001600160a01b03928316815291841660208301527f3a7b8d6372645f474fe60c115a2ef21421306a3ed4664fa0023c461413c08579910160405180910390a150600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b961159881611e30565b6115a0611f27565b6115a8611f85565b846000036115e2576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0386166116095760405163d92e233d60e01b815260040160405180910390fd5b61161d6001600160a01b0388168787612a65565b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063c9028a3690611662908590600401613b52565b600060405180830381600087803b15801561167c57600080fd5b505af1158015611690573d6000803e3d6000fd5b50505050866001600160a01b0316866001600160a01b03167fde7603a6ed5d07c9f43597ccfe9043d15b66d3284f0de321f5cdf56329e6e035878787876040516116dd9493929190613b65565b60405180910390a361170e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050505050565b600061172281611e30565b6001600160a01b0382166117495760405163d92e233d60e01b815260040160405180910390fd5b6000546001600160a01b03161561178c576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117b67f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611e3a565b5050600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff1660008115801561183d5750825b905060008267ffffffffffffffff16600114801561185a5750303b155b905081158015611868575080155b1561189f576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156119005784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038816158061191d57506001600160a01b038716155b1561193b5760405163d92e233d60e01b815260040160405180910390fd5b611943612ad9565b61194b612ae1565b611953612ad9565b61195b612af1565b611966600087611e3a565b506119917f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611e3a565b506119bc7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a89611e3a565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a16179055611a1a7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb89611e3a565b50600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0389161790558315611aaf5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb611ae381611e30565b611aeb611f27565b611af3611f85565b6001600160a01b038516611b1a5760405163d92e233d60e01b815260040160405180910390fd5b6000856001600160a01b03163460405160006040518083038185875af1925050503d8060008114611b67576040519150601f19603f3d011682016040523d82523d6000602084013e611b6c565b606091505b5050905080611ba7576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063c9028a3690611bec908690600401613b52565b600060405180830381600087803b158015611c0657600080fd5b505af1158015611c1a573d6000803e3d6000fd5b5050505060006001600160a01b0316866001600160a01b03167fde7603a6ed5d07c9f43597ccfe9043d15b66d3284f0de321f5cdf56329e6e03534888888604051611c689493929190613b65565b60405180910390a350611c9a60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b611ca9611f27565b611cb1611f85565b84600003611ceb576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038616611d125760405163d92e233d60e01b815260040160405180910390fd5b610400611d22606083018361384a565b611d2d9150846139ff565b1115611d65576040517f386691aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d70338587612006565b856001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c8787878787604051611dbb959493929190613aaf565b60405180910390a361105d60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154611e2681611e30565b610a01838361231c565b610d438133612b01565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611f1d576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611ed33390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506107e2565b60009150506107e2565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611f83576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01612000576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6003546001600160a01b039081169083160361216a576120316001600160a01b038316843084612b8e565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561209d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c19190613a79565b6120f7576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561215657600080fd5b505af115801561170e573d6000803e3d6000fd5b6000546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301529091169063d936547e90602401602060405180830381865afa1580156121cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f19190613a79565b612227576040517fac2175f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610c20906001600160a01b038481169186911684612b8e565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60606122758383612bc7565b600080856001600160a01b0316348686604051612293929190613b9c565b60006040518083038185875af1925050503d80600081146122d0576040519150601f19603f3d011682016040523d82523d6000602084013e6122d5565b606091505b509150915081612311576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611f1d576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506107e2565b6060836001600160a01b031663676cc054348786866040518563ffffffff1660e01b815260040161241393929190613bac565b60006040518083038185885af1158015612431573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261245a9190810190613bd7565b95945050505050565b61246b612cc7565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061258c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166125807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611f83576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d6181611e30565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612628575060408051601f3d908101601f1916820190925261262591810190613a96565b60015b61266e576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146126ca576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401612665565b610c208383612d22565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015612740573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123159190613a79565b6003546001600160a01b03908116908316036128b3576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af11580156127e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061280a9190613a79565b612840576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561289f57600080fd5b505af115801561105d573d6000803e3d6000fd5b6000546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301529091169063d936547e90602401602060405180830381865afa158015612916573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061293a9190613a79565b612970576040517fac2175f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610d61906001600160a01b03848116911683612a65565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611f83576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6129f4611f27565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258336124d5565b6040516001600160a01b03838116602483015260448201839052610c2091859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612d78565b611f83612df4565b612ae9612df4565b611f83612e5b565b612af9612df4565b611f83612e63565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610d61576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401612665565b6040516001600160a01b038481166024830152838116604483015260648201839052610a019186918216906323b872dd90608401612a92565b60048110610d615781357f98933fac000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000821601612c4c576040517fed69977500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f36fd75ca000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000821601610c20576040517ff3459a9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611f83576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612d2b82612eb4565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115612d7057610c208282612f5c565b610d61612fc9565b6000612d8d6001600160a01b03841683613001565b90508051600014158015612db2575080806020019051810190612db09190613a79565b155b15610c20576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401612665565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611f83576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612243612df4565b612e6b612df4565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b806001600160a01b03163b600003612f03576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401612665565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051612f799190613c45565b600060405180830381855af49150503d8060008114612fb4576040519150601f19603f3d011682016040523d82523d6000602084013e612fb9565b606091505b509150915061245a85838361300f565b3415611f83576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061231583836000613084565b6060826130245761301f8261313a565b612315565b815115801561303b57506001600160a01b0384163b155b1561307d576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401612665565b5080612315565b6060814710156130c2576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401612665565b600080856001600160a01b031684866040516130de9190613c45565b60006040518083038185875af1925050503d806000811461311b576040519150601f19603f3d011682016040523d82523d6000602084013e613120565b606091505b509150915061313086838361300f565b9695505050505050565b80511561314a5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561318e57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461231557600080fd5b80356001600160a01b03811681146131d557600080fd5b919050565b6000602082840312156131ec57600080fd5b612315826131be565b600060a0828403121561320757600080fd5b50919050565b6000806000806080858703121561322357600080fd5b61322c856131be565b935060208501359250613241604086016131be565b9150606085013567ffffffffffffffff81111561325d57600080fd5b613269878288016131f5565b91505092959194509250565b60008083601f84011261328757600080fd5b50813567ffffffffffffffff81111561329f57600080fd5b6020830191508360208285010111156132b757600080fd5b9250929050565b600080600080606085870312156132d457600080fd5b6132dd856131be565b9350602085013567ffffffffffffffff8111156132f957600080fd5b61330587828801613275565b909450925050604085013567ffffffffffffffff81111561325d57600080fd5b60008060006040848603121561333a57600080fd5b613343846131be565b9250602084013567ffffffffffffffff81111561335f57600080fd5b61336b86828701613275565b9497909650939450505050565b60005b8381101561339357818101518382015260200161337b565b50506000910152565b600081518084526133b4816020860160208601613378565b601f01601f19169290920160200192915050565b602081526000612315602083018461339c565b6000602082840312156133ed57600080fd5b5035919050565b6000806040838503121561340757600080fd5b82359150613417602084016131be565b90509250929050565b600080600080848603606081121561343757600080fd5b602081121561344557600080fd5b50849350613455602086016131be565b9250604085013567ffffffffffffffff81111561347157600080fd5b61347d87828801613275565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156134e1576134e1613489565b604052919050565b600067ffffffffffffffff82111561350357613503613489565b50601f01601f191660200190565b6000806040838503121561352457600080fd5b61352d836131be565b9150602083013567ffffffffffffffff81111561354957600080fd5b8301601f8101851361355a57600080fd5b803561356d613568826134e9565b6134b8565b81815286602083850101111561358257600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000806000806000608086880312156135ba57600080fd5b6135c3866131be565b94506135d1602087016131be565b935060408601359250606086013567ffffffffffffffff8111156135f457600080fd5b61360088828901613275565b969995985093965092949392505050565b6000806040838503121561362457600080fd5b61362d836131be565b9150602083013567ffffffffffffffff81111561364957600080fd5b613655858286016131f5565b9150509250929050565b60006080828403121561320757600080fd5b60008060008060008060a0878903121561368a57600080fd5b613693876131be565b95506136a1602088016131be565b945060408701359350606087013567ffffffffffffffff8111156136c457600080fd5b6136d089828a01613275565b909450925050608087013567ffffffffffffffff8111156136f057600080fd5b6136fc89828a0161365f565b9150509295509295509295565b60008060006060848603121561371e57600080fd5b613727846131be565b9250613735602085016131be565b9150613743604085016131be565b90509250925092565b6000806000806060858703121561376257600080fd5b61376b856131be565b9350602085013567ffffffffffffffff81111561378757600080fd5b61379387828801613275565b909450925050604085013567ffffffffffffffff8111156137b357600080fd5b6132698782880161365f565b60008060008060008060a087890312156137d857600080fd5b6137e1876131be565b9550602087013594506137f6604088016131be565b9350606087013567ffffffffffffffff81111561381257600080fd5b61381e89828a01613275565b909450925050608087013567ffffffffffffffff81111561383e57600080fd5b6136fc89828a016131f5565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261387f57600080fd5b83018035915067ffffffffffffffff82111561389a57600080fd5b6020019150368190038213156132b757600080fd5b8015158114610d4357600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126138f257600080fd5b830160208101925035905067ffffffffffffffff81111561391257600080fd5b8036038213156132b757600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6001600160a01b0361395d826131be565b16825260006020820135613970816138af565b151560208401526001600160a01b0361398b604084016131be565b16604084015261399e60608301836138bd565b60a060608601526139b360a086018284613921565b6080948501359590940194909452509092915050565b8381526001600160a01b0383166020820152608060408201526000608082015260a06060820152600061245a60a083018461394c565b808201808211156107e2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b604081526000613a4d604083018587613921565b8281036020840152613130818561394c565b83815260406020820152600061245a604083018486613921565b600060208284031215613a8b57600080fd5b8151612315816138af565b600060208284031215613aa857600080fd5b5051919050565b8581526001600160a01b0385166020820152608060408201526000613ad8608083018587613921565b8281036060840152613aea818561394c565b98975050505050505050565b6001600160a01b03613b07826131be565b1682526001600160a01b03613b1e602083016131be565b166020830152604081810135908301526000613b3d60608301836138bd565b6080606086015261245a608086018284613921565b6020815260006123156020830184613af6565b848152606060208201526000613b7f606083018587613921565b8281036040840152613b918185613af6565b979650505050505050565b8183823760009101908152919050565b6001600160a01b03613bbd856131be565b16815260406020820152600061245a604083018486613921565b600060208284031215613be957600080fd5b815167ffffffffffffffff811115613c0057600080fd5b8201601f81018413613c1157600080fd5b8051613c1f613568826134e9565b818152856020838501011115613c3457600080fd5b61245a826020830160208601613378565b60008251613c57818460208701613378565b919091019291505056fea26469706673582212200a3675b249955f182e0fafe14d8d343b86cd879e1616dbd351a545cd70b6c85964736f6c634300081a0033", } // 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 1144add08..3c3055ff0 100644 --- a/v2/pkg/gatewayevm.t.sol/gatewayevminboundtest.go +++ b/v2/pkg/gatewayevm.t.sol/gatewayevminboundtest.go @@ -67,7 +67,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\":\"testCallWithPayloadFailsIfDestinationIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testCallWithPayloadFailsIfPayloadSizeExceeded\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositERC20ToCustody\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositERC20ToCustodyFailsIfPayloadSizeExceeded\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositERC20ToCustodyFailsIfTokenIsNotWhitelisted\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositERC20ToCustodyWithPayload\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositERC20ToCustodyWithPayloadFailsIfPayloadSizeExceeded\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositERC20ToCustodyWithPayloadFailsIfTokenIsNotWhitelisted\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositEthToTss\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositEthToTssWithPayload\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositEthToTssWithPayloadFailsIfPayloadSizeExceeded\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZetaToConnector\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testFailDepositERC20ToCustodyIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testFailDepositERC20ToCustodyIfReceiverIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testFailDepositERC20ToCustodyWithPayloadIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testFailDepositERC20ToCustodyWithPayloadIfReceiverIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testFailDepositEthToTssIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testFailDepositEthToTssIfPayloadSizeExceeded\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testFailDepositEthToTssIfReceiverIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testFailDepositEthToTssWithPayloadIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testFailDepositEthToTssWithPayloadIfReceiverIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Called\",\"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\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposited\",\"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\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\":\"ReceivedOnCall\",\"inputs\":[],\"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\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedGatewayTSSAddress\",\"inputs\":[{\"name\":\"oldTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"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\":\"ConnectorInitialized\",\"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\":\"NotAllowedToCallOnCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotAllowedToCallOnRevert\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotWhitelistedInCustody\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PayloadSizeExceeded\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055620f4240602c55348015603357600080fd5b5061c022806100436000396000f3fe608060405234801561001057600080fd5b50600436106102415760003560e01c8063916a17c611610145578063ba414fa6116100bd578063e20c9f711161008c578063e85c5a0711610071578063e85c5a07146103a2578063f96c02df146103aa578063fa7626d4146103b257600080fd5b8063e20c9f7114610392578063e306a9781461039a57600080fd5b8063ba414fa614610362578063bb93f11e1461037a578063c13d738f14610382578063d896e2611461038a57600080fd5b8063aa030c1c11610114578063b1409f71116100f9578063b1409f711461034a578063b284906314610352578063b5508aa91461035a57600080fd5b8063aa030c1c1461033a578063b0464fdc1461034257600080fd5b8063916a17c61461030d57806395cd0445146103225780639fd1e5971461032a578063a48abc2a1461033257600080fd5b80633e5e3c23116101d857806351da903d116101a757806366d9a9a01161018c57806366d9a9a0146102db5780637478fda0146102f057806385226c81146102f857600080fd5b806351da903d146102cb5780636459542a146102d357600080fd5b80633e5e3c23146102ab5780633f7286f4146102b3578063466f332e146102bb5780634ce25c0a146102c357600080fd5b80631806a9a5116102145780631806a9a5146102685780631ed7831c146102705780632ade38801461028e57806330f7c04f146102a357600080fd5b806305a898e21461024657806306978ca3146102505780630724d8e3146102585780630a9254e414610260575b600080fd5b61024e6103bf565b005b61024e610576565b61024e61068e565b61024e610842565b61024e61138b565b610278611488565b6040516102859190618722565b60405180910390f35b6102966114ea565b60405161028591906187be565b61024e61162c565b610278611a9f565b610278611aff565b61024e611b5f565b61024e611e51565b61024e6120ed565b61024e61224e565b6102e3612647565b6040516102859190618924565b61024e6127c9565b6103006128cc565b60405161028591906189c2565b61031561299c565b6040516102859190618a39565b61024e612a97565b61024e612ded565b61024e61300f565b61024e613203565b6103156133c0565b61024e6134bb565b61024e61376d565b61030061397b565b61036a613a4b565b6040519015158152602001610285565b61024e613b1f565b61024e613c16565b61024e613d0d565b610278613e88565b61024e613ee8565b61024e6141ab565b61024e61442c565b601f5461036a9060ff1681565b6026546040516001600160a01b03909116602482015260019060009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb3906104b7906004016020808252600b908201527f5a65726f41646472657373000000000000000000000000000000000000000000604082015260600190565b600060405180830381600087803b1580156104d157600080fd5b505af11580156104e5573d6000803e3d6000fd5b50506020546023546040517fd09e3b780000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063d09e3b7893506105409260009288929116908790602890600401618c0c565b600060405180830381600087803b15801561055a57600080fd5b505af115801561056e573d6000803e3d6000fd5b505050505050565b6040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f496e73756666696369656e74455448416d6f756e7400000000000000000000006044820152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390606401600060405180830381600087803b15801561060c57600080fd5b505af1158015610620573d6000803e3d6000fd5b50506020546026546040517f726ac97c0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063726ac97c93508592610675921690602890600401618c61565b6000604051808303818588803b15801561055a57600080fd5b6027546020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039182166084820152620186a092919091163190737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561072a57600080fd5b505af115801561073e573d6000803e3d6000fd5b50506026546025546040516001600160a01b039283169450911691507fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c9061078d908690600090602890618c83565b60405180910390a36020546026546040517f726ac97c0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169263726ac97c9286926107e89290911690602890600401618c61565b6000604051808303818588803b15801561080157600080fd5b505af1158015610815573d6000803e3d6000fd5b50506027546001600160a01b031631925061083d915061083790508484618ce8565b82614542565b505050565b602580547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602680548216611234179055602780549091166156781790556040516108949061864f565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610919573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831617905560275460405191169081906109629061865c565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015610995573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c000000000000000000000000000000000000602082015260275460255492519086169481019490945260448401929092529092166064820152610a8791906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc0c53b8b000000000000000000000000000000000000000000000000000000001790526145c1565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff000000000000000000000000000000000000000090911681178255604080518082018252601081527f4552433230437573746f64792e736f6c000000000000000000000000000000009381019390935260275460255491516024810193909352841660448301529092166064830152610b5791608401610a2a565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602180549190920483167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116179055604080518082018252601a81527f5a657461436f6e6e6563746f724e6f6e4e61746976652e736f6c00000000000060208083019190915254602480546027546025549551938716928401929092528516604483015284166064820152919092166084820152610c90919060a40160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff8c8765e000000000000000000000000000000000000000000000000000000001790526145c1565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602280549190920483167fffffffffffffffffffffffff00000000000000000000000000000000000000009091161790556027546040517fca669fa700000000000000000000000000000000000000000000000000000000815291166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015610d6857600080fd5b505af1158015610d7c573d6000803e3d6000fd5b5050602480546027546022546040517f15d57fd40000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152908216938101939093521692506315d57fd49150604401600060405180830381600087803b158015610def57600080fd5b505af1158015610e03573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610e8757600080fd5b505af1158015610e9b573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610f1157600080fd5b505af1158015610f25573d6000803e3d6000fd5b50506020546021546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b158015610f8b57600080fd5b505af1158015610f9f573d6000803e3d6000fd5b50506020546022546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b15801561100557600080fd5b505af1158015611019573d6000803e3d6000fd5b50506021546023546040517f9b19251a0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015291169250639b19251a9150602401600060405180830381600087803b15801561107f57600080fd5b505af1158015611093573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156110f557600080fd5b505af1158015611109573d6000803e3d6000fd5b5050602354602554602c546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810191909152911692506340c10f199150604401600060405180830381600087803b15801561117a57600080fd5b505af115801561118e573d6000803e3d6000fd5b50506027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561120457600080fd5b505af1158015611218573d6000803e3d6000fd5b5050602254602554602c546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810191909152600060448201529116925063106e62909150606401600060405180830381600087803b15801561129057600080fd5b505af11580156112a4573d6000803e3d6000fd5b50506040805160a08101825261032180825260016020808401918252838501928352845190810190945260008085526060840185905260808401528251602880549251151574010000000000000000000000000000000000000000027fffffffffffffffffffffff0000000000000000000000000000000000000000009093166001600160a01b0392831617929092178255915160298054919093167fffffffffffffffffffffffff000000000000000000000000000000000000000091909116179091559093509150602a9061137b9082618d71565b5060808201518160030155905050565b6040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a65726f416464726573730000000000000000000000000000000000000000006044820152600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390606401600060405180830381600087803b15801561142157600080fd5b505af1158015611435573d6000803e3d6000fd5b50506020546040517f726ac97c0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116925063726ac97c9150839061067590600090602890600401618c61565b606060168054806020026020016040519081016040528092919081815260200182805480156114e057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116114c2575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561162357600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561160c57838290600052602060002001805461157f90618ad0565b80601f01602080910402602001604051908101604052809291908181526020018280546115ab90618ad0565b80156115f85780601f106115cd576101008083540402835291602001916115f8565b820191906000526020600020905b8154815290600101906020018083116115db57829003601f168201915b505050505081526020019060010190611560565b50505050815250508152602001906001019061150e565b50505050905090565b6023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09260009216906370a0823190602401602060405180830381865afa158015611698573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116bc9190618e30565b90506116c9600082614542565b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052602354905491517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015260248101879052929350169063095ea7b3906044016020604051808303816000875af11580156117ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d09190618e49565b506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561185f57600080fd5b505af1158015611873573d6000803e3d6000fd5b50506026546025546023546040516001600160a01b03938416955091831693507fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c926118c9928992909116908790602890618e6b565b60405180910390a36020546026546023546040517fd09e3b780000000000000000000000000000000000000000000000000000000081526001600160a01b039384169363d09e3b789361192d93908216928992909116908790602890600401618c0c565b600060405180830381600087803b15801561194757600080fd5b505af115801561195b573d6000803e3d6000fd5b50506023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156119c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119eb9190618e30565b90506119f78482614542565b6023546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611a61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a859190618e30565b9050611a9885602c546108379190618ea5565b5050505050565b606060188054806020026020016040519081016040528092919081815260200182805480156114e0576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116114c2575050505050905090565b606060178054806020026020016040519081016040528092919081815260200182805480156114e0576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116114c2575050505050905090565b60208054604080517fa2ba19340000000000000000000000000000000000000000000000000000000081529051620186a0936000936002936001600160a01b039091169263a2ba1934926004808401939192918290030181865afa158015611bcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bef9190618e30565b611bf99190618eb8565b67ffffffffffffffff811115611c1157611c11618cfb565b6040519080825280601f01601f191660200182016040528015611c3b576020820181803683370190505b5060208054604080517fa2ba193400000000000000000000000000000000000000000000000000000000815290519394506002936001600160a01b039092169263a2ba1934926004808401938290030181865afa158015611ca0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cc49190618e30565b611cce9190618eb8565b611cd9906001618ce8565b67ffffffffffffffff811115611cf157611cf1618cfb565b6040519080825280601f01601f191660200182016040528015611d1b576020820181803683370190505b50602a90611d299082618d71565b506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f386691aa000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015b600060405180830381600087803b158015611db057600080fd5b505af1158015611dc4573d6000803e3d6000fd5b50506020546026546040517f744b9b8b0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063744b9b8b93508692611e1b9216908690602890600401618ef3565b6000604051808303818588803b158015611e3457600080fd5b505af1158015611e48573d6000803e3d6000fd5b50505050505050565b6023546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a06024820181905292919091169063095ea7b3906044016020604051808303816000875af1158015611ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eea9190618e49565b5060208054604080517fa2ba193400000000000000000000000000000000000000000000000000000000815290516001600160a01b039092169263a2ba1934926004808401938290030181865afa158015611f49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f6d9190618e30565b611f78906001618ce8565b67ffffffffffffffff811115611f9057611f90618cfb565b6040519080825280601f01601f191660200182016040528015611fba576020820181803683370190505b50602a90611fc89082618d71565b506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f386691aa000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015b600060405180830381600087803b15801561204f57600080fd5b505af1158015612063573d6000803e3d6000fd5b50506020546026546023546040517f102614b00000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063102614b094506120bf939283169287921690602890600401618f27565b600060405180830381600087803b1580156120d957600080fd5b505af1158015611a98573d6000803e3d6000fd5b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156121e757600080fd5b505af11580156121fb573d6000803e3d6000fd5b50506020546040517f1becceb40000000000000000000000000000000000000000000000000000000081526001600160a01b039091169250631becceb491506120bf906000908590602890600401618ef3565b6023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09260009216906370a0823190602401602060405180830381865afa1580156122ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122de9190618e30565b90506122eb600082614542565b6023546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810185905291169063095ea7b3906044016020604051808303816000875af1158015612359573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061237d9190618e49565b506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561240c57600080fd5b505af1158015612420573d6000803e3d6000fd5b50506026546025546023546040516001600160a01b03938416955091831693507fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c9261247492889290911690602890618c83565b60405180910390a36020546026546023546040517f102614b00000000000000000000000000000000000000000000000000000000081526001600160a01b039384169363102614b0936124d69390821692889290911690602890600401618f27565b600060405180830381600087803b1580156124f057600080fd5b505af1158015612504573d6000803e3d6000fd5b50506023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015612570573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125949190618e30565b90506125a08382614542565b6023546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801561260a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061262e9190618e30565b905061264184602c546108379190618ea5565b50505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015611623578382906000526020600020906002020160405180604001604052908160008201805461269e90618ad0565b80601f01602080910402602001604051908101604052809291908181526020018280546126ca90618ad0565b80156127175780601f106126ec57610100808354040283529160200191612717565b820191906000526020600020905b8154815290600101906020018083116126fa57829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156127b157602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161275e5790505b5050505050815250508152602001906001019061266b565b6040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a65726f416464726573730000000000000000000000000000000000000000006044820152600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390606401600060405180830381600087803b15801561285f57600080fd5b505af1158015612873573d6000803e3d6000fd5b50506020546023546040517f102614b00000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063102614b093506120bf926000928792911690602890600401618f27565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101561162357838290600052602060002001805461290f90618ad0565b80601f016020809104026020016040519081016040528092919081815260200182805461293b90618ad0565b80156129885780601f1061295d57610100808354040283529160200191612988565b820191906000526020600020905b81548152906001019060200180831161296b57829003601f168201915b5050505050815260200190600101906128f0565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156116235760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015612a7f57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411612a2c5790505b505050505081525050815260200190600101906129c0565b60208054604080517fa2ba19340000000000000000000000000000000000000000000000000000000081529051620186a0936000936002936001600160a01b039091169263a2ba1934926004808401939192918290030181865afa158015612b03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b279190618e30565b612b319190618eb8565b67ffffffffffffffff811115612b4957612b49618cfb565b6040519080825280601f01601f191660200182016040528015612b73576020820181803683370190505b5060208054604080517fa2ba193400000000000000000000000000000000000000000000000000000000815290519394506002936001600160a01b039092169263a2ba1934926004808401938290030181865afa158015612bd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bfc9190618e30565b612c069190618eb8565b612c11906001618ce8565b67ffffffffffffffff811115612c2957612c29618cfb565b6040519080825280601f01601f191660200182016040528015612c53576020820181803683370190505b50602a90612c619082618d71565b506023546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810185905291169063095ea7b3906044016020604051808303816000875af1158015612cd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf49190618e49565b506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f386691aa000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015b600060405180830381600087803b158015612d7b57600080fd5b505af1158015612d8f573d6000803e3d6000fd5b50506020546026546023546040517fd09e3b780000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063d09e3b7894506105409392831692889216908790602890600401618c0c565b6027546026546040516001600160a01b039182166024820152620186a09291909116319060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015612efe57600080fd5b505af1158015612f12573d6000803e3d6000fd5b50506026546025546040516001600160a01b039283169450911691507fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c90612f639087906000908790602890618e6b565b60405180910390a36020546026546040517f744b9b8b0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169263744b9b8b928792612fc092909116908690602890600401618ef3565b6000604051808303818588803b158015612fd957600080fd5b505af1158015612fed573d6000803e3d6000fd5b50506027546001600160a01b0316319250612641915061083790508585618ce8565b60208054604080517fa2ba193400000000000000000000000000000000000000000000000000000000815290516001600160a01b039092169263a2ba1934926004808401938290030181865afa15801561306d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130919190618e30565b61309c906001618ce8565b67ffffffffffffffff8111156130b4576130b4618cfb565b6040519080825280601f01601f1916602001820160405280156130de576020820181803683370190505b50602a906130ec9082618d71565b506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f5061796c6f616453697a654578636565646564000000000000000000000000006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390606401600060405180830381600087803b15801561318057600080fd5b505af1158015613194573d6000803e3d6000fd5b50506020546026546040517f726ac97c0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063726ac97c93506001926131ea921690602890600401618c61565b6000604051808303818588803b1580156120d957600080fd5b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561330657600080fd5b505af115801561331a573d6000803e3d6000fd5b50506026546025546040516001600160a01b039283169450911691507fd34634f30f94a646fdf4ce7078f38fc5fa0d3f0b193658facea4e3e43330d97490613366908590602890618f5e565b60405180910390a36020546026546040517f1becceb40000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692631becceb4926120bf929116908590602890600401618ef3565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156116235760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156134a357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116134505790505b505050505081525050815260200190600101906133e4565b60208054604080517fa2ba193400000000000000000000000000000000000000000000000000000000815290516000936002936001600160a01b03169263a2ba193492600480830193928290030181865afa15801561351e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135429190618e30565b61354c9190618eb8565b67ffffffffffffffff81111561356457613564618cfb565b6040519080825280601f01601f19166020018201604052801561358e576020820181803683370190505b5060208054604080517fa2ba193400000000000000000000000000000000000000000000000000000000815290519394506002936001600160a01b039092169263a2ba1934926004808401938290030181865afa1580156135f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136179190618e30565b6136219190618eb8565b61362c906001618ce8565b67ffffffffffffffff81111561364457613644618cfb565b6040519080825280601f01601f19166020018201604052801561366e576020820181803683370190505b50602a9061367c9082618d71565b506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f386691aa000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561370257600080fd5b505af1158015613716573d6000803e3d6000fd5b50506020546026546040517f1becceb40000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631becceb493506120bf92909116908590602890600401618ef3565b6023546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a06024820181905292919091169063095ea7b3906044016020604051808303816000875af11580156137e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138069190618e49565b506025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561387957600080fd5b505af115801561388d573d6000803e3d6000fd5b50506021546023546040517f9a5904270000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015291169250639a5904279150602401600060405180830381600087803b1580156138f357600080fd5b505af1158015613907573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fac2175f1000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401612035565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156116235783829060005260206000200180546139be90618ad0565b80601f01602080910402602001604051908101604052809291908181526020018280546139ea90618ad0565b8015613a375780601f10613a0c57610100808354040283529160200191613a37565b820191906000526020600020905b815481529060010190602001808311613a1a57829003601f168201915b50505050508152602001906001019061399f565b60085460009060ff1615613a63575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015613af4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b189190618e30565b1415905090565b6026546040516001600160a01b039091166024820152600090819060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390612d619060040160208082526017908201527f496e73756666696369656e744552433230416d6f756e74000000000000000000604082015260600190565b6026546040516001600160a01b039091166024820152600090819060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390611d969060040160208082526015908201527f496e73756666696369656e74455448416d6f756e740000000000000000000000604082015260600190565b6026546040516001600160a01b03909116602482015260019060009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390613e05906004016020808252600b908201527f5a65726f41646472657373000000000000000000000000000000000000000000604082015260600190565b600060405180830381600087803b158015613e1f57600080fd5b505af1158015613e33573d6000803e3d6000fd5b50506020546040517f744b9b8b0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116925063744b9b8b91508490611e1b906000908690602890600401618ef3565b606060158054806020026020016040519081016040528092919081815260200182805480156114e0576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116114c2575050505050905090565b602480546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a093810184905291169063095ea7b3906044016020604051808303816000875af1158015613f5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f7e9190618e49565b506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561400d57600080fd5b505af1158015614021573d6000803e3d6000fd5b50506026546025546024546040516001600160a01b03938416955091831693507fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c9261407592879290911690602890618c83565b60405180910390a36020546026546024546040517f102614b00000000000000000000000000000000000000000000000000000000081526001600160a01b039384169363102614b0936140d79390821692879290911690602890600401618f27565b600060405180830381600087803b1580156140f157600080fd5b505af1158015614105573d6000803e3d6000fd5b5050602480546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015614170573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141949190618e30565b90506141a782602c546108379190618ea5565b5050565b6026546040516001600160a01b039091166024820152620186a09060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052602354905491517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015260248101869052929350169063095ea7b3906044016020604051808303816000875af1158015614293573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142b79190618e49565b506025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561432a57600080fd5b505af115801561433e573d6000803e3d6000fd5b50506021546023546040517f9a5904270000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015291169250639a5904279150602401600060405180830381600087803b1580156143a457600080fd5b505af11580156143b8573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fac2175f1000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401612d61565b6023546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260006024820181905292919091169063095ea7b3906044016020604051808303816000875af115801561449f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144c39190618e49565b506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e73756666696369656e744552433230416d6f756e740000000000000000006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390606401612035565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b1580156145ad57600080fd5b505afa15801561056e573d6000803e3d6000fd5b60006145cb618669565b6145d68484836145e0565b9150505b92915050565b6000806145ed858461465b565b90506146506040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f7879000000815250828660405160200161463b929190618f83565b60405160208183030381529060405285614667565b9150505b9392505050565b60006146548383614695565b60c0810151516000901561468b5761468484848460c001516146b0565b9050614654565b6146848484614856565b60006146a18383614941565b61465483836020015184614667565b6000806146bb61494d565b905060006146c98683614a20565b905060006146e08260600151836020015185614ec6565b905060006146f0838389896150d8565b905060006146fd82615f55565b602081015181519192509060030b1561477057898260400151604051602001614727929190618fa5565b60408051601f19818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261476791600401619026565b60405180910390fd5b60006147b36040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001616124565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90614806908490600401619026565b602060405180830381865afa158015614823573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148479190619039565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc925906148ab908790600401619026565b600060405180830381865afa1580156148c8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526148f0919081019061911b565b9050600061491e828560405160200161490a929190619150565b604051602081830303815290604052616324565b90506001600160a01b0381166145d657848460405160200161472792919061917f565b6141a782826000616337565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c906149d490849060040161922a565b600060405180830381865afa1580156149f1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614a199190810190619271565b9250505090565b614a526040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050614a9d6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b614aa68561643a565b60208201526000614ab68661681f565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015614af8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614b209190810190619271565b86838560200151604051602001614b3a94939291906192ba565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190614b92908590600401619026565b600060405180830381865afa158015614baf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614bd79190810190619271565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690614c1f9084906004016193be565b602060405180830381865afa158015614c3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614c609190618e49565b614c7557816040516020016147279190619410565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890614cba9084906004016194a2565b600060405180830381865afa158015614cd7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614cff9190810190619271565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690614d469084906004016194f4565b602060405180830381865afa158015614d63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614d879190618e49565b15614e1c576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890614dd19084906004016194f4565b600060405180830381865afa158015614dee573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614e169190810190619271565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001614e419190619546565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401614e6d9291906195b2565b600060405180830381865afa158015614e8a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614eb29190810190619271565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081614ee25790505090506040518060400160405280600481526020017f677265700000000000000000000000000000000000000000000000000000000081525081600081518110614f4257614f426195d7565b60200260200101819052506040518060400160405280600381526020017f2d726c000000000000000000000000000000000000000000000000000000000081525081600181518110614f9657614f966195d7565b602002602001018190525084604051602001614fb29190619606565b60405160208183030381529060405281600281518110614fd457614fd46195d7565b602002602001018190525082604051602001614ff09190619672565b60405160208183030381529060405281600381518110615012576150126195d7565b6020026020010181905250600061502882615f55565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506150b99060408051808201825260008082526020918201528151808301909252845182528085019082015290616aa2565b6150ce578560405160200161472791906196b3565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015615128565b511590565b61529c578260200151156151e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401614767565b8260c001511561529c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401614767565b6040805160ff8082526120008201909252600091816020015b60608152602001906001900390816152b557905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061531090619744565b935060ff1681518110615325576153256195d7565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016153769190619763565b60405160208183030381529060405282828061539190619744565b935060ff16815181106153a6576153a66195d7565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806153f390619744565b935060ff1681518110615408576154086195d7565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d6500000000000000000000000000000000000081525082828061545590619744565b935060ff168151811061546a5761546a6195d7565b6020026020010181905250876020015182828061548690619744565b935060ff168151811061549b5761549b6195d7565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806154e890619744565b935060ff16815181106154fd576154fd6195d7565b60209081029190910101528751828261551581619744565b935060ff168151811061552a5761552a6195d7565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e4964000000000000000000000000000000000000000000000081525082828061557790619744565b935060ff168151811061558c5761558c6195d7565b60200260200101819052506155a046616b03565b82826155ab81619744565b935060ff16815181106155c0576155c06195d7565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c65000000000000000000000000000000000081525082828061560d90619744565b935060ff1681518110615622576156226195d7565b60200260200101819052508682828061563a90619744565b935060ff168151811061564f5761564f6195d7565b60209081029190910101528551156157765760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826156a081619744565b935060ff16815181106156b5576156b56195d7565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90615705908990600401619026565b600060405180830381865afa158015615722573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261574a9190810190619271565b828261575581619744565b935060ff168151811061576a5761576a6195d7565b60200260200101819052505b8460200151156158465760408051808201909152601281527f2d2d766572696679536f75726365436f64650000000000000000000000000000602082015282826157bf81619744565b935060ff16815181106157d4576157d46195d7565b60200260200101819052506040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525082828061582190619744565b935060ff1681518110615836576158366195d7565b6020026020010181905250615a0d565b61587e6151238660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6159115760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826158c181619744565b935060ff16815181106158d6576158d66195d7565b60200260200101819052508460a001516040516020016158f69190619606565b60405160208183030381529060405282828061582190619744565b8460c0015115801561595457506040808901518151808301835260008082526020918201528251808401909352815183529081019082015261595290511590565b155b15615a0d5760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828261599881619744565b935060ff16815181106159ad576159ad6195d7565b60200260200101819052506159c188616ba3565b6040516020016159d19190619606565b6040516020818303038152906040528282806159ec90619744565b935060ff1681518110615a0157615a016195d7565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152615a4190511590565b615ad65760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282615a8481619744565b935060ff1681518110615a9957615a996195d7565b60200260200101819052508460400151828280615ab590619744565b935060ff1681518110615aca57615aca6195d7565b60200260200101819052505b606085015115615bf75760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282615b1f81619744565b935060ff1681518110615b3457615b346195d7565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015615ba3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615bcb9190810190619271565b8282615bd681619744565b935060ff1681518110615beb57615beb6195d7565b60200260200101819052505b60e08501515115615c9e5760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282615c4181619744565b935060ff1681518110615c5657615c566195d7565b6020026020010181905250615c728560e0015160000151616b03565b8282615c7d81619744565b935060ff1681518110615c9257615c926195d7565b60200260200101819052505b60e08501516020015115615d485760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282615ceb81619744565b935060ff1681518110615d0057615d006195d7565b6020026020010181905250615d1c8560e0015160200151616b03565b8282615d2781619744565b935060ff1681518110615d3c57615d3c6195d7565b60200260200101819052505b60e08501516040015115615df25760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282615d9581619744565b935060ff1681518110615daa57615daa6195d7565b6020026020010181905250615dc68560e0015160400151616b03565b8282615dd181619744565b935060ff1681518110615de657615de66195d7565b60200260200101819052505b60e08501516060015115615e9c5760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282615e3f81619744565b935060ff1681518110615e5457615e546195d7565b6020026020010181905250615e708560e0015160600151616b03565b8282615e7b81619744565b935060ff1681518110615e9057615e906195d7565b60200260200101819052505b60008160ff1667ffffffffffffffff811115615eba57615eba618cfb565b604051908082528060200260200182016040528015615eed57816020015b6060815260200190600190039081615ed85790505b50905060005b8260ff168160ff161015615f4657838160ff1681518110615f1657615f166195d7565b6020026020010151828260ff1681518110615f3357615f336195d7565b6020908102919091010152600101615ef3565b5093505050505b949350505050565b615f7c6040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c91616002918691016197ce565b600060405180830381865afa15801561601f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526160479190810190619271565b905060006160558683617692565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161608591906189c2565b6000604051808303816000875af11580156160a4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526160cc9190810190619815565b805190915060030b158015906160e55750602081015151155b80156160f45750604081015151155b156150ce578160008151811061610c5761610c6195d7565b602002602001015160405160200161472791906198cb565b606060006161598560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506161909082905b906177e7565b156162ed57600061620d82616207846162016161d38a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b9061780e565b90617870565b604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506162719082906177e7565b156162db57604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526162d8905b82906178f5565b90505b6162e48161791b565b92505050614654565b8215616306578484604051602001614727929190619ab7565b5050604080516020810190915260008152614654565b509392505050565b6000808251602084016000f09392505050565b8160a001511561634657505050565b6000616353848484617984565b9050600061636082615f55565b602081015181519192509060030b1580156163fc5750604080518082018252600781527f5355434345535300000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163fc9060408051808201825260008082526020918201528151808301909252845182528085019082015261618a565b1561640957505050505050565b604082015151156164295781604001516040516020016147279190619b5e565b806040516020016147279190619bbc565b6060600061646f8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506164d4905b8290616aa2565b1561654357604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526146549061653e908390617f1f565b61791b565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526165a5905b8290617fa9565b60010361667257604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261660b906162d1565b50604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526146549061653e905b83906178f5565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526166d1906164cd565b1561680857604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290616739908390618043565b90506000816001835161674c9190618ea5565b8151811061675c5761675c6195d7565b602002602001015190506167ff61653e6167d26040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290617f1f565b95945050505050565b826040516020016147279190619c27565b50919050565b606060006168548360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506168b6906164cd565b156168c4576146548161791b565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526169239061659e565b60010361698d57604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526146549061653e9061666b565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526169ec906164cd565b1561680857604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290616a54908390618043565b9050600181511115616a90578060028251616a6f9190618ea5565b81518110616a7f57616a7f6195d7565b602002602001015192505050919050565b50826040516020016147279190619c27565b805182516000911115616ab7575060006145da565b81518351602085015160009291616acd91618ce8565b616ad79190618ea5565b905082602001518103616aee5760019150506145da565b82516020840151819020912014905092915050565b60606000616b10836180e8565b600101905060008167ffffffffffffffff811115616b3057616b30618cfb565b6040519080825280601f01601f191660200182016040528015616b5a576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084616b6457509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091616c2f905b82906181ca565b15616c6f57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616cce90616c28565b15616d0e57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616d6d90616c28565b15616dad57505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616e0c90616c28565b80616e715750604080518082018252601081527f47504c2d322e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616e7190616c28565b15616eb157505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616f1090616c28565b80616f755750604080518082018252601081527f47504c2d332e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616f7590616c28565b15616fb557505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261701490616c28565b806170795750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261707990616c28565b156170b957505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261711890616c28565b8061717d5750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261717d90616c28565b156171bd57505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261721c90616c28565b1561725c57505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526172bb90616c28565b156172fb57505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261735a90616c28565b1561739a57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526173f990616c28565b1561743957505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261749890616c28565b156174d857505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261753790616c28565b8061759c5750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261759c90616c28565b156175dc57505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261763b90616c28565b1561767b57505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b604080840151845191516147279290602001619d05565b60608060005b845181101561771d57818582815181106176b4576176b46195d7565b60200260200101516040516020016176cd929190619150565b6040516020818303038152906040529150600185516176ec9190618ea5565b811461771557816040516020016177039190619e6e565b60405160208183030381529060405291505b600101617698565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816177365790505090508381600081518110617761576177616195d7565b60200260200101819052506040518060400160405280600281526020017f2d63000000000000000000000000000000000000000000000000000000000000815250816001815181106177b5576177b56195d7565b602002602001018190525081816002815181106177d4576177d46195d7565b6020908102919091010152949350505050565b602080830151835183519284015160009361780592918491906181de565b14159392505050565b6040805180820190915260008082526020820152600061784084600001518560200151856000015186602001516182ef565b90508360200151816178529190618ea5565b84518590617861908390618ea5565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156178955750816145da565b60208083015190840151600191146178bc5750815160208481015190840151829020919020145b80156178ed578251845185906178d3908390618ea5565b90525082516020850180516178e9908390618ce8565b9052505b509192915050565b604080518082019091526000808252602082015261791483838361840f565b5092915050565b60606000826000015167ffffffffffffffff81111561793c5761793c618cfb565b6040519080825280601f01601f191660200182016040528015617966576020820181803683370190505b509050600060208201905061791481856020015186600001516184ba565b6060600061799061494d565b6040805160ff808252612000820190925291925060009190816020015b60608152602001906001900390816179ad57905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280617a0890619744565b935060ff1681518110617a1d57617a1d6195d7565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001617a6e9190619eaf565b604051602081830303815290604052828280617a8990619744565b935060ff1681518110617a9e57617a9e6195d7565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280617aeb90619744565b935060ff1681518110617b0057617b006195d7565b602002602001018190525082604051602001617b1c9190619672565b604051602081830303815290604052828280617b3790619744565b935060ff1681518110617b4c57617b4c6195d7565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280617b9990619744565b935060ff1681518110617bae57617bae6195d7565b6020026020010181905250617bc38784618534565b8282617bce81619744565b935060ff1681518110617be357617be36195d7565b602090810291909101015285515115617c8f5760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282617c3581619744565b935060ff1681518110617c4a57617c4a6195d7565b6020026020010181905250617c63866000015184618534565b8282617c6e81619744565b935060ff1681518110617c8357617c836195d7565b60200260200101819052505b856080015115617cfd5760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282617cd881619744565b935060ff1681518110617ced57617ced6195d7565b6020026020010181905250617d63565b8415617d635760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282617d4281619744565b935060ff1681518110617d5757617d576195d7565b60200260200101819052505b60408601515115617dff5760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282617dad81619744565b935060ff1681518110617dc257617dc26195d7565b60200260200101819052508560400151828280617dde90619744565b935060ff1681518110617df357617df36195d7565b60200260200101819052505b856060015115617e695760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282617e4881619744565b935060ff1681518110617e5d57617e5d6195d7565b60200260200101819052505b60008160ff1667ffffffffffffffff811115617e8757617e87618cfb565b604051908082528060200260200182016040528015617eba57816020015b6060815260200190600190039081617ea55790505b50905060005b8260ff168160ff161015617f1357838160ff1681518110617ee357617ee36195d7565b6020026020010151828260ff1681518110617f0057617f006195d7565b6020908102919091010152600101617ec0565b50979650505050505050565b6040805180820190915260008082526020820152815183511015617f445750816145da565b81518351602085015160009291617f5a91618ce8565b617f649190618ea5565b60208401519091506001908214617f85575082516020840151819020908220145b8015617fa057835185518690617f9c908390618ea5565b9052505b50929392505050565b6000808260000151617fcd85600001518660200151866000015187602001516182ef565b617fd79190618ce8565b90505b83516020850151617feb9190618ce8565b81116179145781617ffb81619ef4565b92505082600001516180328560200151836180169190618ea5565b86516180229190618ea5565b83866000015187602001516182ef565b61803c9190618ce8565b9050617fda565b606060006180518484617fa9565b61805c906001618ce8565b67ffffffffffffffff81111561807457618074618cfb565b6040519080825280602002602001820160405280156180a757816020015b60608152602001906001900390816180925790505b50905060005b815181101561631c576180c361653e86866178f5565b8282815181106180d5576180d56195d7565b60209081029190910101526001016180ad565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310618131577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831061815d576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061817b57662386f26fc10000830492506010015b6305f5e1008310618193576305f5e100830492506008015b61271083106181a757612710830492506004015b606483106181b9576064830492506002015b600a83106145da5760010192915050565b60006181d68383618574565b159392505050565b6000808584116182e557602084116182915760008415618229576001618205866020618ea5565b618210906008619f0e565b61821b90600261a00c565b6182259190618ea5565b1990505b83518116856182388989618ce8565b6182429190618ea5565b805190935082165b81811461827c578784116182645787945050505050615f4d565b8361826e8161a018565b94505082845116905061824a565b6182868785618ce8565b945050505050615f4d565b83832061829e8588618ea5565b6182a89087618ce8565b91505b8582106182e3578482208082036182d0576182c68684618ce8565b9350505050615f4d565b6182db600184618ea5565b9250506182ab565b505b5092949350505050565b600083818685116183fa57602085116183a9576000851561833b576001618317876020618ea5565b618322906008619f0e565b61832d90600261a00c565b6183379190618ea5565b1990505b8451811660008761834c8b8b618ce8565b6183569190618ea5565b855190915083165b82811461839b57818610618383576183768b8b618ce8565b9650505050505050615f4d565b8561838d81619ef4565b96505083865116905061835e565b859650505050505050615f4d565b508383206000905b6183bb8689618ea5565b82116183f8578583208082036183d75783945050505050615f4d565b6183e2600185618ce8565b93505081806183f090619ef4565b9250506183b1565b505b6184048787618ce8565b979650505050505050565b6040805180820190915260008082526020820152600061844185600001518660200151866000015187602001516182ef565b60208087018051918601919091525190915061845d9082618ea5565b8352845160208601516184709190618ce8565b810361847f57600085526184b1565b8351835161848d9190618ce8565b8551869061849c908390618ea5565b90525083516184ab9082618ce8565b60208601525b50909392505050565b602081106184f257815183526184d1602084618ce8565b92506184de602083618ce8565b91506184eb602082618ea5565b90506184ba565b6000198115618521576001618508836020618ea5565b6185149061010061a00c565b61851e9190618ea5565b90505b9151835183169219169190911790915250565b606060006185428484614a20565b805160208083015160405193945061855c9390910161a02f565b60405160208183030381529060405291505092915050565b8151815160009190811115618587575081515b6020808501519084015160005b8381101561864057825182518082146186105760001960208710156185ef576001846185c1896020618ea5565b6185cb9190618ce8565b6185d6906008619f0e565b6185e190600261a00c565b6185eb9190618ea5565b1990505b818116838216818103911461860d5797506145da9650505050505050565b50505b61861b602086618ce8565b9450618628602085618ce8565b935050506020816186399190618ce8565b9050618594565b50845186516150ce919061a087565b610c9f8061a0a883390190565b6112a68061ad4783390190565b6040518060e001604052806060815260200160608152602001606081526020016000151581526020016000151581526020016000151581526020016186ac6186b1565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016186ac6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156187635783516001600160a01b031683526020938401939092019160010161873c565b509095945050505050565b60005b83811015618789578181015183820152602001618771565b50506000910152565b600081518084526187aa81602086016020860161876e565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156188ba577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b818110156188a0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261888a848651618792565b6020958601959094509290920191600101618850565b5091975050506020948501949290920191506001016187e6565b50929695505050505050565b600081518084526020840193506020830160005b8281101561891a5781517fffffffff00000000000000000000000000000000000000000000000000000000168652602095860195909101906001016188da565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156188ba577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281518051604087526189906040880182618792565b90506020820151915086810360208801526189ab81836188c6565b96505050602093840193919091019060010161894c565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156188ba577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452618a24858351618792565b945060209384019391909101906001016189ea565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156188ba577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152618aba60408701826188c6565b9550506020938401939190910190600101618a61565b600181811c90821680618ae457607f821691505b602082108103616819577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600081546001600160a01b038116845260ff8160a01c1615156020850152506001600160a01b0360018301541660408401526002820160a0606085015260008154618b6781618ad0565b8060a08801526001821660008114618b865760018114618bc057618bf4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831660c089015260c082151560051b8901019350618bf4565b84600052602060002060005b83811015618beb5781548a820160c00152600190910190602001618bcc565b890160c0019450505b50505060038401546080860152809250505092915050565b6001600160a01b03861681528460208201526001600160a01b038416604082015260a060608201526000618c4360a0830185618792565b8281036080840152618c558185618b1d565b98975050505050505050565b6001600160a01b0383168152604060208201526000615f4d6040830184618b1d565b8381526001600160a01b0383166020820152608060408201526000608082015260a0606082015260006167ff60a0830184618b1d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156145da576145da618cb9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b601f82111561083d57806000526020600020601f840160051c81016020851015618d515750805b601f840160051c820191505b81811015611a985760008155600101618d5d565b815167ffffffffffffffff811115618d8b57618d8b618cfb565b618d9f81618d998454618ad0565b84618d2a565b6020601f821160018114618dd35760008315618dbb5750848201515b600019600385901b1c1916600184901b178455611a98565b600084815260208120601f198516915b82811015618e035787850151825560209485019460019092019101618de3565b5084821015618e215786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b600060208284031215618e4257600080fd5b5051919050565b600060208284031215618e5b57600080fd5b8151801515811461465457600080fd5b8481526001600160a01b0384166020820152608060408201526000618e936080830185618792565b82810360608401526184048185618b1d565b818103818111156145da576145da618cb9565b600082618eee577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6001600160a01b0384168152606060208201526000618f156060830185618792565b82810360408401526150ce8185618b1d565b6001600160a01b03851681528360208201526001600160a01b03831660408201526080606082015260006150ce6080830184618b1d565b604081526000618f716040830185618792565b82810360208401526146508185618b1d565b6001600160a01b0383168152604060208201526000615f4d6040830184618792565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351618fdd81601a85016020880161876e565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161901a81601c84016020880161876e565b01601c01949350505050565b6020815260006146546020830184618792565b60006020828403121561904b57600080fd5b81516001600160a01b038116811461465457600080fd5b6040516060810167ffffffffffffffff8111828210171561908557619085618cfb565b60405290565b60008067ffffffffffffffff8411156190a6576190a6618cfb565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff821117156190d5576190d5618cfb565b6040528381529050808284018510156190ed57600080fd5b61631c84602083018561876e565b600082601f83011261910c57600080fd5b6146548383516020850161908b565b60006020828403121561912d57600080fd5b815167ffffffffffffffff81111561914457600080fd5b6145d6848285016190fb565b6000835161916281846020880161876e565b83519083019061917681836020880161876e565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516191b781601a85016020880161876e565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a9184019182015283516191f481603384016020880161876e565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f555400000000000000000000000000000000000000000060608201526080602082015260006146546080830184618792565b60006020828403121561928357600080fd5b815167ffffffffffffffff81111561929a57600080fd5b8201601f810184136192ab57600080fd5b6145d68482516020840161908b565b600085516192cc818460208a0161876e565b7f2f000000000000000000000000000000000000000000000000000000000000009083019081528551619306816001840160208a0161876e565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161934481600284016020890161876e565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161938681600284016020880161876e565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b6040815260006193d16040830184618792565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161944881601f85016020870161876e565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b6040815260006194b56040830184618792565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006195076040830184618792565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161957e81601485016020870161876e565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b6040815260006195c56040830185618792565b82810360208401526146508185618792565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161963e81600185016020870161876e565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161968481846020870161876e565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161973781604b85016020870161876e565b91909101604b0192915050565b600060ff821660ff810361975a5761975a618cb9565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c694000000000000000000000000000000000000000000000006020820152600082516197c181602985016020870161876e565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f504154480000000000000000000060608201526080602082015260006146546080830184618792565b60006020828403121561982757600080fd5b815167ffffffffffffffff81111561983e57600080fd5b82016060818503121561985057600080fd5b619858619062565b81518060030b811461986957600080fd5b8152602082015167ffffffffffffffff81111561988557600080fd5b619891868285016190fb565b602083015250604082015167ffffffffffffffff8111156198b157600080fd5b6198bd868285016190fb565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161992981602185016020870161876e565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351619b1581602185016020880161876e565b7f2720696e206f75747075743a20000000000000000000000000000000000000006021918401918201528351619b5281602e84016020880161876e565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a2000000000000000000000000000000000000000000000006020820152600082516197c181602985016020870161876e565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251619c1a81602285016020870161876e565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251619c5f81600e85016020870161876e565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351619d3d81601885016020880161876e565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351619d7a81601c84016020880161876e565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251619e8081846020870161876e565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f72654000000000815260008251619ee781601c85016020870161876e565b91909101601c0192915050565b60006000198203619f0757619f07618cb9565b5060010190565b80820281158282048414176145da576145da618cb9565b6001815b6001841115619f6057808504811115619f4457619f44618cb9565b6001841615619f5257908102905b60019390931c928002619f29565b935093915050565b600082619f77575060016145da565b81619f84575060006145da565b8160018114619f9a5760028114619fa457619fc0565b60019150506145da565b60ff841115619fb557619fb5618cb9565b50506001821b6145da565b5060208310610133831016604e8410600b8410161715619fe3575081810a6145da565b619ff06000198484619f25565b806000190482111561a0045761a004618cb9565b029392505050565b60006146548383619f68565b60008161a0275761a027618cb9565b506000190190565b6000835161a04181846020880161876e565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161a07b81600184016020880161876e565b01600101949350505050565b818103600083128015838313168383128216171561791457617914618cb956fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220a043c41353215fce25ecb67a8a4f6f724aaa86dea8dcb0a6975bfb1f10ff3beb64736f6c634300081a0033608060405234801561001057600080fd5b506040516112a63803806112a683398101604081905261002f91610110565b604051806040016040528060048152602001635a65746160e01b815250604051806040016040528060048152602001635a45544160e01b815250816003908161007891906101e2565b50600461008582826101e2565b5050506001600160a01b03821615806100a557506001600160a01b038116155b156100c35760405163e6c4247b60e01b815260040160405180910390fd5b600680546001600160a01b039384166001600160a01b031991821617909155600780549290931691161790556102a0565b80516001600160a01b038116811461010b57600080fd5b919050565b6000806040838503121561012357600080fd5b61012c836100f4565b915061013a602084016100f4565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061016d57607f821691505b60208210810361018d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101dd57806000526020600020601f840160051c810160208510156101ba5750805b601f840160051c820191505b818110156101da57600081556001016101c6565b50505b505050565b81516001600160401b038111156101fb576101fb610143565b61020f816102098454610159565b84610193565b6020601f821160018114610243576000831561022b5750848201515b600019600385901b1c1916600184901b1784556101da565b600084815260208120601f198516915b828110156102735787850151825560209485019460019092019101610253565b50848210156102915786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610ff7806102af6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806342966c68116100b257806379cc679011610081578063a9059cbb11610066578063a9059cbb1461028e578063bff9662a146102a1578063dd62ed3e146102c157600080fd5b806379cc67901461027357806395d89b411461028657600080fd5b806342966c68146102025780635b1125911461021557806370a0823114610235578063779e3b631461026b57600080fd5b80631e458bee116100ee5780631e458bee1461018857806323b872dd1461019b578063313ce567146101ae578063328a01d0146101bd57600080fd5b806306fdde0314610120578063095ea7b31461013e57806315d57fd41461016157806318160ddd14610176575b600080fd5b610128610307565b6040516101359190610d97565b60405180910390f35b61015161014c366004610e2c565b610399565b6040519015158152602001610135565b61017461016f366004610e56565b6103b3565b005b6002545b604051908152602001610135565b610174610196366004610e89565b61057e565b6101516101a9366004610ebc565b610631565b60405160128152602001610135565b6007546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610135565b610174610210366004610ef9565b610655565b6006546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a610243366004610f12565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b610174610662565b610174610281366004610e2c565b610786565b610128610837565b61015161029c366004610e2c565b610846565b6005546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a6102cf366004610e56565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461031690610f34565b80601f016020809104026020016040519081016040528092919081815260200182805461034290610f34565b801561038f5780601f106103645761010080835404028352916020019161038f565b820191906000526020600020905b81548152906001019060200180831161037257829003601f168201915b5050505050905090565b6000336103a7818585610854565b60019150505b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff1633148015906103f3575060065473ffffffffffffffffffffffffffffffffffffffff163314155b15610431576040517fcdfcef970000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82161580610468575073ffffffffffffffffffffffffffffffffffffffff8116155b1561049f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006805473ffffffffffffffffffffffffffffffffffffffff8481167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316811790935560058054918516919092161790556040805133815260208101929092527fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff910160405180910390a16040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f1b9352454524a57a51f24f67dc66d898f616922cd1f7a12d73570ece12b1975c910160405180910390a15050565b60055473ffffffffffffffffffffffffffffffffffffffff1633146105d1576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6105db8383610866565b808373ffffffffffffffffffffffffffffffffffffffff167fc263b302aec62d29105026245f19e16f8e0137066ccd4a8bd941f716bd4096bb8460405161062491815260200190565b60405180910390a3505050565b60003361063f8582856108c6565b61064a858585610995565b506001949350505050565b61065f3382610a40565b50565b60075473ffffffffffffffffffffffffffffffffffffffff1633146106b5576040517fe700765e000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b60065473ffffffffffffffffffffffffffffffffffffffff16610704576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0910160405180910390a1565b60055473ffffffffffffffffffffffffffffffffffffffff1633146107d9576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6107e38282610a9c565b8173ffffffffffffffffffffffffffffffffffffffff167f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b18260405161082b91815260200190565b60405180910390a25050565b60606004805461031690610f34565b6000336103a7818585610995565b6108618383836001610ab1565b505050565b73ffffffffffffffffffffffffffffffffffffffff82166108b6576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c260008383610bf9565b5050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461098f5781811015610980576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401610428565b61098f84848484036000610ab1565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166109e5576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8216610a35576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b610861838383610bf9565b73ffffffffffffffffffffffffffffffffffffffff8216610a90576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c282600083610bf9565b610aa78233836108c6565b6108c28282610a40565b73ffffffffffffffffffffffffffffffffffffffff8416610b01576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8316610b51576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160209081526040808320938716835292905220829055801561098f578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610beb91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8316610c31578060026000828254610c269190610f87565b90915550610ce39050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610cb7576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810182905260448101839052606401610428565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff8216610d0c57600280548290039055610d38565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161062491815260200190565b602081526000825180602084015260005b81811015610dc55760208186018101516040868401015201610da8565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e2757600080fd5b919050565b60008060408385031215610e3f57600080fd5b610e4883610e03565b946020939093013593505050565b60008060408385031215610e6957600080fd5b610e7283610e03565b9150610e8060208401610e03565b90509250929050565b600080600060608486031215610e9e57600080fd5b610ea784610e03565b95602085013595506040909401359392505050565b600080600060608486031215610ed157600080fd5b610eda84610e03565b9250610ee860208501610e03565b929592945050506040919091013590565b600060208284031215610f0b57600080fd5b5035919050565b600060208284031215610f2457600080fd5b610f2d82610e03565b9392505050565b600181811c90821680610f4857607f821691505b602082108103610f81577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156103ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea264697066735822122001ec0ce060384773f3d3389fab7bed652c6b8ee389a7471cce10d00d87a75a0c64736f6c634300081a0033a264697066735822122096196d50b595dc38adcdb111b5ac52b0f2ae342979c0f04f33bd216ed701739264736f6c634300081a0033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055620f4240602c55348015603357600080fd5b5061c022806100436000396000f3fe608060405234801561001057600080fd5b50600436106102415760003560e01c8063916a17c611610145578063ba414fa6116100bd578063e20c9f711161008c578063e85c5a0711610071578063e85c5a07146103a2578063f96c02df146103aa578063fa7626d4146103b257600080fd5b8063e20c9f7114610392578063e306a9781461039a57600080fd5b8063ba414fa614610362578063bb93f11e1461037a578063c13d738f14610382578063d896e2611461038a57600080fd5b8063aa030c1c11610114578063b1409f71116100f9578063b1409f711461034a578063b284906314610352578063b5508aa91461035a57600080fd5b8063aa030c1c1461033a578063b0464fdc1461034257600080fd5b8063916a17c61461030d57806395cd0445146103225780639fd1e5971461032a578063a48abc2a1461033257600080fd5b80633e5e3c23116101d857806351da903d116101a757806366d9a9a01161018c57806366d9a9a0146102db5780637478fda0146102f057806385226c81146102f857600080fd5b806351da903d146102cb5780636459542a146102d357600080fd5b80633e5e3c23146102ab5780633f7286f4146102b3578063466f332e146102bb5780634ce25c0a146102c357600080fd5b80631806a9a5116102145780631806a9a5146102685780631ed7831c146102705780632ade38801461028e57806330f7c04f146102a357600080fd5b806305a898e21461024657806306978ca3146102505780630724d8e3146102585780630a9254e414610260575b600080fd5b61024e6103bf565b005b61024e610576565b61024e61068e565b61024e610842565b61024e61138b565b610278611488565b6040516102859190618722565b60405180910390f35b6102966114ea565b60405161028591906187be565b61024e61162c565b610278611a9f565b610278611aff565b61024e611b5f565b61024e611e51565b61024e6120ed565b61024e61224e565b6102e3612647565b6040516102859190618924565b61024e6127c9565b6103006128cc565b60405161028591906189c2565b61031561299c565b6040516102859190618a39565b61024e612a97565b61024e612ded565b61024e61300f565b61024e613203565b6103156133c0565b61024e6134bb565b61024e61376d565b61030061397b565b61036a613a4b565b6040519015158152602001610285565b61024e613b1f565b61024e613c16565b61024e613d0d565b610278613e88565b61024e613ee8565b61024e6141ab565b61024e61442c565b601f5461036a9060ff1681565b6026546040516001600160a01b03909116602482015260019060009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb3906104b7906004016020808252600b908201527f5a65726f41646472657373000000000000000000000000000000000000000000604082015260600190565b600060405180830381600087803b1580156104d157600080fd5b505af11580156104e5573d6000803e3d6000fd5b50506020546023546040517fd09e3b780000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063d09e3b7893506105409260009288929116908790602890600401618c0c565b600060405180830381600087803b15801561055a57600080fd5b505af115801561056e573d6000803e3d6000fd5b505050505050565b6040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f496e73756666696369656e74455448416d6f756e7400000000000000000000006044820152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390606401600060405180830381600087803b15801561060c57600080fd5b505af1158015610620573d6000803e3d6000fd5b50506020546026546040517f726ac97c0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063726ac97c93508592610675921690602890600401618c61565b6000604051808303818588803b15801561055a57600080fd5b6027546020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039182166084820152620186a092919091163190737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561072a57600080fd5b505af115801561073e573d6000803e3d6000fd5b50506026546025546040516001600160a01b039283169450911691507fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c9061078d908690600090602890618c83565b60405180910390a36020546026546040517f726ac97c0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169263726ac97c9286926107e89290911690602890600401618c61565b6000604051808303818588803b15801561080157600080fd5b505af1158015610815573d6000803e3d6000fd5b50506027546001600160a01b031631925061083d915061083790508484618ce8565b82614542565b505050565b602580547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602680548216611234179055602780549091166156781790556040516108949061864f565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610919573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831617905560275460405191169081906109629061865c565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015610995573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c000000000000000000000000000000000000602082015260275460255492519086169481019490945260448401929092529092166064820152610a8791906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc0c53b8b000000000000000000000000000000000000000000000000000000001790526145c1565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff000000000000000000000000000000000000000090911681178255604080518082018252601081527f4552433230437573746f64792e736f6c000000000000000000000000000000009381019390935260275460255491516024810193909352841660448301529092166064830152610b5791608401610a2a565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602180549190920483167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116179055604080518082018252601a81527f5a657461436f6e6e6563746f724e6f6e4e61746976652e736f6c00000000000060208083019190915254602480546027546025549551938716928401929092528516604483015284166064820152919092166084820152610c90919060a40160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff8c8765e000000000000000000000000000000000000000000000000000000001790526145c1565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602280549190920483167fffffffffffffffffffffffff00000000000000000000000000000000000000009091161790556027546040517fca669fa700000000000000000000000000000000000000000000000000000000815291166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015610d6857600080fd5b505af1158015610d7c573d6000803e3d6000fd5b5050602480546027546022546040517f15d57fd40000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152908216938101939093521692506315d57fd49150604401600060405180830381600087803b158015610def57600080fd5b505af1158015610e03573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610e8757600080fd5b505af1158015610e9b573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610f1157600080fd5b505af1158015610f25573d6000803e3d6000fd5b50506020546021546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b158015610f8b57600080fd5b505af1158015610f9f573d6000803e3d6000fd5b50506020546022546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b15801561100557600080fd5b505af1158015611019573d6000803e3d6000fd5b50506021546023546040517f9b19251a0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015291169250639b19251a9150602401600060405180830381600087803b15801561107f57600080fd5b505af1158015611093573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156110f557600080fd5b505af1158015611109573d6000803e3d6000fd5b5050602354602554602c546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810191909152911692506340c10f199150604401600060405180830381600087803b15801561117a57600080fd5b505af115801561118e573d6000803e3d6000fd5b50506027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561120457600080fd5b505af1158015611218573d6000803e3d6000fd5b5050602254602554602c546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810191909152600060448201529116925063106e62909150606401600060405180830381600087803b15801561129057600080fd5b505af11580156112a4573d6000803e3d6000fd5b50506040805160a08101825261032180825260016020808401918252838501928352845190810190945260008085526060840185905260808401528251602880549251151574010000000000000000000000000000000000000000027fffffffffffffffffffffff0000000000000000000000000000000000000000009093166001600160a01b0392831617929092178255915160298054919093167fffffffffffffffffffffffff000000000000000000000000000000000000000091909116179091559093509150602a9061137b9082618d71565b5060808201518160030155905050565b6040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a65726f416464726573730000000000000000000000000000000000000000006044820152600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390606401600060405180830381600087803b15801561142157600080fd5b505af1158015611435573d6000803e3d6000fd5b50506020546040517f726ac97c0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116925063726ac97c9150839061067590600090602890600401618c61565b606060168054806020026020016040519081016040528092919081815260200182805480156114e057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116114c2575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561162357600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561160c57838290600052602060002001805461157f90618ad0565b80601f01602080910402602001604051908101604052809291908181526020018280546115ab90618ad0565b80156115f85780601f106115cd576101008083540402835291602001916115f8565b820191906000526020600020905b8154815290600101906020018083116115db57829003601f168201915b505050505081526020019060010190611560565b50505050815250508152602001906001019061150e565b50505050905090565b6023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09260009216906370a0823190602401602060405180830381865afa158015611698573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116bc9190618e30565b90506116c9600082614542565b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052602354905491517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015260248101879052929350169063095ea7b3906044016020604051808303816000875af11580156117ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d09190618e49565b506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561185f57600080fd5b505af1158015611873573d6000803e3d6000fd5b50506026546025546023546040516001600160a01b03938416955091831693507fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c926118c9928992909116908790602890618e6b565b60405180910390a36020546026546023546040517fd09e3b780000000000000000000000000000000000000000000000000000000081526001600160a01b039384169363d09e3b789361192d93908216928992909116908790602890600401618c0c565b600060405180830381600087803b15801561194757600080fd5b505af115801561195b573d6000803e3d6000fd5b50506023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156119c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119eb9190618e30565b90506119f78482614542565b6023546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611a61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a859190618e30565b9050611a9885602c546108379190618ea5565b5050505050565b606060188054806020026020016040519081016040528092919081815260200182805480156114e0576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116114c2575050505050905090565b606060178054806020026020016040519081016040528092919081815260200182805480156114e0576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116114c2575050505050905090565b60208054604080517fa2ba19340000000000000000000000000000000000000000000000000000000081529051620186a0936000936002936001600160a01b039091169263a2ba1934926004808401939192918290030181865afa158015611bcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bef9190618e30565b611bf99190618eb8565b67ffffffffffffffff811115611c1157611c11618cfb565b6040519080825280601f01601f191660200182016040528015611c3b576020820181803683370190505b5060208054604080517fa2ba193400000000000000000000000000000000000000000000000000000000815290519394506002936001600160a01b039092169263a2ba1934926004808401938290030181865afa158015611ca0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cc49190618e30565b611cce9190618eb8565b611cd9906001618ce8565b67ffffffffffffffff811115611cf157611cf1618cfb565b6040519080825280601f01601f191660200182016040528015611d1b576020820181803683370190505b50602a90611d299082618d71565b506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f386691aa000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015b600060405180830381600087803b158015611db057600080fd5b505af1158015611dc4573d6000803e3d6000fd5b50506020546026546040517f744b9b8b0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063744b9b8b93508692611e1b9216908690602890600401618ef3565b6000604051808303818588803b158015611e3457600080fd5b505af1158015611e48573d6000803e3d6000fd5b50505050505050565b6023546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a06024820181905292919091169063095ea7b3906044016020604051808303816000875af1158015611ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eea9190618e49565b5060208054604080517fa2ba193400000000000000000000000000000000000000000000000000000000815290516001600160a01b039092169263a2ba1934926004808401938290030181865afa158015611f49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f6d9190618e30565b611f78906001618ce8565b67ffffffffffffffff811115611f9057611f90618cfb565b6040519080825280601f01601f191660200182016040528015611fba576020820181803683370190505b50602a90611fc89082618d71565b506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f386691aa000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015b600060405180830381600087803b15801561204f57600080fd5b505af1158015612063573d6000803e3d6000fd5b50506020546026546023546040517f102614b00000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063102614b094506120bf939283169287921690602890600401618f27565b600060405180830381600087803b1580156120d957600080fd5b505af1158015611a98573d6000803e3d6000fd5b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156121e757600080fd5b505af11580156121fb573d6000803e3d6000fd5b50506020546040517f1becceb40000000000000000000000000000000000000000000000000000000081526001600160a01b039091169250631becceb491506120bf906000908590602890600401618ef3565b6023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09260009216906370a0823190602401602060405180830381865afa1580156122ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122de9190618e30565b90506122eb600082614542565b6023546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810185905291169063095ea7b3906044016020604051808303816000875af1158015612359573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061237d9190618e49565b506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561240c57600080fd5b505af1158015612420573d6000803e3d6000fd5b50506026546025546023546040516001600160a01b03938416955091831693507fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c9261247492889290911690602890618c83565b60405180910390a36020546026546023546040517f102614b00000000000000000000000000000000000000000000000000000000081526001600160a01b039384169363102614b0936124d69390821692889290911690602890600401618f27565b600060405180830381600087803b1580156124f057600080fd5b505af1158015612504573d6000803e3d6000fd5b50506023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015612570573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125949190618e30565b90506125a08382614542565b6023546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801561260a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061262e9190618e30565b905061264184602c546108379190618ea5565b50505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015611623578382906000526020600020906002020160405180604001604052908160008201805461269e90618ad0565b80601f01602080910402602001604051908101604052809291908181526020018280546126ca90618ad0565b80156127175780601f106126ec57610100808354040283529160200191612717565b820191906000526020600020905b8154815290600101906020018083116126fa57829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156127b157602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161275e5790505b5050505050815250508152602001906001019061266b565b6040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a65726f416464726573730000000000000000000000000000000000000000006044820152600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390606401600060405180830381600087803b15801561285f57600080fd5b505af1158015612873573d6000803e3d6000fd5b50506020546023546040517f102614b00000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063102614b093506120bf926000928792911690602890600401618f27565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101561162357838290600052602060002001805461290f90618ad0565b80601f016020809104026020016040519081016040528092919081815260200182805461293b90618ad0565b80156129885780601f1061295d57610100808354040283529160200191612988565b820191906000526020600020905b81548152906001019060200180831161296b57829003601f168201915b5050505050815260200190600101906128f0565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156116235760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015612a7f57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411612a2c5790505b505050505081525050815260200190600101906129c0565b60208054604080517fa2ba19340000000000000000000000000000000000000000000000000000000081529051620186a0936000936002936001600160a01b039091169263a2ba1934926004808401939192918290030181865afa158015612b03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b279190618e30565b612b319190618eb8565b67ffffffffffffffff811115612b4957612b49618cfb565b6040519080825280601f01601f191660200182016040528015612b73576020820181803683370190505b5060208054604080517fa2ba193400000000000000000000000000000000000000000000000000000000815290519394506002936001600160a01b039092169263a2ba1934926004808401938290030181865afa158015612bd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bfc9190618e30565b612c069190618eb8565b612c11906001618ce8565b67ffffffffffffffff811115612c2957612c29618cfb565b6040519080825280601f01601f191660200182016040528015612c53576020820181803683370190505b50602a90612c619082618d71565b506023546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810185905291169063095ea7b3906044016020604051808303816000875af1158015612cd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf49190618e49565b506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f386691aa000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015b600060405180830381600087803b158015612d7b57600080fd5b505af1158015612d8f573d6000803e3d6000fd5b50506020546026546023546040517fd09e3b780000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063d09e3b7894506105409392831692889216908790602890600401618c0c565b6027546026546040516001600160a01b039182166024820152620186a09291909116319060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015612efe57600080fd5b505af1158015612f12573d6000803e3d6000fd5b50506026546025546040516001600160a01b039283169450911691507fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c90612f639087906000908790602890618e6b565b60405180910390a36020546026546040517f744b9b8b0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169263744b9b8b928792612fc092909116908690602890600401618ef3565b6000604051808303818588803b158015612fd957600080fd5b505af1158015612fed573d6000803e3d6000fd5b50506027546001600160a01b0316319250612641915061083790508585618ce8565b60208054604080517fa2ba193400000000000000000000000000000000000000000000000000000000815290516001600160a01b039092169263a2ba1934926004808401938290030181865afa15801561306d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130919190618e30565b61309c906001618ce8565b67ffffffffffffffff8111156130b4576130b4618cfb565b6040519080825280601f01601f1916602001820160405280156130de576020820181803683370190505b50602a906130ec9082618d71565b506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f5061796c6f616453697a654578636565646564000000000000000000000000006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390606401600060405180830381600087803b15801561318057600080fd5b505af1158015613194573d6000803e3d6000fd5b50506020546026546040517f726ac97c0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063726ac97c93506001926131ea921690602890600401618c61565b6000604051808303818588803b1580156120d957600080fd5b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561330657600080fd5b505af115801561331a573d6000803e3d6000fd5b50506026546025546040516001600160a01b039283169450911691507fd34634f30f94a646fdf4ce7078f38fc5fa0d3f0b193658facea4e3e43330d97490613366908590602890618f5e565b60405180910390a36020546026546040517f1becceb40000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692631becceb4926120bf929116908590602890600401618ef3565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156116235760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156134a357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116134505790505b505050505081525050815260200190600101906133e4565b60208054604080517fa2ba193400000000000000000000000000000000000000000000000000000000815290516000936002936001600160a01b03169263a2ba193492600480830193928290030181865afa15801561351e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135429190618e30565b61354c9190618eb8565b67ffffffffffffffff81111561356457613564618cfb565b6040519080825280601f01601f19166020018201604052801561358e576020820181803683370190505b5060208054604080517fa2ba193400000000000000000000000000000000000000000000000000000000815290519394506002936001600160a01b039092169263a2ba1934926004808401938290030181865afa1580156135f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136179190618e30565b6136219190618eb8565b61362c906001618ce8565b67ffffffffffffffff81111561364457613644618cfb565b6040519080825280601f01601f19166020018201604052801561366e576020820181803683370190505b50602a9061367c9082618d71565b506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f386691aa000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561370257600080fd5b505af1158015613716573d6000803e3d6000fd5b50506020546026546040517f1becceb40000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631becceb493506120bf92909116908590602890600401618ef3565b6023546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a06024820181905292919091169063095ea7b3906044016020604051808303816000875af11580156137e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138069190618e49565b506025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561387957600080fd5b505af115801561388d573d6000803e3d6000fd5b50506021546023546040517f9a5904270000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015291169250639a5904279150602401600060405180830381600087803b1580156138f357600080fd5b505af1158015613907573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fac2175f1000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401612035565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156116235783829060005260206000200180546139be90618ad0565b80601f01602080910402602001604051908101604052809291908181526020018280546139ea90618ad0565b8015613a375780601f10613a0c57610100808354040283529160200191613a37565b820191906000526020600020905b815481529060010190602001808311613a1a57829003601f168201915b50505050508152602001906001019061399f565b60085460009060ff1615613a63575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015613af4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b189190618e30565b1415905090565b6026546040516001600160a01b039091166024820152600090819060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390612d619060040160208082526017908201527f496e73756666696369656e744552433230416d6f756e74000000000000000000604082015260600190565b6026546040516001600160a01b039091166024820152600090819060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390611d969060040160208082526015908201527f496e73756666696369656e74455448416d6f756e740000000000000000000000604082015260600190565b6026546040516001600160a01b03909116602482015260019060009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390613e05906004016020808252600b908201527f5a65726f41646472657373000000000000000000000000000000000000000000604082015260600190565b600060405180830381600087803b158015613e1f57600080fd5b505af1158015613e33573d6000803e3d6000fd5b50506020546040517f744b9b8b0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116925063744b9b8b91508490611e1b906000908690602890600401618ef3565b606060158054806020026020016040519081016040528092919081815260200182805480156114e0576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116114c2575050505050905090565b602480546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a093810184905291169063095ea7b3906044016020604051808303816000875af1158015613f5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f7e9190618e49565b506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561400d57600080fd5b505af1158015614021573d6000803e3d6000fd5b50506026546025546024546040516001600160a01b03938416955091831693507fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c9261407592879290911690602890618c83565b60405180910390a36020546026546024546040517f102614b00000000000000000000000000000000000000000000000000000000081526001600160a01b039384169363102614b0936140d79390821692879290911690602890600401618f27565b600060405180830381600087803b1580156140f157600080fd5b505af1158015614105573d6000803e3d6000fd5b5050602480546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015614170573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141949190618e30565b90506141a782602c546108379190618ea5565b5050565b6026546040516001600160a01b039091166024820152620186a09060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052602354905491517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015260248101869052929350169063095ea7b3906044016020604051808303816000875af1158015614293573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142b79190618e49565b506025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561432a57600080fd5b505af115801561433e573d6000803e3d6000fd5b50506021546023546040517f9a5904270000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015291169250639a5904279150602401600060405180830381600087803b1580156143a457600080fd5b505af11580156143b8573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fac2175f1000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401612d61565b6023546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260006024820181905292919091169063095ea7b3906044016020604051808303816000875af115801561449f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144c39190618e49565b506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e73756666696369656e744552433230416d6f756e740000000000000000006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390606401612035565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b1580156145ad57600080fd5b505afa15801561056e573d6000803e3d6000fd5b60006145cb618669565b6145d68484836145e0565b9150505b92915050565b6000806145ed858461465b565b90506146506040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f7879000000815250828660405160200161463b929190618f83565b60405160208183030381529060405285614667565b9150505b9392505050565b60006146548383614695565b60c0810151516000901561468b5761468484848460c001516146b0565b9050614654565b6146848484614856565b60006146a18383614941565b61465483836020015184614667565b6000806146bb61494d565b905060006146c98683614a20565b905060006146e08260600151836020015185614ec6565b905060006146f0838389896150d8565b905060006146fd82615f55565b602081015181519192509060030b1561477057898260400151604051602001614727929190618fa5565b60408051601f19818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261476791600401619026565b60405180910390fd5b60006147b36040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001616124565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90614806908490600401619026565b602060405180830381865afa158015614823573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148479190619039565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc925906148ab908790600401619026565b600060405180830381865afa1580156148c8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526148f0919081019061911b565b9050600061491e828560405160200161490a929190619150565b604051602081830303815290604052616324565b90506001600160a01b0381166145d657848460405160200161472792919061917f565b6141a782826000616337565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c906149d490849060040161922a565b600060405180830381865afa1580156149f1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614a199190810190619271565b9250505090565b614a526040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050614a9d6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b614aa68561643a565b60208201526000614ab68661681f565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015614af8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614b209190810190619271565b86838560200151604051602001614b3a94939291906192ba565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190614b92908590600401619026565b600060405180830381865afa158015614baf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614bd79190810190619271565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690614c1f9084906004016193be565b602060405180830381865afa158015614c3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614c609190618e49565b614c7557816040516020016147279190619410565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890614cba9084906004016194a2565b600060405180830381865afa158015614cd7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614cff9190810190619271565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690614d469084906004016194f4565b602060405180830381865afa158015614d63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614d879190618e49565b15614e1c576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890614dd19084906004016194f4565b600060405180830381865afa158015614dee573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614e169190810190619271565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001614e419190619546565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401614e6d9291906195b2565b600060405180830381865afa158015614e8a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614eb29190810190619271565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081614ee25790505090506040518060400160405280600481526020017f677265700000000000000000000000000000000000000000000000000000000081525081600081518110614f4257614f426195d7565b60200260200101819052506040518060400160405280600381526020017f2d726c000000000000000000000000000000000000000000000000000000000081525081600181518110614f9657614f966195d7565b602002602001018190525084604051602001614fb29190619606565b60405160208183030381529060405281600281518110614fd457614fd46195d7565b602002602001018190525082604051602001614ff09190619672565b60405160208183030381529060405281600381518110615012576150126195d7565b6020026020010181905250600061502882615f55565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506150b99060408051808201825260008082526020918201528151808301909252845182528085019082015290616aa2565b6150ce578560405160200161472791906196b3565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015615128565b511590565b61529c578260200151156151e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401614767565b8260c001511561529c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401614767565b6040805160ff8082526120008201909252600091816020015b60608152602001906001900390816152b557905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061531090619744565b935060ff1681518110615325576153256195d7565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016153769190619763565b60405160208183030381529060405282828061539190619744565b935060ff16815181106153a6576153a66195d7565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806153f390619744565b935060ff1681518110615408576154086195d7565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d6500000000000000000000000000000000000081525082828061545590619744565b935060ff168151811061546a5761546a6195d7565b6020026020010181905250876020015182828061548690619744565b935060ff168151811061549b5761549b6195d7565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806154e890619744565b935060ff16815181106154fd576154fd6195d7565b60209081029190910101528751828261551581619744565b935060ff168151811061552a5761552a6195d7565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e4964000000000000000000000000000000000000000000000081525082828061557790619744565b935060ff168151811061558c5761558c6195d7565b60200260200101819052506155a046616b03565b82826155ab81619744565b935060ff16815181106155c0576155c06195d7565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c65000000000000000000000000000000000081525082828061560d90619744565b935060ff1681518110615622576156226195d7565b60200260200101819052508682828061563a90619744565b935060ff168151811061564f5761564f6195d7565b60209081029190910101528551156157765760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826156a081619744565b935060ff16815181106156b5576156b56195d7565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90615705908990600401619026565b600060405180830381865afa158015615722573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261574a9190810190619271565b828261575581619744565b935060ff168151811061576a5761576a6195d7565b60200260200101819052505b8460200151156158465760408051808201909152601281527f2d2d766572696679536f75726365436f64650000000000000000000000000000602082015282826157bf81619744565b935060ff16815181106157d4576157d46195d7565b60200260200101819052506040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525082828061582190619744565b935060ff1681518110615836576158366195d7565b6020026020010181905250615a0d565b61587e6151238660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6159115760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826158c181619744565b935060ff16815181106158d6576158d66195d7565b60200260200101819052508460a001516040516020016158f69190619606565b60405160208183030381529060405282828061582190619744565b8460c0015115801561595457506040808901518151808301835260008082526020918201528251808401909352815183529081019082015261595290511590565b155b15615a0d5760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828261599881619744565b935060ff16815181106159ad576159ad6195d7565b60200260200101819052506159c188616ba3565b6040516020016159d19190619606565b6040516020818303038152906040528282806159ec90619744565b935060ff1681518110615a0157615a016195d7565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152615a4190511590565b615ad65760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282615a8481619744565b935060ff1681518110615a9957615a996195d7565b60200260200101819052508460400151828280615ab590619744565b935060ff1681518110615aca57615aca6195d7565b60200260200101819052505b606085015115615bf75760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282615b1f81619744565b935060ff1681518110615b3457615b346195d7565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015615ba3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615bcb9190810190619271565b8282615bd681619744565b935060ff1681518110615beb57615beb6195d7565b60200260200101819052505b60e08501515115615c9e5760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282615c4181619744565b935060ff1681518110615c5657615c566195d7565b6020026020010181905250615c728560e0015160000151616b03565b8282615c7d81619744565b935060ff1681518110615c9257615c926195d7565b60200260200101819052505b60e08501516020015115615d485760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282615ceb81619744565b935060ff1681518110615d0057615d006195d7565b6020026020010181905250615d1c8560e0015160200151616b03565b8282615d2781619744565b935060ff1681518110615d3c57615d3c6195d7565b60200260200101819052505b60e08501516040015115615df25760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282615d9581619744565b935060ff1681518110615daa57615daa6195d7565b6020026020010181905250615dc68560e0015160400151616b03565b8282615dd181619744565b935060ff1681518110615de657615de66195d7565b60200260200101819052505b60e08501516060015115615e9c5760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282615e3f81619744565b935060ff1681518110615e5457615e546195d7565b6020026020010181905250615e708560e0015160600151616b03565b8282615e7b81619744565b935060ff1681518110615e9057615e906195d7565b60200260200101819052505b60008160ff1667ffffffffffffffff811115615eba57615eba618cfb565b604051908082528060200260200182016040528015615eed57816020015b6060815260200190600190039081615ed85790505b50905060005b8260ff168160ff161015615f4657838160ff1681518110615f1657615f166195d7565b6020026020010151828260ff1681518110615f3357615f336195d7565b6020908102919091010152600101615ef3565b5093505050505b949350505050565b615f7c6040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c91616002918691016197ce565b600060405180830381865afa15801561601f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526160479190810190619271565b905060006160558683617692565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161608591906189c2565b6000604051808303816000875af11580156160a4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526160cc9190810190619815565b805190915060030b158015906160e55750602081015151155b80156160f45750604081015151155b156150ce578160008151811061610c5761610c6195d7565b602002602001015160405160200161472791906198cb565b606060006161598560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506161909082905b906177e7565b156162ed57600061620d82616207846162016161d38a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b9061780e565b90617870565b604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506162719082906177e7565b156162db57604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526162d8905b82906178f5565b90505b6162e48161791b565b92505050614654565b8215616306578484604051602001614727929190619ab7565b5050604080516020810190915260008152614654565b509392505050565b6000808251602084016000f09392505050565b8160a001511561634657505050565b6000616353848484617984565b9050600061636082615f55565b602081015181519192509060030b1580156163fc5750604080518082018252600781527f5355434345535300000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163fc9060408051808201825260008082526020918201528151808301909252845182528085019082015261618a565b1561640957505050505050565b604082015151156164295781604001516040516020016147279190619b5e565b806040516020016147279190619bbc565b6060600061646f8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506164d4905b8290616aa2565b1561654357604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526146549061653e908390617f1f565b61791b565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526165a5905b8290617fa9565b60010361667257604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261660b906162d1565b50604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526146549061653e905b83906178f5565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526166d1906164cd565b1561680857604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290616739908390618043565b90506000816001835161674c9190618ea5565b8151811061675c5761675c6195d7565b602002602001015190506167ff61653e6167d26040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290617f1f565b95945050505050565b826040516020016147279190619c27565b50919050565b606060006168548360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506168b6906164cd565b156168c4576146548161791b565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526169239061659e565b60010361698d57604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526146549061653e9061666b565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526169ec906164cd565b1561680857604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290616a54908390618043565b9050600181511115616a90578060028251616a6f9190618ea5565b81518110616a7f57616a7f6195d7565b602002602001015192505050919050565b50826040516020016147279190619c27565b805182516000911115616ab7575060006145da565b81518351602085015160009291616acd91618ce8565b616ad79190618ea5565b905082602001518103616aee5760019150506145da565b82516020840151819020912014905092915050565b60606000616b10836180e8565b600101905060008167ffffffffffffffff811115616b3057616b30618cfb565b6040519080825280601f01601f191660200182016040528015616b5a576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084616b6457509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091616c2f905b82906181ca565b15616c6f57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616cce90616c28565b15616d0e57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616d6d90616c28565b15616dad57505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616e0c90616c28565b80616e715750604080518082018252601081527f47504c2d322e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616e7190616c28565b15616eb157505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616f1090616c28565b80616f755750604080518082018252601081527f47504c2d332e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616f7590616c28565b15616fb557505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261701490616c28565b806170795750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261707990616c28565b156170b957505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261711890616c28565b8061717d5750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261717d90616c28565b156171bd57505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261721c90616c28565b1561725c57505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526172bb90616c28565b156172fb57505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261735a90616c28565b1561739a57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526173f990616c28565b1561743957505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261749890616c28565b156174d857505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261753790616c28565b8061759c5750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261759c90616c28565b156175dc57505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261763b90616c28565b1561767b57505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b604080840151845191516147279290602001619d05565b60608060005b845181101561771d57818582815181106176b4576176b46195d7565b60200260200101516040516020016176cd929190619150565b6040516020818303038152906040529150600185516176ec9190618ea5565b811461771557816040516020016177039190619e6e565b60405160208183030381529060405291505b600101617698565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816177365790505090508381600081518110617761576177616195d7565b60200260200101819052506040518060400160405280600281526020017f2d63000000000000000000000000000000000000000000000000000000000000815250816001815181106177b5576177b56195d7565b602002602001018190525081816002815181106177d4576177d46195d7565b6020908102919091010152949350505050565b602080830151835183519284015160009361780592918491906181de565b14159392505050565b6040805180820190915260008082526020820152600061784084600001518560200151856000015186602001516182ef565b90508360200151816178529190618ea5565b84518590617861908390618ea5565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156178955750816145da565b60208083015190840151600191146178bc5750815160208481015190840151829020919020145b80156178ed578251845185906178d3908390618ea5565b90525082516020850180516178e9908390618ce8565b9052505b509192915050565b604080518082019091526000808252602082015261791483838361840f565b5092915050565b60606000826000015167ffffffffffffffff81111561793c5761793c618cfb565b6040519080825280601f01601f191660200182016040528015617966576020820181803683370190505b509050600060208201905061791481856020015186600001516184ba565b6060600061799061494d565b6040805160ff808252612000820190925291925060009190816020015b60608152602001906001900390816179ad57905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280617a0890619744565b935060ff1681518110617a1d57617a1d6195d7565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001617a6e9190619eaf565b604051602081830303815290604052828280617a8990619744565b935060ff1681518110617a9e57617a9e6195d7565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280617aeb90619744565b935060ff1681518110617b0057617b006195d7565b602002602001018190525082604051602001617b1c9190619672565b604051602081830303815290604052828280617b3790619744565b935060ff1681518110617b4c57617b4c6195d7565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280617b9990619744565b935060ff1681518110617bae57617bae6195d7565b6020026020010181905250617bc38784618534565b8282617bce81619744565b935060ff1681518110617be357617be36195d7565b602090810291909101015285515115617c8f5760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282617c3581619744565b935060ff1681518110617c4a57617c4a6195d7565b6020026020010181905250617c63866000015184618534565b8282617c6e81619744565b935060ff1681518110617c8357617c836195d7565b60200260200101819052505b856080015115617cfd5760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282617cd881619744565b935060ff1681518110617ced57617ced6195d7565b6020026020010181905250617d63565b8415617d635760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282617d4281619744565b935060ff1681518110617d5757617d576195d7565b60200260200101819052505b60408601515115617dff5760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282617dad81619744565b935060ff1681518110617dc257617dc26195d7565b60200260200101819052508560400151828280617dde90619744565b935060ff1681518110617df357617df36195d7565b60200260200101819052505b856060015115617e695760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282617e4881619744565b935060ff1681518110617e5d57617e5d6195d7565b60200260200101819052505b60008160ff1667ffffffffffffffff811115617e8757617e87618cfb565b604051908082528060200260200182016040528015617eba57816020015b6060815260200190600190039081617ea55790505b50905060005b8260ff168160ff161015617f1357838160ff1681518110617ee357617ee36195d7565b6020026020010151828260ff1681518110617f0057617f006195d7565b6020908102919091010152600101617ec0565b50979650505050505050565b6040805180820190915260008082526020820152815183511015617f445750816145da565b81518351602085015160009291617f5a91618ce8565b617f649190618ea5565b60208401519091506001908214617f85575082516020840151819020908220145b8015617fa057835185518690617f9c908390618ea5565b9052505b50929392505050565b6000808260000151617fcd85600001518660200151866000015187602001516182ef565b617fd79190618ce8565b90505b83516020850151617feb9190618ce8565b81116179145781617ffb81619ef4565b92505082600001516180328560200151836180169190618ea5565b86516180229190618ea5565b83866000015187602001516182ef565b61803c9190618ce8565b9050617fda565b606060006180518484617fa9565b61805c906001618ce8565b67ffffffffffffffff81111561807457618074618cfb565b6040519080825280602002602001820160405280156180a757816020015b60608152602001906001900390816180925790505b50905060005b815181101561631c576180c361653e86866178f5565b8282815181106180d5576180d56195d7565b60209081029190910101526001016180ad565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310618131577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831061815d576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061817b57662386f26fc10000830492506010015b6305f5e1008310618193576305f5e100830492506008015b61271083106181a757612710830492506004015b606483106181b9576064830492506002015b600a83106145da5760010192915050565b60006181d68383618574565b159392505050565b6000808584116182e557602084116182915760008415618229576001618205866020618ea5565b618210906008619f0e565b61821b90600261a00c565b6182259190618ea5565b1990505b83518116856182388989618ce8565b6182429190618ea5565b805190935082165b81811461827c578784116182645787945050505050615f4d565b8361826e8161a018565b94505082845116905061824a565b6182868785618ce8565b945050505050615f4d565b83832061829e8588618ea5565b6182a89087618ce8565b91505b8582106182e3578482208082036182d0576182c68684618ce8565b9350505050615f4d565b6182db600184618ea5565b9250506182ab565b505b5092949350505050565b600083818685116183fa57602085116183a9576000851561833b576001618317876020618ea5565b618322906008619f0e565b61832d90600261a00c565b6183379190618ea5565b1990505b8451811660008761834c8b8b618ce8565b6183569190618ea5565b855190915083165b82811461839b57818610618383576183768b8b618ce8565b9650505050505050615f4d565b8561838d81619ef4565b96505083865116905061835e565b859650505050505050615f4d565b508383206000905b6183bb8689618ea5565b82116183f8578583208082036183d75783945050505050615f4d565b6183e2600185618ce8565b93505081806183f090619ef4565b9250506183b1565b505b6184048787618ce8565b979650505050505050565b6040805180820190915260008082526020820152600061844185600001518660200151866000015187602001516182ef565b60208087018051918601919091525190915061845d9082618ea5565b8352845160208601516184709190618ce8565b810361847f57600085526184b1565b8351835161848d9190618ce8565b8551869061849c908390618ea5565b90525083516184ab9082618ce8565b60208601525b50909392505050565b602081106184f257815183526184d1602084618ce8565b92506184de602083618ce8565b91506184eb602082618ea5565b90506184ba565b6000198115618521576001618508836020618ea5565b6185149061010061a00c565b61851e9190618ea5565b90505b9151835183169219169190911790915250565b606060006185428484614a20565b805160208083015160405193945061855c9390910161a02f565b60405160208183030381529060405291505092915050565b8151815160009190811115618587575081515b6020808501519084015160005b8381101561864057825182518082146186105760001960208710156185ef576001846185c1896020618ea5565b6185cb9190618ce8565b6185d6906008619f0e565b6185e190600261a00c565b6185eb9190618ea5565b1990505b818116838216818103911461860d5797506145da9650505050505050565b50505b61861b602086618ce8565b9450618628602085618ce8565b935050506020816186399190618ce8565b9050618594565b50845186516150ce919061a087565b610c9f8061a0a883390190565b6112a68061ad4783390190565b6040518060e001604052806060815260200160608152602001606081526020016000151581526020016000151581526020016000151581526020016186ac6186b1565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016186ac6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156187635783516001600160a01b031683526020938401939092019160010161873c565b509095945050505050565b60005b83811015618789578181015183820152602001618771565b50506000910152565b600081518084526187aa81602086016020860161876e565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156188ba577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b818110156188a0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261888a848651618792565b6020958601959094509290920191600101618850565b5091975050506020948501949290920191506001016187e6565b50929695505050505050565b600081518084526020840193506020830160005b8281101561891a5781517fffffffff00000000000000000000000000000000000000000000000000000000168652602095860195909101906001016188da565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156188ba577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281518051604087526189906040880182618792565b90506020820151915086810360208801526189ab81836188c6565b96505050602093840193919091019060010161894c565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156188ba577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452618a24858351618792565b945060209384019391909101906001016189ea565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156188ba577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152618aba60408701826188c6565b9550506020938401939190910190600101618a61565b600181811c90821680618ae457607f821691505b602082108103616819577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600081546001600160a01b038116845260ff8160a01c1615156020850152506001600160a01b0360018301541660408401526002820160a0606085015260008154618b6781618ad0565b8060a08801526001821660008114618b865760018114618bc057618bf4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831660c089015260c082151560051b8901019350618bf4565b84600052602060002060005b83811015618beb5781548a820160c00152600190910190602001618bcc565b890160c0019450505b50505060038401546080860152809250505092915050565b6001600160a01b03861681528460208201526001600160a01b038416604082015260a060608201526000618c4360a0830185618792565b8281036080840152618c558185618b1d565b98975050505050505050565b6001600160a01b0383168152604060208201526000615f4d6040830184618b1d565b8381526001600160a01b0383166020820152608060408201526000608082015260a0606082015260006167ff60a0830184618b1d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156145da576145da618cb9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b601f82111561083d57806000526020600020601f840160051c81016020851015618d515750805b601f840160051c820191505b81811015611a985760008155600101618d5d565b815167ffffffffffffffff811115618d8b57618d8b618cfb565b618d9f81618d998454618ad0565b84618d2a565b6020601f821160018114618dd35760008315618dbb5750848201515b600019600385901b1c1916600184901b178455611a98565b600084815260208120601f198516915b82811015618e035787850151825560209485019460019092019101618de3565b5084821015618e215786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b600060208284031215618e4257600080fd5b5051919050565b600060208284031215618e5b57600080fd5b8151801515811461465457600080fd5b8481526001600160a01b0384166020820152608060408201526000618e936080830185618792565b82810360608401526184048185618b1d565b818103818111156145da576145da618cb9565b600082618eee577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6001600160a01b0384168152606060208201526000618f156060830185618792565b82810360408401526150ce8185618b1d565b6001600160a01b03851681528360208201526001600160a01b03831660408201526080606082015260006150ce6080830184618b1d565b604081526000618f716040830185618792565b82810360208401526146508185618b1d565b6001600160a01b0383168152604060208201526000615f4d6040830184618792565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351618fdd81601a85016020880161876e565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161901a81601c84016020880161876e565b01601c01949350505050565b6020815260006146546020830184618792565b60006020828403121561904b57600080fd5b81516001600160a01b038116811461465457600080fd5b6040516060810167ffffffffffffffff8111828210171561908557619085618cfb565b60405290565b60008067ffffffffffffffff8411156190a6576190a6618cfb565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff821117156190d5576190d5618cfb565b6040528381529050808284018510156190ed57600080fd5b61631c84602083018561876e565b600082601f83011261910c57600080fd5b6146548383516020850161908b565b60006020828403121561912d57600080fd5b815167ffffffffffffffff81111561914457600080fd5b6145d6848285016190fb565b6000835161916281846020880161876e565b83519083019061917681836020880161876e565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516191b781601a85016020880161876e565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a9184019182015283516191f481603384016020880161876e565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f555400000000000000000000000000000000000000000060608201526080602082015260006146546080830184618792565b60006020828403121561928357600080fd5b815167ffffffffffffffff81111561929a57600080fd5b8201601f810184136192ab57600080fd5b6145d68482516020840161908b565b600085516192cc818460208a0161876e565b7f2f000000000000000000000000000000000000000000000000000000000000009083019081528551619306816001840160208a0161876e565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161934481600284016020890161876e565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161938681600284016020880161876e565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b6040815260006193d16040830184618792565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161944881601f85016020870161876e565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b6040815260006194b56040830184618792565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006195076040830184618792565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161957e81601485016020870161876e565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b6040815260006195c56040830185618792565b82810360208401526146508185618792565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161963e81600185016020870161876e565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161968481846020870161876e565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161973781604b85016020870161876e565b91909101604b0192915050565b600060ff821660ff810361975a5761975a618cb9565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c694000000000000000000000000000000000000000000000006020820152600082516197c181602985016020870161876e565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f504154480000000000000000000060608201526080602082015260006146546080830184618792565b60006020828403121561982757600080fd5b815167ffffffffffffffff81111561983e57600080fd5b82016060818503121561985057600080fd5b619858619062565b81518060030b811461986957600080fd5b8152602082015167ffffffffffffffff81111561988557600080fd5b619891868285016190fb565b602083015250604082015167ffffffffffffffff8111156198b157600080fd5b6198bd868285016190fb565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161992981602185016020870161876e565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351619b1581602185016020880161876e565b7f2720696e206f75747075743a20000000000000000000000000000000000000006021918401918201528351619b5281602e84016020880161876e565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a2000000000000000000000000000000000000000000000006020820152600082516197c181602985016020870161876e565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251619c1a81602285016020870161876e565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251619c5f81600e85016020870161876e565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351619d3d81601885016020880161876e565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351619d7a81601c84016020880161876e565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251619e8081846020870161876e565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f72654000000000815260008251619ee781601c85016020870161876e565b91909101601c0192915050565b60006000198203619f0757619f07618cb9565b5060010190565b80820281158282048414176145da576145da618cb9565b6001815b6001841115619f6057808504811115619f4457619f44618cb9565b6001841615619f5257908102905b60019390931c928002619f29565b935093915050565b600082619f77575060016145da565b81619f84575060006145da565b8160018114619f9a5760028114619fa457619fc0565b60019150506145da565b60ff841115619fb557619fb5618cb9565b50506001821b6145da565b5060208310610133831016604e8410600b8410161715619fe3575081810a6145da565b619ff06000198484619f25565b806000190482111561a0045761a004618cb9565b029392505050565b60006146548383619f68565b60008161a0275761a027618cb9565b506000190190565b6000835161a04181846020880161876e565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161a07b81600184016020880161876e565b01600101949350505050565b818103600083128015838313168383128216171561791457617914618cb956fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212205f76808fb3dc6dacf4bd766b2d0bf9d6beb64856c952cec8e267368511bd936a64736f6c634300081a0033608060405234801561001057600080fd5b506040516112a63803806112a683398101604081905261002f91610110565b604051806040016040528060048152602001635a65746160e01b815250604051806040016040528060048152602001635a45544160e01b815250816003908161007891906101e2565b50600461008582826101e2565b5050506001600160a01b03821615806100a557506001600160a01b038116155b156100c35760405163e6c4247b60e01b815260040160405180910390fd5b600680546001600160a01b039384166001600160a01b031991821617909155600780549290931691161790556102a0565b80516001600160a01b038116811461010b57600080fd5b919050565b6000806040838503121561012357600080fd5b61012c836100f4565b915061013a602084016100f4565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061016d57607f821691505b60208210810361018d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101dd57806000526020600020601f840160051c810160208510156101ba5750805b601f840160051c820191505b818110156101da57600081556001016101c6565b50505b505050565b81516001600160401b038111156101fb576101fb610143565b61020f816102098454610159565b84610193565b6020601f821160018114610243576000831561022b5750848201515b600019600385901b1c1916600184901b1784556101da565b600084815260208120601f198516915b828110156102735787850151825560209485019460019092019101610253565b50848210156102915786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610ff7806102af6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806342966c68116100b257806379cc679011610081578063a9059cbb11610066578063a9059cbb1461028e578063bff9662a146102a1578063dd62ed3e146102c157600080fd5b806379cc67901461027357806395d89b411461028657600080fd5b806342966c68146102025780635b1125911461021557806370a0823114610235578063779e3b631461026b57600080fd5b80631e458bee116100ee5780631e458bee1461018857806323b872dd1461019b578063313ce567146101ae578063328a01d0146101bd57600080fd5b806306fdde0314610120578063095ea7b31461013e57806315d57fd41461016157806318160ddd14610176575b600080fd5b610128610307565b6040516101359190610d97565b60405180910390f35b61015161014c366004610e2c565b610399565b6040519015158152602001610135565b61017461016f366004610e56565b6103b3565b005b6002545b604051908152602001610135565b610174610196366004610e89565b61057e565b6101516101a9366004610ebc565b610631565b60405160128152602001610135565b6007546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610135565b610174610210366004610ef9565b610655565b6006546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a610243366004610f12565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b610174610662565b610174610281366004610e2c565b610786565b610128610837565b61015161029c366004610e2c565b610846565b6005546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a6102cf366004610e56565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461031690610f34565b80601f016020809104026020016040519081016040528092919081815260200182805461034290610f34565b801561038f5780601f106103645761010080835404028352916020019161038f565b820191906000526020600020905b81548152906001019060200180831161037257829003601f168201915b5050505050905090565b6000336103a7818585610854565b60019150505b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff1633148015906103f3575060065473ffffffffffffffffffffffffffffffffffffffff163314155b15610431576040517fcdfcef970000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82161580610468575073ffffffffffffffffffffffffffffffffffffffff8116155b1561049f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006805473ffffffffffffffffffffffffffffffffffffffff8481167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316811790935560058054918516919092161790556040805133815260208101929092527fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff910160405180910390a16040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f1b9352454524a57a51f24f67dc66d898f616922cd1f7a12d73570ece12b1975c910160405180910390a15050565b60055473ffffffffffffffffffffffffffffffffffffffff1633146105d1576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6105db8383610866565b808373ffffffffffffffffffffffffffffffffffffffff167fc263b302aec62d29105026245f19e16f8e0137066ccd4a8bd941f716bd4096bb8460405161062491815260200190565b60405180910390a3505050565b60003361063f8582856108c6565b61064a858585610995565b506001949350505050565b61065f3382610a40565b50565b60075473ffffffffffffffffffffffffffffffffffffffff1633146106b5576040517fe700765e000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b60065473ffffffffffffffffffffffffffffffffffffffff16610704576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0910160405180910390a1565b60055473ffffffffffffffffffffffffffffffffffffffff1633146107d9576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6107e38282610a9c565b8173ffffffffffffffffffffffffffffffffffffffff167f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b18260405161082b91815260200190565b60405180910390a25050565b60606004805461031690610f34565b6000336103a7818585610995565b6108618383836001610ab1565b505050565b73ffffffffffffffffffffffffffffffffffffffff82166108b6576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c260008383610bf9565b5050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461098f5781811015610980576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401610428565b61098f84848484036000610ab1565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166109e5576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8216610a35576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b610861838383610bf9565b73ffffffffffffffffffffffffffffffffffffffff8216610a90576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c282600083610bf9565b610aa78233836108c6565b6108c28282610a40565b73ffffffffffffffffffffffffffffffffffffffff8416610b01576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8316610b51576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160209081526040808320938716835292905220829055801561098f578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610beb91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8316610c31578060026000828254610c269190610f87565b90915550610ce39050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610cb7576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810182905260448101839052606401610428565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff8216610d0c57600280548290039055610d38565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161062491815260200190565b602081526000825180602084015260005b81811015610dc55760208186018101516040868401015201610da8565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e2757600080fd5b919050565b60008060408385031215610e3f57600080fd5b610e4883610e03565b946020939093013593505050565b60008060408385031215610e6957600080fd5b610e7283610e03565b9150610e8060208401610e03565b90509250929050565b600080600060608486031215610e9e57600080fd5b610ea784610e03565b95602085013595506040909401359392505050565b600080600060608486031215610ed157600080fd5b610eda84610e03565b9250610ee860208501610e03565b929592945050506040919091013590565b600060208284031215610f0b57600080fd5b5035919050565b600060208284031215610f2457600080fd5b610f2d82610e03565b9392505050565b600181811c90821680610f4857607f821691505b602082108103610f81577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156103ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220e8a1f6a00b1b9c77fd6d8724e3829463441aaedd6b65190c6dc6c18bcc5810e364736f6c634300081a0033a264697066735822122059f9762f25845968011df54482a94d4f6d5e275adbedd6515fc638fe598dce6e64736f6c634300081a0033", } // 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 08e214d37..2b8f6fccc 100644 --- a/v2/pkg/gatewayevm.t.sol/gatewayevmtest.go +++ b/v2/pkg/gatewayevm.t.sol/gatewayevmtest.go @@ -67,7 +67,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\":\"DEFAULT_ADMIN_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\":\"testExecuteFailsIfDestinationIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteRevert\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteRevertFailsIfReceiverIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteRevertFailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteWithERC20FailsIfNotCustodyOrConnector\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteWithMsgContextFailsIfDestinationIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveNoParams\",\"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\":\"testForwardCallToReceiveNonPayableWithMsgContextFailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveOnCallFails\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveOnCallUsingAuthCall\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveOnRevertFails\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceivePayable\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testRevertWithERC20FailsIfNotCustodyOrConnector\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testSetConnectorFailsIfSenderIsNotAdmin\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testSetConnectorFailsIfSet\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testSetConnectorFailsIfZero\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testSetCustodyFailsIfSenderIsNotAdmin\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testSetCustodyFailsIfSet\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testSetCustodyFailsIfZero\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTSSUpgrade\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTSSUpgradeFailsIfSenderIsNotTSSUpdater\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTSSUpgradeFailsIfZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpgradeAndForwardCallToReceivePayable\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Called\",\"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\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposited\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposited\",\"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\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\":\"ReceivedOnCall\",\"inputs\":[],\"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\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unwhitelisted\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedCustodyTSSAddress\",\"inputs\":[{\"name\":\"oldTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedGatewayTSSAddress\",\"inputs\":[{\"name\":\"oldTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Whitelisted\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawn\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawnAndCalled\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"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\":\"WithdrawnAndReverted\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"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\":\"ConnectorInitialized\",\"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\":\"NotAllowedToCallOnCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotAllowedToCallOnRevert\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotWhitelistedInCustody\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PayloadSizeExceeded\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061efc28061003c6000396000f3fe608060405234801561001057600080fd5b50600436106102f45760003560e01c806385f438c111610191578063ce5871e1116100e3578063e63ab1e911610097578063fa18c09b11610071578063fa18c09b14610527578063fa7626d41461052f578063fe7bdbb21461053c57600080fd5b8063e63ab1e9146104f0578063e6afc79014610517578063f68bd1c01461051f57600080fd5b8063d38b66cd116100c8578063d38b66cd146104d8578063dd51e82f146104e0578063e20c9f71146104e857600080fd5b8063ce5871e1146104c8578063cebad2a6146104d057600080fd5b8063a783c78911610145578063b5508aa91161011f578063b5508aa9146104a0578063ba414fa6146104a8578063ccf20616146104c057600080fd5b8063a783c78914610469578063b0464fdc14610490578063b124dbf51461049857600080fd5b8063a217fddf11610176578063a217fddf14610451578063a397ffd214610459578063a56f7a4b1461046157600080fd5b806385f438c114610415578063916a17c61461043c57600080fd5b806344671b941161024a57806366d9a9a0116101fe5780637d7f772a116101d85780637d7f772a146103f05780637ebf744f146103f857806385226c811461040057600080fd5b806366d9a9a0146103cb5780636bdd212b146103e05780637a380ebf146103e857600080fd5b806351010e491161022f57806351010e491461038657806352ff59391461038e5780635d62c8601461039657600080fd5b806344671b94146103765780634df42da11461037e57600080fd5b80631855c337116102ac5780633e5e3c23116102865780633e5e3c231461035e5780633f7286f41461036657806343fd8c7d1461036e57600080fd5b80631855c337146103235780631ed7831c1461032b5780632ade38801461034957600080fd5b80630a9254e4116102dd5780630a9254e41461030b5780631226c65514610313578063130daf591461031b57600080fd5b806304b974f9146102f9578063070f2ad014610303575b600080fd5b610301610544565b005b610301610740565b610301610931565b610301611360565b6103016114d5565b61030161168c565b610333611806565b604051610340919061a6bc565b60405180910390f35b610351611868565b604051610340919061a758565b6103336119aa565b610333611a0a565b610301611a6a565b610301611db6565b610301612079565b6103016121ee565b6103016123ce565b6103bd7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b604051908152602001610340565b6103d3612936565b604051610340919061a8be565b610301612aa3565b610301612c62565b610301613282565b610301613572565b6104086136ec565b604051610340919061a9b8565b6103bd7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6104446137bc565b604051610340919061a9cb565b6103bd600081565b6103016138a2565b610301613bb5565b6103bd7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b610444613cf2565b610301613dd8565b61040861405c565b6104b061412c565b6040519015158152602001610340565b610301614200565b61030161433d565b6103016144b2565b6103016146c6565b61030161480c565b610333614fc7565b6103bd7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b610301615027565b610301615272565b61030161562a565b601f546104b09060ff1681565b61030161596f565b6040805160048082526024820183526020820180516001600160e01b03167f6ed7016900000000000000000000000000000000000000000000000000000000179052602754925163ca669fa760e01b81529192737109709ecfa91a80626ff3989d68f67f5b1dd12d9263ca669fa7926105d6926001600160a01b031691016001600160a01b0391909116815260200190565b600060405180830381600087803b1580156105f057600080fd5b505af1158015610604573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561068d57600080fd5b505af11580156106a1573d6000803e3d6000fd5b5050601f546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b03169250631cff79cd91506106f590600090859060040161aa62565b6000604051808303816000875af1158015610714573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261073c919081019061ab6c565b5050565b6027546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156107b257600080fd5b505af11580156107c6573d6000803e3d6000fd5b5050602754604080516001600160a01b039092166024830152600060448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061087d919060040161aba1565b600060405180830381600087803b15801561089757600080fd5b505af11580156108ab573d6000803e3d6000fd5b5050601f546025546040517f950837aa0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261010090920416925063950837aa91506024015b600060405180830381600087803b15801561091757600080fd5b505af115801561092b573d6000803e3d6000fd5b50505050565b602580547fffffffffffffffffffffffff000000000000000000000000000000000000000090811630179091556026805482166112341790556027805482166156781790556028805490911661987617905560405161098f9061a5dc565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610a14573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556027546040519116908190610a5d9061a5e9565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015610a90573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c000000000000000000000000000000000000602082015260275460255492519086169481019490945260448401929092529092166064820152600091610b6f916084015b60408051601f198184030181529190526020810180516001600160e01b03167fc0c53b8b00000000000000000000000000000000000000000000000000000000179052615dae565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0384811682029290921792839055604080518082018252601081527f4552433230437573746f64792e736f6c0000000000000000000000000000000060208201526027546025549251939095048416602484015293831660448301529091166064820152919250610c1291608401610b27565b602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383811691909117909155604080518082018252601a81527f5a657461436f6e6e6563746f724e6f6e4e61746976652e736f6c0000000000006020820152601f546024805460275460255495516101009094048716928401929092528516604483015284166064820152919092166084820152919250610d049160a40160408051601f198184030181529190526020810180516001600160e01b03167ff8c8765e00000000000000000000000000000000000000000000000000000000179052615dae565b602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038381169190911790915560275460405163ca669fa760e01b815291166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015610d8f57600080fd5b505af1158015610da3573d6000803e3d6000fd5b5050602480546027546022546040517f15d57fd40000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152908216938101939093521692506315d57fd49150604401600060405180830381600087803b158015610e1657600080fd5b505af1158015610e2a573d6000803e3d6000fd5b50505050604051610e3a9061a5f6565b604051809103906000f080158015610e56573d6000803e3d6000fd5b50602080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556027546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b158015610f0257600080fd5b505af1158015610f16573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610f8c57600080fd5b505af1158015610fa0573d6000803e3d6000fd5b5050601f546021546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261010090920416925063ae7a3a6f9150602401600060405180830381600087803b15801561100b57600080fd5b505af115801561101f573d6000803e3d6000fd5b5050601f546022546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526101009092041692506310188aef9150602401600060405180830381600087803b15801561108a57600080fd5b505af115801561109e573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561110057600080fd5b505af1158015611114573d6000803e3d6000fd5b50506023546025546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f42406024820152911692506340c10f199150604401600060405180830381600087803b15801561118357600080fd5b505af1158015611197573d6000803e3d6000fd5b50506023546021546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12060248201529116925063a9059cbb91506044016020604051808303816000875af115801561120b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122f919061abb4565b506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b1580156112b057600080fd5b505af11580156112c4573d6000803e3d6000fd5b5050604080516080810182526025546001600160a01b039081168252602354811660208084019182526001848601908152855191820190955260008152606084018190528351602d80549185167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161781559251602e8054919095169116179092559251602f5590935090915060309061092b908261ac6a565b6025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156113d257600080fd5b505af11580156113e6573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561146f57600080fd5b505af1158015611483573d6000803e3d6000fd5b5050601f546040517fae7a3a6f000000000000000000000000000000000000000000000000000000008152600060048201526101009091046001600160a01b0316925063ae7a3a6f91506024016108fd565b6040805160048082526024820183526020820180516001600160e01b03167fc9028a3600000000000000000000000000000000000000000000000000000000179052602754925163ca669fa760e01b81529192737109709ecfa91a80626ff3989d68f67f5b1dd12d9263ca669fa792611567926001600160a01b031691016001600160a01b0391909116815260200190565b600060405180830381600087803b15801561158157600080fd5b505af1158015611595573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527ff3459a96000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b15801561161f57600080fd5b505af1158015611633573d6000803e3d6000fd5b5050601f546020546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526101009092046001600160a01b039081169450631cff79cd93506106f592911690859060040161aa62565b6025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156116fe57600080fd5b505af1158015611712573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fb337f378000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b15801561179c57600080fd5b505af11580156117b0573d6000803e3d6000fd5b5050601f546021546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261010090920416925063ae7a3a6f91506024016108fd565b6060601680548060200260200160405190810160405280929190818152602001828054801561185e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611840575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b828210156119a157600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561198a5783829060005260206000200180546118fd9061abd6565b80601f01602080910402602001604051908101604052809291908181526020018280546119299061abd6565b80156119765780601f1061194b57610100808354040283529160200191611976565b820191906000526020600020905b81548152906001019060200180831161195957829003601f168201915b5050505050815260200190600101906118de565b50505050815250508152602001906001019061188c565b50505050905090565b6060601880548060200260200160405190810160405280929190818152602001828054801561185e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611840575050505050905090565b6060601780548060200260200160405190810160405280929190818152602001828054801561185e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611840575050505050905090565b604080516001808252818301909252600091816020015b6060815260200190600190039081611a815790505090506040518060400160405280600f81526020017f48656c6c6f2c20466f756e64727921000000000000000000000000000000000081525081600081518110611ae157611ae161ad29565b6020908102919091010152604080516001808252818301909252600091816020016020820280368337019050509050602a81600081518110611b2557611b2561ad29565b6020908102919091010152604051600190600090611b4b9085908590859060240161ad8a565b60408051601f198184030181529181526020820180516001600160e01b03167ff05b6abf00000000000000000000000000000000000000000000000000000000179052602554905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611be957600080fd5b505af1158015611bfd573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250611cd3919060040161aba1565b600060405180830381600087803b158015611ced57600080fd5b505af1158015611d01573d6000803e3d6000fd5b5050601f54604080516020808201835261012382525491517f38e225270000000000000000000000000000000000000000000000000000000081526101009093046001600160a01b0390811695506338e225279450611d689391921690869060040161adc2565b6000604051808303816000875af1158015611d87573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611daf919081019061ab6c565b5050505050565b604080516004808252602482018352602080830180516001600160e01b03167f6ed70169000000000000000000000000000000000000000000000000000000001790525492517ff30c7ba30000000000000000000000000000000000000000000000000000000081529192737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba392611e56926001600160a01b03169160009187910161adf4565b600060405180830381600087803b158015611e7057600080fd5b505af1158015611e84573d6000803e3d6000fd5b50506020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015611efd57600080fd5b505af1158015611f11573d6000803e3d6000fd5b5050601f546040516101009091046001600160a01b031681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09250602001905060405180910390a1601f546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611fd357600080fd5b505af1158015611fe7573d6000803e3d6000fd5b50506020546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f915061202d90600090859061ae1c565b60405180910390a260275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401611605565b6025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156120eb57600080fd5b505af11580156120ff573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561218857600080fd5b505af115801561219c573d6000803e3d6000fd5b5050601f546040517f950837aa000000000000000000000000000000000000000000000000000000008152600060048201526101009091046001600160a01b0316925063950837aa91506024016108fd565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152670de0b6b3a76400009060009060250160408051808303601f190181529082905260275463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561228e57600080fd5b505af11580156122a2573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561232b57600080fd5b505af115801561233f573d6000803e3d6000fd5b5050601f546040517fcb7ba8e50000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b0316925063cb7ba8e591508490612398906000908690602d9060040161af12565b6000604051808303818588803b1580156123b157600080fd5b505af11580156123c5573d6000803e3d6000fd5b50505050505050565b601f546040517f91d148540000000000000000000000000000000000000000000000000000000081527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb600482015261432160248201819052916000916101009091046001600160a01b0316906391d1485490604401602060405180830381865afa158015612461573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612485919061abb4565b905061249081615dcd565b601f546027546040517f91d148540000000000000000000000000000000000000000000000000000000081527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60048201526001600160a01b0391821660248201526000926101009004909116906391d1485490604401602060405180830381865afa158015612524573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612548919061abb4565b905061255381615e47565b6025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156125c557600080fd5b505af11580156125d9573d6000803e3d6000fd5b5050601f546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561265657600080fd5b505af115801561266a573d6000803e3d6000fd5b5050602754604080516001600160a01b03928316815291871660208301527f3a7b8d6372645f474fe60c115a2ef21421306a3ed4664fa0023c461413c08579935001905060405180910390a1601f546040517f950837aa0000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526101009092049091169063950837aa90602401600060405180830381600087803b15801561271c57600080fd5b505af1158015612730573d6000803e3d6000fd5b505050506127b483601f60019054906101000a90046001600160a01b03166001600160a01b0316635b1125916040518163ffffffff1660e01b8152600401602060405180830381865afa15801561278b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127af919061af46565b615e99565b601f546040517f91d148540000000000000000000000000000000000000000000000000000000081527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60048201526001600160a01b038581166024830152610100909204909116906391d1485490604401602060405180830381865afa158015612843573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612867919061abb4565b915061287282615e47565b601f546027546040517f91d148540000000000000000000000000000000000000000000000000000000081527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60048201526001600160a01b03918216602482015261010090920416906391d1485490604401602060405180830381865afa158015612902573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612926919061abb4565b905061293181615dcd565b505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156119a1578382906000526020600020906002020160405180604001604052908160008201805461298d9061abd6565b80601f01602080910402602001604051908101604052809291908181526020018280546129b99061abd6565b8015612a065780601f106129db57610100808354040283529160200191612a06565b820191906000526020600020905b8154815290600101906020018083116129e957829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015612a8b57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411612a4d5790505b5050505050815250508152602001906001019061295a565b6040805160048082526024820183526020820180516001600160e01b03167f6ed7016900000000000000000000000000000000000000000000000000000000179052602754925163ca669fa760e01b81529192737109709ecfa91a80626ff3989d68f67f5b1dd12d9263ca669fa792612b35926001600160a01b031691016001600160a01b0391909116815260200190565b600060405180830381600087803b158015612b4f57600080fd5b505af1158015612b63573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015612bec57600080fd5b505af1158015612c00573d6000803e3d6000fd5b5050601f5460408051602081018252610123815290517f38e225270000000000000000000000000000000000000000000000000000000081526101009092046001600160a01b031693506338e2252792506106f591600090869060040161adc2565b601f54604080518082018252601981527f4761746577617945564d55706772616465546573742e736f6c00000000000000602080830191909152825190810190925260008252602554612cc7936001600160a01b036101009091048116939116615f22565b601f54604080517fdda79b7500000000000000000000000000000000000000000000000000000000815290516101009092046001600160a01b031691600091839163dda79b75916004808201926020929091908290030181865afa158015612d33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d57919061af46565b90506000601f60019054906101000a90046001600160a01b03166001600160a01b0316635b1125916040518163ffffffff1660e01b8152600401602060405180830381865afa158015612dae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dd2919061af46565b604080518082018252600f81527f48656c6c6f2c20466f756e6472792100000000000000000000000000000000006020820152905191925090602a90600190670de0b6b3a764000090600090612e309086908690869060240161af6f565b60408051601f19818403018152918152602080830180516001600160e01b03167fe04d4f97000000000000000000000000000000000000000000000000000000001790525490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391612ed6916001600160a01b0391909116908690869060040161adf4565b600060405180830381600087803b158015612ef057600080fd5b505af1158015612f04573d6000803e3d6000fd5b50506020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015612f7d57600080fd5b505af1158015612f91573d6000803e3d6000fd5b505050507f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa601f60019054906101000a90046001600160a01b031683878787604051612fe195949392919061af99565b60405180910390a1601f546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561306257600080fd5b505af1158015613076573d6000803e3d6000fd5b50506020546040516001600160a01b0390911692507f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e854691506130bb908590859061ae1c565b60405180910390a260275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561311c57600080fd5b505af1158015613130573d6000803e3d6000fd5b50506020546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b03808d169450631cff79cd9350869261318292911690869060040161aa62565b60006040518083038185885af11580156131a0573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526131c9919081019061ab6c565b5061322187601f60019054906101000a90046001600160a01b03166001600160a01b031663dda79b756040518163ffffffff1660e01b8152600401602060405180830381865afa15801561278b573d6000803e3d6000fd5b61327886601f60019054906101000a90046001600160a01b03166001600160a01b0316635b1125916040518163ffffffff1660e01b8152600401602060405180830381865afa15801561278b573d6000803e3d6000fd5b5050505050505050565b604080516001808252818301909252600091816020015b60608152602001906001900390816132995790505090506040518060400160405280600f81526020017f48656c6c6f2c20466f756e647279210000000000000000000000000000000000815250816000815181106132f9576132f961ad29565b6020908102919091010152604080516001808252818301909252600091816020016020820280368337019050509050602a8160008151811061333d5761333d61ad29565b60209081029190910101526040516001906000906133639085908590859060240161ad8a565b60408051601f198184030181529181526020820180516001600160e01b03167ff05b6abf00000000000000000000000000000000000000000000000000000000179052602554905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561340157600080fd5b505af1158015613415573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506134eb919060040161aba1565b600060405180830381600087803b15801561350557600080fd5b505af1158015613519573d6000803e3d6000fd5b5050601f546020546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526101009092046001600160a01b039081169450631cff79cd9350611d6892911690859060040161aa62565b6025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156135e457600080fd5b505af11580156135f8573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f0c8dc016000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b15801561368257600080fd5b505af1158015613696573d6000803e3d6000fd5b5050601f546022546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526101009092041692506310188aef91506024016108fd565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156119a157838290600052602060002001805461372f9061abd6565b80601f016020809104026020016040519081016040528092919081815260200182805461375b9061abd6565b80156137a85780601f1061377d576101008083540402835291602001916137a8565b820191906000526020600020905b81548152906001019060200180831161378b57829003601f168201915b505050505081526020019060010190613710565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156119a15760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561388a57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161384c5790505b505050505081525050815260200190600101906137e0565b6020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561391757600080fd5b505af115801561392b573d6000803e3d6000fd5b50506040517f3658b46bab672c7672b69c2f0feda706eabdb7d2231421c96e9049b2db5e7eee925060009150a1601f546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156139d157600080fd5b505af11580156139e5573d6000803e3d6000fd5b505060208054604080518082018252600181527f310000000000000000000000000000000000000000000000000000000000000093810193909352516001600160a01b0390911693507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9250613a5d9160009161ae1c565b60405180910390a260275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613abe57600080fd5b505af1158015613ad2573d6000803e3d6000fd5b5050601f5460408051602080820183526101238252805483518085018552600181527f31000000000000000000000000000000000000000000000000000000000000009281019290925292517f38e225270000000000000000000000000000000000000000000000000000000081526101009094046001600160a01b0390811696506338e225279550613b6b949293169160040161adc2565b6000604051808303816000875af1158015613b8a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613bb2919081019061ab6c565b50565b6027546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b158015613c2757600080fd5b505af1158015613c3b573d6000803e3d6000fd5b5050602754604080516001600160a01b039092166024830152600060448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250611782919060040161aba1565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156119a15760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015613dc057602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411613d825790505b50505050508152505081526020019060010190613d16565b602354602654604051620186a0602482018190526001600160a01b03938416604483015292909116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a200000000000000000000000000000000000000000000000000000000179052602554905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613ea957600080fd5b505af1158015613ebd573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b960448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250613f93919060040161aba1565b600060405180830381600087803b158015613fad57600080fd5b505af1158015613fc1573d6000803e3d6000fd5b5050601f546023546026546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526101009093046001600160a01b03908116955063aa0c0fc19450614026939281169291169087908790602d9060040161afda565b600060405180830381600087803b15801561404057600080fd5b505af1158015614054573d6000803e3d6000fd5b505050505050565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156119a157838290600052602060002001805461409f9061abd6565b80601f01602080910402602001604051908101604052809291908181526020018280546140cb9061abd6565b80156141185780601f106140ed57610100808354040283529160200191614118565b820191906000526020600020905b8154815290600101906020018083116140fb57829003601f168201915b505050505081526020019060010190614080565b60085460009060ff1615614144575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa1580156141d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141f9919061b02f565b1415905090565b6027546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b15801561427257600080fd5b505af1158015614286573d6000803e3d6000fd5b5050602754604080516001600160a01b039092166024830152600060448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250613668919060040161aba1565b6025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156143af57600080fd5b505af11580156143c3573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561444c57600080fd5b505af1158015614460573d6000803e3d6000fd5b5050601f546040517f10188aef000000000000000000000000000000000000000000000000000000008152600060048201526101009091046001600160a01b031692506310188aef91506024016108fd565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152670de0b6b3a76400009060009060250160408051808303601f190181529082905260255463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561455257600080fd5b505af1158015614566573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061463c919060040161aba1565b600060405180830381600087803b15801561465657600080fd5b505af115801561466a573d6000803e3d6000fd5b5050601f546020546040517fcb7ba8e50000000000000000000000000000000000000000000000000000000081526001600160a01b036101009093048316945063cb7ba8e5935086926123989216908690602d9060040161af12565b60408051602081018252600080825291516146e691607b9160240161aa62565b60408051601f198184030181529181526020820180516001600160e01b03167f676cc05400000000000000000000000000000000000000000000000000000000179052602754905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561478457600080fd5b505af1158015614798573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fed699775000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401611605565b60285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561486557600080fd5b505af1158015614879573d6000803e3d6000fd5b5050602854604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061494f919060040161aba1565b600060405180830381600087803b15801561496957600080fd5b505af115801561497d573d6000803e3d6000fd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156149d157600080fd5b505af11580156149e5573d6000803e3d6000fd5b505060285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015614a4257600080fd5b505af1158015614a56573d6000803e3d6000fd5b5050602854604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250614b2c919060040161aba1565b600060405180830381600087803b158015614b4657600080fd5b505af1158015614b5a573d6000803e3d6000fd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015614bae57600080fd5b505af1158015614bc2573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015614c1f57600080fd5b505af1158015614c33573d6000803e3d6000fd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b158015614c8757600080fd5b505af1158015614c9b573d6000803e3d6000fd5b5050604080516004808252602480830184526020830180516001600160e01b03167f6ed701690000000000000000000000000000000000000000000000000000000017905292517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd93c06650000000000000000000000000000000000000000000000000000000091810191909152909350737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09101600060405180830381600087803b158015614d6857600080fd5b505af1158015614d7c573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015614dd957600080fd5b505af1158015614ded573d6000803e3d6000fd5b5050601f546020546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526101009092046001600160a01b039081169450631cff79cd9350614e4692911690859060040161aa62565b6000604051808303816000875af1158015614e65573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614e8d919081019061ab6c565b5060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614ee757600080fd5b505af1158015614efb573d6000803e3d6000fd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015614f4f57600080fd5b505af1158015614f63573d6000803e3d6000fd5b50506020546040517ff30c7ba3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f30c7ba39250611e56916001600160a01b031690600090869060040161adf4565b6060601580548060200260200160405190810160405280929190818152602001828054801561185e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611840575050505050905090565b602354602654604051620186a0602482018190526001600160a01b03938416604483015292909116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a200000000000000000000000000000000000000000000000000000000179052602554905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156150f857600080fd5b505af115801561510c573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b960448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506151e2919060040161aba1565b600060405180830381600087803b1580156151fc57600080fd5b505af1158015615210573d6000803e3d6000fd5b5050601f546023546026546040517f5131ab590000000000000000000000000000000000000000000000000000000081526101009093046001600160a01b039081169550635131ab59945061402693928116929116908790879060040161b048565b604080516001808252818301909252600091816020015b60608152602001906001900390816152895790505090506040518060400160405280600f81526020017f48656c6c6f2c20466f756e647279210000000000000000000000000000000000815250816000815181106152e9576152e961ad29565b6020908102919091010152604080516001808252818301909252600091816020016020820280368337019050509050602a8160008151811061532d5761532d61ad29565b60209081029190910101526040516001906000906153539085908590859060240161ad8a565b60408051601f19818403018152918152602080830180516001600160e01b03167ff05b6abf000000000000000000000000000000000000000000000000000000001790525490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba3916153fa916001600160a01b039190911690600090869060040161adf4565b600060405180830381600087803b15801561541457600080fd5b505af1158015615428573d6000803e3d6000fd5b50506020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156154a157600080fd5b505af11580156154b5573d6000803e3d6000fd5b505050507f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146601f60019054906101000a90046001600160a01b0316858585604051615503949392919061b07f565b60405180910390a1601f546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561558457600080fd5b505af1158015615598573d6000803e3d6000fd5b50506020546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f91506155de90600090859061ae1c565b60405180910390a260275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024016134eb565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152670de0b6b3a76400009060009060250160408051601f198184030181529190526020549091506001600160a01b03163161568e816000615f37565b6020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561570357600080fd5b505af1158015615717573d6000803e3d6000fd5b505050507f689a5a5cb55e795ffe4cd8b419cd3bb0a3373974c54d25f64e734d7388b93e9b601f60019054906101000a90046001600160a01b0316602d60405161576292919061b0c7565b60405180910390a1601f546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156157e357600080fd5b505af11580156157f7573d6000803e3d6000fd5b5050602054604051600093506001600160a01b0390911691507fde7603a6ed5d07c9f43597ccfe9043d15b66d3284f0de321f5cdf56329e6e0359061584a90670de0b6b3a7640000908790602d9061b0e9565b60405180910390a360275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156158ab57600080fd5b505af11580156158bf573d6000803e3d6000fd5b5050601f546020546040517fcb7ba8e50000000000000000000000000000000000000000000000000000000081526001600160a01b036101009093048316945063cb7ba8e59350879261591b9216908790602d9060040161af12565b6000604051808303818588803b15801561593457600080fd5b505af1158015615948573d6000803e3d6000fd5b50506020546001600160a01b031631925061092b9150829050670de0b6b3a7640000615f37565b60408051808201909152600f81527f48656c6c6f2c20466f756e64727921000000000000000000000000000000000060208083019190915254602a90600190670de0b6b3a7640000906159ce906000906001600160a01b031631615f37565b60008484846040516024016159e59392919061af6f565b60408051601f19818403018152918152602080830180516001600160e01b03167fe04d4f97000000000000000000000000000000000000000000000000000000001790525490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391615a93916001600160a01b039190911690670de0b6b3a764000090869060040161adf4565b600060405180830381600087803b158015615aad57600080fd5b505af1158015615ac1573d6000803e3d6000fd5b50506020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015615b3a57600080fd5b505af1158015615b4e573d6000803e3d6000fd5b505050507f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa601f60019054906101000a90046001600160a01b031683878787604051615b9e95949392919061af99565b60405180910390a1601f546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015615c1f57600080fd5b505af1158015615c33573d6000803e3d6000fd5b50506020546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150615c8090670de0b6b3a764000090859061ae1c565b60405180910390a260275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015615ce157600080fd5b505af1158015615cf5573d6000803e3d6000fd5b5050601f546020546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b0361010090930483169450631cff79cd93508692615d4e921690869060040161aa62565b60006040518083038185885af1158015615d6c573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052615d95919081019061ab6c565b50602054611daf9083906001600160a01b031631615f37565b6000615db861a603565b615dc3848483615f8f565b9150505b92915050565b6040517fa59828850000000000000000000000000000000000000000000000000000000081528115156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063a5982885906024015b60006040518083038186803b158015615e3357600080fd5b505afa158015611daf573d6000803e3d6000fd5b6040517f0c9fd5810000000000000000000000000000000000000000000000000000000081528115156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90630c9fd58190602401615e1b565b6040517f515361f60000000000000000000000000000000000000000000000000000000081526001600160a01b03808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f6906044015b60006040518083038186803b158015615f0e57600080fd5b505afa158015614054573d6000803e3d6000fd5b615f2a61a603565b611daf858585848661600a565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c5490604401615ef6565b600080615f9c858461610a565b9050615fff6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001615fea92919061aa62565b60405160208183030381529060405285616116565b9150505b9392505050565b6040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201528190737109709ecfa91a80626ff3989d68f67f5b1dd12d9081906306447d5690602401600060405180830381600087803b15801561607c57600080fd5b505af192505050801561608d575060015b6160a25761609d87878787616144565b6123c5565b6160ae87878787616144565b806001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156160e957600080fd5b505af11580156160fd573d6000803e3d6000fd5b5050505050505050505050565b6000616003838361615d565b60c0810151516000901561613a5761613384848460c00151616178565b9050616003565b616133848461631e565b60006161508483616409565b9050611daf858285616415565b600061616983836167df565b61600383836020015184616116565b6000806161836167eb565b9050600061619186836168be565b905060006161a88260600151836020015185616d64565b905060006161b883838989616f76565b905060006161c582617df3565b602081015181519192509060030b15616238578982604001516040516020016161ef92919061b102565b60408051601f19818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261622f9160040161aba1565b60405180910390fd5b600061627b6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001617fc2565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d906162ce90849060040161aba1565b602060405180830381865afa1580156162eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061630f919061af46565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc9259061637390879060040161aba1565b600060405180830381865afa158015616390573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526163b8919081019061ab6c565b905060006163e682856040516020016163d292919061b183565b6040516020818303038152906040526181c2565b90506001600160a01b038116615dc35784846040516020016161ef92919061b1b2565b600061616983836181d5565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201527fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61036024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90600090829063667f9d7090604401602060405180830381865afa1580156164b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906164d5919061b02f565b90508061667c5760006164e7866181e1565b604080518082018252600581527f352e302e3000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150616572905b604080518082018252600080825260209182015281518083019092528451825280850190820152906182c4565b8061657e575060008451115b15616601576040517f4f1ef2860000000000000000000000000000000000000000000000000000000081526001600160a01b03871690634f1ef286906165ca908890889060040161aa62565b600060405180830381600087803b1580156165e457600080fd5b505af11580156165f8573d6000803e3d6000fd5b50505050616676565b6040517f3659cfe60000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152871690633659cfe690602401600060405180830381600087803b15801561665d57600080fd5b505af1158015616671573d6000803e3d6000fd5b505050505b50611daf565b806000616688826181e1565b604080518082018252600581527f352e302e30000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506166ea90616545565b806166f6575060008551115b1561677b576040517f9623609d0000000000000000000000000000000000000000000000000000000081526001600160a01b03831690639623609d90616744908a908a908a9060040161b25d565b600060405180830381600087803b15801561675e57600080fd5b505af1158015616772573d6000803e3d6000fd5b505050506123c5565b6040517f99a88ec40000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015287811660248301528316906399a88ec490604401600060405180830381600087803b1580156160e957600080fd5b61073c828260006182d8565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c9061687290849060040161b28e565b600060405180830381865afa15801561688f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526168b7919081019061b2d5565b9250505090565b6168f06040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d905061693b6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b616944856183db565b60208201526000616954866187c0565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015616996573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526169be919081019061b2d5565b868385602001516040516020016169d8949392919061b31e565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190616a3090859060040161aba1565b600060405180830381865afa158015616a4d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616a75919081019061b2d5565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690616abd90849060040161b422565b602060405180830381865afa158015616ada573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616afe919061abb4565b616b1357816040516020016161ef919061b474565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890616b5890849060040161b506565b600060405180830381865afa158015616b75573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616b9d919081019061b2d5565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690616be490849060040161b558565b602060405180830381865afa158015616c01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616c25919061abb4565b15616cba576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890616c6f90849060040161b558565b600060405180830381865afa158015616c8c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616cb4919081019061b2d5565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001616cdf919061b5aa565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401616d0b92919061b616565b600060405180830381865afa158015616d28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616d50919081019061b2d5565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081616d805790505090506040518060400160405280600481526020017f677265700000000000000000000000000000000000000000000000000000000081525081600081518110616de057616de061ad29565b60200260200101819052506040518060400160405280600381526020017f2d726c000000000000000000000000000000000000000000000000000000000081525081600181518110616e3457616e3461ad29565b602002602001018190525084604051602001616e50919061b63b565b60405160208183030381529060405281600281518110616e7257616e7261ad29565b602002602001018190525082604051602001616e8e919061b6a7565b60405160208183030381529060405281600381518110616eb057616eb061ad29565b60200260200101819052506000616ec682617df3565b602080820151604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000008185019081528251808401845260008082529086015282518084019093529051825292810192909252919250616f579060408051808201825260008082526020918201528151808301909252845182528085019082015290618a43565b616f6c57856040516020016161ef919061b6e8565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015616fc6565b511590565b61713a57826020015115617082576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a40161622f565b8260c001511561713a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a40161622f565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161715357905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806171ae9061b7a8565b935060ff16815181106171c3576171c361ad29565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001617214919061b7c7565b60405160208183030381529060405282828061722f9061b7a8565b935060ff16815181106172445761724461ad29565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806172919061b7a8565b935060ff16815181106172a6576172a661ad29565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806172f39061b7a8565b935060ff16815181106173085761730861ad29565b602002602001018190525087602001518282806173249061b7a8565b935060ff16815181106173395761733961ad29565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806173869061b7a8565b935060ff168151811061739b5761739b61ad29565b6020908102919091010152875182826173b38161b7a8565b935060ff16815181106173c8576173c861ad29565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806174159061b7a8565b935060ff168151811061742a5761742a61ad29565b602002602001018190525061743e46618aa4565b82826174498161b7a8565b935060ff168151811061745e5761745e61ad29565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c6500000000000000000000000000000000008152508282806174ab9061b7a8565b935060ff16815181106174c0576174c061ad29565b6020026020010181905250868282806174d89061b7a8565b935060ff16815181106174ed576174ed61ad29565b60209081029190910101528551156176145760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261753e8161b7a8565b935060ff16815181106175535761755361ad29565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d906175a390899060040161aba1565b600060405180830381865afa1580156175c0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526175e8919081019061b2d5565b82826175f38161b7a8565b935060ff16815181106176085761760861ad29565b60200260200101819052505b8460200151156176e45760408051808201909152601281527f2d2d766572696679536f75726365436f646500000000000000000000000000006020820152828261765d8161b7a8565b935060ff16815181106176725761767261ad29565b60200260200101819052506040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152508282806176bf9061b7a8565b935060ff16815181106176d4576176d461ad29565b60200260200101819052506178ab565b61771c616fc18660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6177af5760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828261775f8161b7a8565b935060ff16815181106177745761777461ad29565b60200260200101819052508460a00151604051602001617794919061b63b565b6040516020818303038152906040528282806176bf9061b7a8565b8460c001511580156177f25750604080890151815180830183526000808252602091820152825180840190935281518352908101908201526177f090511590565b155b156178ab5760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826178368161b7a8565b935060ff168151811061784b5761784b61ad29565b602002602001018190525061785f88618b44565b60405160200161786f919061b63b565b60405160208183030381529060405282828061788a9061b7a8565b935060ff168151811061789f5761789f61ad29565b60200260200101819052505b604080860151815180830183526000808252602091820152825180840190935281518352908101908201526178df90511590565b6179745760408051808201909152600b81527f2d2d72656c617965724964000000000000000000000000000000000000000000602082015282826179228161b7a8565b935060ff16815181106179375761793761ad29565b602002602001018190525084604001518282806179539061b7a8565b935060ff16815181106179685761796861ad29565b60200260200101819052505b606085015115617a955760408051808201909152600681527f2d2d73616c740000000000000000000000000000000000000000000000000000602082015282826179bd8161b7a8565b935060ff16815181106179d2576179d261ad29565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015617a41573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617a69919081019061b2d5565b8282617a748161b7a8565b935060ff1681518110617a8957617a8961ad29565b60200260200101819052505b60e08501515115617b3c5760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282617adf8161b7a8565b935060ff1681518110617af457617af461ad29565b6020026020010181905250617b108560e0015160000151618aa4565b8282617b1b8161b7a8565b935060ff1681518110617b3057617b3061ad29565b60200260200101819052505b60e08501516020015115617be65760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282617b898161b7a8565b935060ff1681518110617b9e57617b9e61ad29565b6020026020010181905250617bba8560e0015160200151618aa4565b8282617bc58161b7a8565b935060ff1681518110617bda57617bda61ad29565b60200260200101819052505b60e08501516040015115617c905760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282617c338161b7a8565b935060ff1681518110617c4857617c4861ad29565b6020026020010181905250617c648560e0015160400151618aa4565b8282617c6f8161b7a8565b935060ff1681518110617c8457617c8461ad29565b60200260200101819052505b60e08501516060015115617d3a5760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282617cdd8161b7a8565b935060ff1681518110617cf257617cf261ad29565b6020026020010181905250617d0e8560e0015160600151618aa4565b8282617d198161b7a8565b935060ff1681518110617d2e57617d2e61ad29565b60200260200101819052505b60008160ff1667ffffffffffffffff811115617d5857617d5861aa84565b604051908082528060200260200182016040528015617d8b57816020015b6060815260200190600190039081617d765790505b50905060005b8260ff168160ff161015617de457838160ff1681518110617db457617db461ad29565b6020026020010151828260ff1681518110617dd157617dd161ad29565b6020908102919091010152600101617d91565b5093505050505b949350505050565b617e1a6040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c91617ea09186910161b832565b600060405180830381865afa158015617ebd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617ee5919081019061b2d5565b90506000617ef38683619633565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401617f23919061a9b8565b6000604051808303816000875af1158015617f42573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617f6a919081019061b879565b805190915060030b15801590617f835750602081015151155b8015617f925750604081015151155b15616f6c5781600081518110617faa57617faa61ad29565b60200260200101516040516020016161ef919061b92f565b60606000617ff78560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252865182528087019082015290915061802e9082905b90619788565b1561818b5760006180ab826180a58461809f6180718a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b906197af565b90619811565b604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061810f908290619788565b1561817957604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618176905b8290619896565b90505b618182816198bc565b92505050616003565b82156181a45784846040516020016161ef92919061bb1b565b5050604080516020810190915260008152616003565b509392505050565b6000808251602084016000f09392505050565b61073c828260016182d8565b60408051600481526024810182526020810180516001600160e01b03167fad3cb1cc00000000000000000000000000000000000000000000000000000000179052905160609160009182916001600160a01b03861691618241919061bbc2565b600060405180830381855afa9150503d806000811461827c576040519150601f19603f3d011682016040523d82523d6000602084013e618281565b606091505b5091509150818015618294575060208151115b156182ad5780806020019051810190617deb919061b2d5565b505060408051602081019091526000815292915050565b60006182d08383619925565b159392505050565b8160a00151156182e757505050565b60006182f4848484619a00565b9050600061830182617df3565b602081015181519192509060030b15801561839d5750604080518082018252600781527f53554343455353000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261839d90604080518082018252600080825260209182015281518083019092528451825280850190820152618028565b156183aa57505050505050565b604082015151156183ca5781604001516040516020016161ef919061bbde565b806040516020016161ef919061bc3c565b606060006184108360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150618475905b8290618a43565b156184e457604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616003906184df908390619f9b565b6198bc565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618546905b829061a025565b60010361861357604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526185ac9061816f565b50604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616003906184df905b8390619896565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526186729061846e565b156187a957604080518082018252600181527f2f000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201819052845180860190955292518452830152906186da90839061a0bf565b9050600081600183516186ed919061bca7565b815181106186fd576186fd61ad29565b602002602001015190506187a06184df6187736040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290619f9b565b95945050505050565b826040516020016161ef919061bcba565b50919050565b606060006187f58360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506188579061846e565b1561886557616003816198bc565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526188c49061853f565b60010361892e57604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616003906184df9061860c565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261898d9061846e565b156187a957604080518082018252600181527f2f000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201819052845180860190955292518452830152906189f590839061a0bf565b9050600181511115618a31578060028251618a10919061bca7565b81518110618a2057618a2061ad29565b602002602001015192505050919050565b50826040516020016161ef919061bcba565b805182516000911115618a5857506000615dc7565b81518351602085015160009291618a6e9161bd98565b618a78919061bca7565b905082602001518103618a8f576001915050615dc7565b82516020840151819020912014905092915050565b60606000618ab18361a164565b600101905060008167ffffffffffffffff811115618ad157618ad161aa84565b6040519080825280601f01601f191660200182016040528015618afb576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084618b0557509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091618bd0905b82906182c4565b15618c1057505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618c6f90618bc9565b15618caf57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618d0e90618bc9565b15618d4e57505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618dad90618bc9565b80618e125750604080518082018252601081527f47504c2d322e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618e1290618bc9565b15618e5257505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618eb190618bc9565b80618f165750604080518082018252601081527f47504c2d332e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618f1690618bc9565b15618f5657505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618fb590618bc9565b8061901a5750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261901a90618bc9565b1561905a57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526190b990618bc9565b8061911e5750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261911e90618bc9565b1561915e57505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526191bd90618bc9565b156191fd57505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261925c90618bc9565b1561929c57505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526192fb90618bc9565b1561933b57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261939a90618bc9565b156193da57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261943990618bc9565b1561947957505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526194d890618bc9565b8061953d5750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261953d90618bc9565b1561957d57505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e31000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526195dc90618bc9565b1561961c57505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b604080840151845191516161ef929060200161bdab565b60608060005b84518110156196be57818582815181106196555761965561ad29565b602002602001015160405160200161966e92919061b183565b60405160208183030381529060405291506001855161968d919061bca7565b81146196b657816040516020016196a4919061bf14565b60405160208183030381529060405291505b600101619639565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816196d757905050905083816000815181106197025761970261ad29565b60200260200101819052506040518060400160405280600281526020017f2d63000000000000000000000000000000000000000000000000000000000000815250816001815181106197565761975661ad29565b602002602001018190525081816002815181106197755761977561ad29565b6020908102919091010152949350505050565b60208083015183518351928401516000936197a6929184919061a246565b14159392505050565b604080518082019091526000808252602082015260006197e1846000015185602001518560000151866020015161a357565b90508360200151816197f3919061bca7565b8451859061980290839061bca7565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015619836575081615dc7565b602080830151908401516001911461985d5750815160208481015190840151829020919020145b801561988e5782518451859061987490839061bca7565b905250825160208501805161988a90839061bd98565b9052505b509192915050565b60408051808201909152600080825260208201526198b583838361a477565b5092915050565b60606000826000015167ffffffffffffffff8111156198dd576198dd61aa84565b6040519080825280601f01601f191660200182016040528015619907576020820181803683370190505b50905060006020820190506198b5818560200151866000015161a522565b8151815160009190811115619938575081515b6020808501519084015160005b838110156199f157825182518082146199c15760001960208710156199a05760018461997289602061bca7565b61997c919061bd98565b61998790600861bf55565b61999290600261c053565b61999c919061bca7565b1990505b81811683821681810391146199be579750615dc79650505050505050565b50505b6199cc60208661bd98565b94506199d960208561bd98565b935050506020816199ea919061bd98565b9050619945565b5084518651616f6c919061c05f565b60606000619a0c6167eb565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081619a2957905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280619a849061b7a8565b935060ff1681518110619a9957619a9961ad29565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001619aea919061c07f565b604051602081830303815290604052828280619b059061b7a8565b935060ff1681518110619b1a57619b1a61ad29565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280619b679061b7a8565b935060ff1681518110619b7c57619b7c61ad29565b602002602001018190525082604051602001619b98919061b6a7565b604051602081830303815290604052828280619bb39061b7a8565b935060ff1681518110619bc857619bc861ad29565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280619c159061b7a8565b935060ff1681518110619c2a57619c2a61ad29565b6020026020010181905250619c3f878461a59c565b8282619c4a8161b7a8565b935060ff1681518110619c5f57619c5f61ad29565b602090810291909101015285515115619d0b5760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282619cb18161b7a8565b935060ff1681518110619cc657619cc661ad29565b6020026020010181905250619cdf86600001518461a59c565b8282619cea8161b7a8565b935060ff1681518110619cff57619cff61ad29565b60200260200101819052505b856080015115619d795760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282619d548161b7a8565b935060ff1681518110619d6957619d6961ad29565b6020026020010181905250619ddf565b8415619ddf5760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282619dbe8161b7a8565b935060ff1681518110619dd357619dd361ad29565b60200260200101819052505b60408601515115619e7b5760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282619e298161b7a8565b935060ff1681518110619e3e57619e3e61ad29565b60200260200101819052508560400151828280619e5a9061b7a8565b935060ff1681518110619e6f57619e6f61ad29565b60200260200101819052505b856060015115619ee55760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282619ec48161b7a8565b935060ff1681518110619ed957619ed961ad29565b60200260200101819052505b60008160ff1667ffffffffffffffff811115619f0357619f0361aa84565b604051908082528060200260200182016040528015619f3657816020015b6060815260200190600190039081619f215790505b50905060005b8260ff168160ff161015619f8f57838160ff1681518110619f5f57619f5f61ad29565b6020026020010151828260ff1681518110619f7c57619f7c61ad29565b6020908102919091010152600101619f3c565b50979650505050505050565b6040805180820190915260008082526020820152815183511015619fc0575081615dc7565b81518351602085015160009291619fd69161bd98565b619fe0919061bca7565b6020840151909150600190821461a001575082516020840151819020908220145b801561a01c5783518551869061a01890839061bca7565b9052505b50929392505050565b600080826000015161a049856000015186602001518660000151876020015161a357565b61a053919061bd98565b90505b8351602085015161a067919061bd98565b81116198b5578161a0778161c0c4565b925050826000015161a0ae85602001518361a092919061bca7565b865161a09e919061bca7565b838660000151876020015161a357565b61a0b8919061bd98565b905061a056565b6060600061a0cd848461a025565b61a0d890600161bd98565b67ffffffffffffffff81111561a0f05761a0f061aa84565b60405190808252806020026020018201604052801561a12357816020015b606081526020019060019003908161a10e5790505b50905060005b81518110156181ba5761a13f6184df8686619896565b82828151811061a1515761a15161ad29565b602090810291909101015260010161a129565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061a1ad577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831061a1d9576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061a1f757662386f26fc10000830492506010015b6305f5e100831061a20f576305f5e100830492506008015b612710831061a22357612710830492506004015b6064831061a235576064830492506002015b600a8310615dc75760010192915050565b60008085841161a34d576020841161a2f9576000841561a29157600161a26d86602061bca7565b61a27890600861bf55565b61a28390600261c053565b61a28d919061bca7565b1990505b835181168561a2a0898961bd98565b61a2aa919061bca7565b805190935082165b81811461a2e45787841161a2cc5787945050505050617deb565b8361a2d68161c0de565b94505082845116905061a2b2565b61a2ee878561bd98565b945050505050617deb565b83832061a306858861bca7565b61a310908761bd98565b91505b85821061a34b5784822080820361a3385761a32e868461bd98565b9350505050617deb565b61a34360018461bca7565b92505061a313565b505b5092949350505050565b6000838186851161a462576020851161a411576000851561a3a357600161a37f87602061bca7565b61a38a90600861bf55565b61a39590600261c053565b61a39f919061bca7565b1990505b8451811660008761a3b48b8b61bd98565b61a3be919061bca7565b855190915083165b82811461a4035781861061a3eb5761a3de8b8b61bd98565b9650505050505050617deb565b8561a3f58161c0c4565b96505083865116905061a3c6565b859650505050505050617deb565b508383206000905b61a423868961bca7565b821161a4605785832080820361a43f5783945050505050617deb565b61a44a60018561bd98565b935050818061a4589061c0c4565b92505061a419565b505b61a46c878761bd98565b979650505050505050565b6040805180820190915260008082526020820152600061a4a9856000015186602001518660000151876020015161a357565b60208087018051918601919091525190915061a4c5908261bca7565b83528451602086015161a4d8919061bd98565b810361a4e7576000855261a519565b8351835161a4f5919061bd98565b8551869061a50490839061bca7565b905250835161a513908261bd98565b60208601525b50909392505050565b6020811061a55a578151835261a53960208461bd98565b925061a54660208361bd98565b915061a55360208261bca7565b905061a522565b600019811561a58957600161a57083602061bca7565b61a57c9061010061c053565b61a586919061bca7565b90505b9151835183169219169190911790915250565b6060600061a5aa84846168be565b805160208083015160405193945061a5c49390910161c0f5565b60405160208183030381529060405291505092915050565b610c9f8061c14e83390190565b6112a68061cded83390190565b610efa8061e09383390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161a64661a64b565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161a6466040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b8181101561a6fd5783516001600160a01b031683526020938401939092019160010161a6d6565b509095945050505050565b60005b8381101561a72357818101518382015260200161a70b565b50506000910152565b6000815180845261a74481602086016020860161a708565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a854577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b8181101561a83a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261a82484865161a72c565b602095860195909450929092019160010161a7ea565b50919750505060209485019492909201915060010161a780565b50929695505050505050565b600081518084526020840193506020830160005b8281101561a8b45781517fffffffff000000000000000000000000000000000000000000000000000000001686526020958601959091019060010161a874565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a854577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516040875261a92a604088018261a72c565b905060208201519150868103602088015261a945818361a860565b96505050602093840193919091019060010161a8e6565b600082825180855260208501945060208160051b8301016020850160005b8381101561a9ac57601f1985840301885261a99683835161a72c565b602098890198909350919091019060010161a97a565b50909695505050505050565b602081526000616003602083018461a95c565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a854577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b038151168652602081015190506040602087015261aa4c604087018261a860565b955050602093840193919091019060010161a9f3565b6001600160a01b0383168152604060208201526000617deb604083018461a72c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561aad65761aad661aa84565b60405290565b60008067ffffffffffffffff84111561aaf75761aaf761aa84565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561ab265761ab2661aa84565b60405283815290508082840185101561ab3e57600080fd5b6181ba84602083018561a708565b600082601f83011261ab5d57600080fd5b6160038383516020850161aadc565b60006020828403121561ab7e57600080fd5b815167ffffffffffffffff81111561ab9557600080fd5b615dc38482850161ab4c565b602081526000616003602083018461a72c565b60006020828403121561abc657600080fd5b8151801515811461600357600080fd5b600181811c9082168061abea57607f821691505b6020821081036187ba577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b601f82111561293157806000526020600020601f840160051c8101602085101561ac4a5750805b601f840160051c820191505b81811015611daf576000815560010161ac56565b815167ffffffffffffffff81111561ac845761ac8461aa84565b61ac988161ac92845461abd6565b8461ac23565b6020601f82116001811461accc576000831561acb45750848201515b600019600385901b1c1916600184901b178455611daf565b600084815260208120601f198516915b8281101561acfc578785015182556020948501946001909201910161acdc565b508482101561ad1a5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081518084526020840193506020830160005b8281101561a8b457815186526020958601959091019060010161ad6c565b60608152600061ad9d606083018661a95c565b828103602084015261adaf818661ad58565b9150508215156040830152949350505050565b6001600160a01b0384511681526001600160a01b03831660208201526060604082015260006187a0606083018461a72c565b6001600160a01b03841681528260208201526060604082015260006187a0606083018461a72c565b828152604060208201526000617deb604083018461a72c565b6001600160a01b0381541682526001600160a01b03600182015416602083015260028101546040830152600060038201608060608501526000815461ae798161abd6565b806080880152600182166000811461ae98576001811461aed25761af06565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831660a089015260a082151560051b890101935061af06565b84600052602060002060005b8381101561aefd5781548a820160a0015260019091019060200161aede565b890160a0019450505b50919695505050505050565b6001600160a01b038416815260606020820152600061af34606083018561a72c565b8281036040840152616f6c818561ae35565b60006020828403121561af5857600080fd5b81516001600160a01b038116811461600357600080fd5b60608152600061af82606083018661a72c565b602083019490945250901515604090910152919050565b6001600160a01b038616815284602082015260a06040820152600061afc160a083018661a72c565b6060830194909452509015156080909101529392505050565b6001600160a01b03861681526001600160a01b038516602082015283604082015260a06060820152600061b01160a083018561a72c565b828103608084015261b023818561ae35565b98975050505050505050565b60006020828403121561b04157600080fd5b5051919050565b6001600160a01b03851681526001600160a01b0384166020820152826040820152608060608201526000616f6c608083018461a72c565b6001600160a01b038516815260806020820152600061b0a1608083018661a95c565b828103604084015261b0b3818661ad58565b915050821515606083015295945050505050565b6001600160a01b0383168152604060208201526000617deb604083018461ae35565b83815260606020820152600061af34606083018561a72c565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161b13a81601a85016020880161a708565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161b17781601c84016020880161a708565b01601c01949350505050565b6000835161b19581846020880161a708565b83519083019061b1a981836020880161a708565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161b1ea81601a85016020880161a708565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161b22781603384016020880161a708565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b6001600160a01b03841681526001600160a01b03831660208201526060604082015260006187a0606083018461a72c565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000616003608083018461a72c565b60006020828403121561b2e757600080fd5b815167ffffffffffffffff81111561b2fe57600080fd5b8201601f8101841361b30f57600080fd5b615dc38482516020840161aadc565b6000855161b330818460208a0161a708565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161b36a816001840160208a0161a708565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161b3a881600284016020890161a708565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161b3ea81600284016020880161a708565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061b435604083018461a72c565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161b4ac81601f85016020870161a708565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061b519604083018461a72c565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061b56b604083018461a72c565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161b5e281601485016020870161a708565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061b629604083018561a72c565b8281036020840152615fff818561a72c565b7f220000000000000000000000000000000000000000000000000000000000000081526000825161b67381600185016020870161a708565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161b6b981846020870161a708565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161b76c81604b85016020870161a708565b91909101604b0192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff810361b7be5761b7be61b779565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161b82581602985016020870161a708565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000616003608083018461a72c565b60006020828403121561b88b57600080fd5b815167ffffffffffffffff81111561b8a257600080fd5b82016060818503121561b8b457600080fd5b61b8bc61aab3565b81518060030b811461b8cd57600080fd5b8152602082015167ffffffffffffffff81111561b8e957600080fd5b61b8f58682850161ab4c565b602083015250604082015167ffffffffffffffff81111561b91557600080fd5b61b9218682850161ab4c565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161b98d81602185016020870161a708565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161bb7981602185016020880161a708565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161bbb681602e84016020880161a708565b01602e01949350505050565b6000825161bbd481846020870161a708565b9190910192915050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161b82581602985016020870161a708565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161bc9a81602285016020870161a708565b9190910160220192915050565b81810381811115615dc757615dc761b779565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161bcf281600e85016020870161a708565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b80820180821115615dc757615dc761b779565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161bde381601885016020880161a708565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161be2081601c84016020880161a708565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161bf2681846020870161a708565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b8082028115828204841417615dc757615dc761b779565b6001815b600184111561bfa75780850481111561bf8b5761bf8b61b779565b600184161561bf9957908102905b60019390931c92800261bf70565b935093915050565b60008261bfbe57506001615dc7565b8161bfcb57506000615dc7565b816001811461bfe1576002811461bfeb5761c007565b6001915050615dc7565b60ff84111561bffc5761bffc61b779565b50506001821b615dc7565b5060208310610133831016604e8410600b841016171561c02a575081810a615dc7565b61c037600019848461bf6c565b806000190482111561c04b5761c04b61b779565b029392505050565b6000616003838361bfaf565b81810360008312801583831316838312821617156198b5576198b561b779565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161c0b781601c85016020870161a708565b91909101601c0192915050565b6000600019820361c0d75761c0d761b779565b5060010190565b60008161c0ed5761c0ed61b779565b506000190190565b6000835161c10781846020880161a708565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161c14181600184016020880161a708565b0160010194935050505056fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220a043c41353215fce25ecb67a8a4f6f724aaa86dea8dcb0a6975bfb1f10ff3beb64736f6c634300081a0033608060405234801561001057600080fd5b506040516112a63803806112a683398101604081905261002f91610110565b604051806040016040528060048152602001635a65746160e01b815250604051806040016040528060048152602001635a45544160e01b815250816003908161007891906101e2565b50600461008582826101e2565b5050506001600160a01b03821615806100a557506001600160a01b038116155b156100c35760405163e6c4247b60e01b815260040160405180910390fd5b600680546001600160a01b039384166001600160a01b031991821617909155600780549290931691161790556102a0565b80516001600160a01b038116811461010b57600080fd5b919050565b6000806040838503121561012357600080fd5b61012c836100f4565b915061013a602084016100f4565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061016d57607f821691505b60208210810361018d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101dd57806000526020600020601f840160051c810160208510156101ba5750805b601f840160051c820191505b818110156101da57600081556001016101c6565b50505b505050565b81516001600160401b038111156101fb576101fb610143565b61020f816102098454610159565b84610193565b6020601f821160018114610243576000831561022b5750848201515b600019600385901b1c1916600184901b1784556101da565b600084815260208120601f198516915b828110156102735787850151825560209485019460019092019101610253565b50848210156102915786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610ff7806102af6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806342966c68116100b257806379cc679011610081578063a9059cbb11610066578063a9059cbb1461028e578063bff9662a146102a1578063dd62ed3e146102c157600080fd5b806379cc67901461027357806395d89b411461028657600080fd5b806342966c68146102025780635b1125911461021557806370a0823114610235578063779e3b631461026b57600080fd5b80631e458bee116100ee5780631e458bee1461018857806323b872dd1461019b578063313ce567146101ae578063328a01d0146101bd57600080fd5b806306fdde0314610120578063095ea7b31461013e57806315d57fd41461016157806318160ddd14610176575b600080fd5b610128610307565b6040516101359190610d97565b60405180910390f35b61015161014c366004610e2c565b610399565b6040519015158152602001610135565b61017461016f366004610e56565b6103b3565b005b6002545b604051908152602001610135565b610174610196366004610e89565b61057e565b6101516101a9366004610ebc565b610631565b60405160128152602001610135565b6007546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610135565b610174610210366004610ef9565b610655565b6006546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a610243366004610f12565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b610174610662565b610174610281366004610e2c565b610786565b610128610837565b61015161029c366004610e2c565b610846565b6005546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a6102cf366004610e56565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461031690610f34565b80601f016020809104026020016040519081016040528092919081815260200182805461034290610f34565b801561038f5780601f106103645761010080835404028352916020019161038f565b820191906000526020600020905b81548152906001019060200180831161037257829003601f168201915b5050505050905090565b6000336103a7818585610854565b60019150505b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff1633148015906103f3575060065473ffffffffffffffffffffffffffffffffffffffff163314155b15610431576040517fcdfcef970000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82161580610468575073ffffffffffffffffffffffffffffffffffffffff8116155b1561049f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006805473ffffffffffffffffffffffffffffffffffffffff8481167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316811790935560058054918516919092161790556040805133815260208101929092527fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff910160405180910390a16040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f1b9352454524a57a51f24f67dc66d898f616922cd1f7a12d73570ece12b1975c910160405180910390a15050565b60055473ffffffffffffffffffffffffffffffffffffffff1633146105d1576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6105db8383610866565b808373ffffffffffffffffffffffffffffffffffffffff167fc263b302aec62d29105026245f19e16f8e0137066ccd4a8bd941f716bd4096bb8460405161062491815260200190565b60405180910390a3505050565b60003361063f8582856108c6565b61064a858585610995565b506001949350505050565b61065f3382610a40565b50565b60075473ffffffffffffffffffffffffffffffffffffffff1633146106b5576040517fe700765e000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b60065473ffffffffffffffffffffffffffffffffffffffff16610704576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0910160405180910390a1565b60055473ffffffffffffffffffffffffffffffffffffffff1633146107d9576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6107e38282610a9c565b8173ffffffffffffffffffffffffffffffffffffffff167f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b18260405161082b91815260200190565b60405180910390a25050565b60606004805461031690610f34565b6000336103a7818585610995565b6108618383836001610ab1565b505050565b73ffffffffffffffffffffffffffffffffffffffff82166108b6576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c260008383610bf9565b5050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461098f5781811015610980576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401610428565b61098f84848484036000610ab1565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166109e5576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8216610a35576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b610861838383610bf9565b73ffffffffffffffffffffffffffffffffffffffff8216610a90576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c282600083610bf9565b610aa78233836108c6565b6108c28282610a40565b73ffffffffffffffffffffffffffffffffffffffff8416610b01576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8316610b51576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160209081526040808320938716835292905220829055801561098f578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610beb91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8316610c31578060026000828254610c269190610f87565b90915550610ce39050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610cb7576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810182905260448101839052606401610428565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff8216610d0c57600280548290039055610d38565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161062491815260200190565b602081526000825180602084015260005b81811015610dc55760208186018101516040868401015201610da8565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e2757600080fd5b919050565b60008060408385031215610e3f57600080fd5b610e4883610e03565b946020939093013593505050565b60008060408385031215610e6957600080fd5b610e7283610e03565b9150610e8060208401610e03565b90509250929050565b600080600060608486031215610e9e57600080fd5b610ea784610e03565b95602085013595506040909401359392505050565b600080600060608486031215610ed157600080fd5b610eda84610e03565b9250610ee860208501610e03565b929592945050506040919091013590565b600060208284031215610f0b57600080fd5b5035919050565b600060208284031215610f2457600080fd5b610f2d82610e03565b9392505050565b600181811c90821680610f4857607f821691505b602082108103610f81577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156103ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea264697066735822122001ec0ce060384773f3d3389fab7bed652c6b8ee389a7471cce10d00d87a75a0c64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610ed6806100246000396000f3fe60806040526004361061006e5760003560e01c8063c51316911161004b578063c5131691146100d5578063c9028a36146100f5578063e04d4f9714610115578063f05b6abf1461012857005b8063357fc5a214610077578063676cc054146100975780636ed70169146100c057005b3661007557005b005b34801561008357600080fd5b50610075610092366004610724565b610148565b6100aa6100a5366004610760565b6101de565b6040516100b7919061085b565b60405180910390f35b3480156100cc57600080fd5b50610075610211565b3480156100e157600080fd5b506100756100f0366004610724565b610246565b34801561010157600080fd5b5061007561011036600461086e565b610321565b6100756101233660046109ce565b61035d565b34801561013457600080fd5b50610075610143366004610aba565b6103a1565b6101506103d6565b61017273ffffffffffffffffffffffffffffffffffffffff8316338386610419565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101d96001600055565b505050565b6040516060907f3658b46bab672c7672b69c2f0feda706eabdb7d2231421c96e9049b2db5e7eee90600090a19392505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b61024e6103d6565b600061025b600285610ba4565b905080600003610297576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102b973ffffffffffffffffffffffffffffffffffffffff8416338484610419565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101d96001600055565b7f689a5a5cb55e795ffe4cd8b419cd3bb0a3373974c54d25f64e734d7388b93e9b3382604051610352929190610c28565b60405180910390a150565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610394959493929190610d1a565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103949493929190610da4565b600260005403610412576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526104ae9085906104b4565b50505050565b60006104d673ffffffffffffffffffffffffffffffffffffffff84168361054f565b905080516000141580156104fb5750808060200190518101906104f99190610e67565b155b156101d9576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061055d83836000610564565b9392505050565b6060814710156105a2576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610546565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105cb9190610e84565b60006040518083038185875af1925050503d8060008114610608576040519150601f19603f3d011682016040523d82523d6000602084013e61060d565b606091505b509150915061061d868383610627565b9695505050505050565b60608261063c57610637826106b6565b61055d565b8151158015610660575073ffffffffffffffffffffffffffffffffffffffff84163b155b156106af576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610546565b508061055d565b8051156106c65780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff8116811461071f57600080fd5b919050565b60008060006060848603121561073957600080fd5b83359250610749602085016106fb565b9150610757604085016106fb565b90509250925092565b6000806000838503604081121561077657600080fd5b602081121561078457600080fd5b50839250602084013567ffffffffffffffff8111156107a257600080fd5b8401601f810186136107b357600080fd5b803567ffffffffffffffff8111156107ca57600080fd5b8660208284010111156107dc57600080fd5b939660209190910195509293505050565b60005b838110156108085781810151838201526020016107f0565b50506000910152565b600081518084526108298160208601602086016107ed565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061055d6020830184610811565b60006020828403121561088057600080fd5b813567ffffffffffffffff81111561089757600080fd5b82016080818503121561055d57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561091f5761091f6108a9565b604052919050565b600082601f83011261093857600080fd5b813567ffffffffffffffff811115610952576109526108a9565b61098360207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016108d8565b81815284602083860101111561099857600080fd5b816020850160208301376000918101602001919091529392505050565b80151581146106f857600080fd5b803561071f816109b5565b6000806000606084860312156109e357600080fd5b833567ffffffffffffffff8111156109fa57600080fd5b610a0686828701610927565b935050602084013591506040840135610a1e816109b5565b809150509250925092565b600067ffffffffffffffff821115610a4357610a436108a9565b5060051b60200190565b600082601f830112610a5e57600080fd5b8135610a71610a6c82610a29565b6108d8565b8082825260208201915060208360051b860101925085831115610a9357600080fd5b602085015b83811015610ab0578035835260209283019201610a98565b5095945050505050565b600080600060608486031215610acf57600080fd5b833567ffffffffffffffff811115610ae657600080fd5b8401601f81018613610af757600080fd5b8035610b05610a6c82610a29565b8082825260208201915060208360051b850101925088831115610b2757600080fd5b602084015b83811015610b6957803567ffffffffffffffff811115610b4b57600080fd5b610b5a8b602083890101610927565b84525060209283019201610b2c565b509550505050602084013567ffffffffffffffff811115610b8957600080fd5b610b9586828701610a4d565b925050610757604085016109c3565b600082610bda577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015273ffffffffffffffffffffffffffffffffffffffff610c66836106fb565b16604082015273ffffffffffffffffffffffffffffffffffffffff610c8d602084016106fb565b166060820152600080604084013590508060808401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610cd957600080fd5b830160208101903567ffffffffffffffff811115610cf657600080fd5b803603821315610d0557600080fd5b608060a085015261061d60c085018284610bdf565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610d4f60a0830186610811565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610d9a578151865260209586019590910190600101610d7c565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610e37577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610e22858351610811565b94506020938401939190910190600101610de8565b505050508281036040840152610e4d8186610d68565b915050610e5e606083018415159052565b95945050505050565b600060208284031215610e7957600080fd5b815161055d816109b5565b60008251610e968184602087016107ed565b919091019291505056fea2646970667358221220db940ec4fecaa3b11f71d6cf6ef0ac3141552c5e39d750c1e2295a761a9396ad64736f6c634300081a0033a2646970667358221220acdfcc87731195b422142b115ce3d6776cd8aff3db5732bc9c1069a9b19d3ab764736f6c634300081a0033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061ef8a8061003c6000396000f3fe608060405234801561001057600080fd5b50600436106102f45760003560e01c806385f438c111610191578063ce5871e1116100e3578063e63ab1e911610097578063fa18c09b11610071578063fa18c09b14610527578063fa7626d41461052f578063fe7bdbb21461053c57600080fd5b8063e63ab1e9146104f0578063e6afc79014610517578063f68bd1c01461051f57600080fd5b8063d38b66cd116100c8578063d38b66cd146104d8578063dd51e82f146104e0578063e20c9f71146104e857600080fd5b8063ce5871e1146104c8578063cebad2a6146104d057600080fd5b8063a783c78911610145578063b5508aa91161011f578063b5508aa9146104a0578063ba414fa6146104a8578063ccf20616146104c057600080fd5b8063a783c78914610469578063b0464fdc14610490578063b124dbf51461049857600080fd5b8063a217fddf11610176578063a217fddf14610451578063a397ffd214610459578063a56f7a4b1461046157600080fd5b806385f438c114610415578063916a17c61461043c57600080fd5b806344671b941161024a57806366d9a9a0116101fe5780637d7f772a116101d85780637d7f772a146103f05780637ebf744f146103f857806385226c811461040057600080fd5b806366d9a9a0146103cb5780636bdd212b146103e05780637a380ebf146103e857600080fd5b806351010e491161022f57806351010e491461038657806352ff59391461038e5780635d62c8601461039657600080fd5b806344671b94146103765780634df42da11461037e57600080fd5b80631855c337116102ac5780633e5e3c23116102865780633e5e3c231461035e5780633f7286f41461036657806343fd8c7d1461036e57600080fd5b80631855c337146103235780631ed7831c1461032b5780632ade38801461034957600080fd5b80630a9254e4116102dd5780630a9254e41461030b5780631226c65514610313578063130daf591461031b57600080fd5b806304b974f9146102f9578063070f2ad014610303575b600080fd5b610301610544565b005b610301610740565b610301610931565b610301611360565b6103016114d5565b61030161168c565b610333611806565b604051610340919061a6bc565b60405180910390f35b610351611868565b604051610340919061a758565b6103336119aa565b610333611a0a565b610301611a6a565b610301611db6565b610301612079565b6103016121ee565b6103016123ce565b6103bd7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b604051908152602001610340565b6103d3612936565b604051610340919061a8be565b610301612aa3565b610301612c62565b610301613282565b610301613572565b6104086136ec565b604051610340919061a9b8565b6103bd7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6104446137bc565b604051610340919061a9cb565b6103bd600081565b6103016138a2565b610301613bb5565b6103bd7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b610444613cf2565b610301613dd8565b61040861405c565b6104b061412c565b6040519015158152602001610340565b610301614200565b61030161433d565b6103016144b2565b6103016146c6565b61030161480c565b610333614fc7565b6103bd7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b610301615027565b610301615272565b61030161562a565b601f546104b09060ff1681565b61030161596f565b6040805160048082526024820183526020820180516001600160e01b03167f6ed7016900000000000000000000000000000000000000000000000000000000179052602754925163ca669fa760e01b81529192737109709ecfa91a80626ff3989d68f67f5b1dd12d9263ca669fa7926105d6926001600160a01b031691016001600160a01b0391909116815260200190565b600060405180830381600087803b1580156105f057600080fd5b505af1158015610604573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561068d57600080fd5b505af11580156106a1573d6000803e3d6000fd5b5050601f546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b03169250631cff79cd91506106f590600090859060040161aa62565b6000604051808303816000875af1158015610714573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261073c919081019061ab6c565b5050565b6027546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156107b257600080fd5b505af11580156107c6573d6000803e3d6000fd5b5050602754604080516001600160a01b039092166024830152600060448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061087d919060040161aba1565b600060405180830381600087803b15801561089757600080fd5b505af11580156108ab573d6000803e3d6000fd5b5050601f546025546040517f950837aa0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261010090920416925063950837aa91506024015b600060405180830381600087803b15801561091757600080fd5b505af115801561092b573d6000803e3d6000fd5b50505050565b602580547fffffffffffffffffffffffff000000000000000000000000000000000000000090811630179091556026805482166112341790556027805482166156781790556028805490911661987617905560405161098f9061a5dc565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610a14573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556027546040519116908190610a5d9061a5e9565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015610a90573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c000000000000000000000000000000000000602082015260275460255492519086169481019490945260448401929092529092166064820152600091610b6f916084015b60408051601f198184030181529190526020810180516001600160e01b03167fc0c53b8b00000000000000000000000000000000000000000000000000000000179052615dae565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0384811682029290921792839055604080518082018252601081527f4552433230437573746f64792e736f6c0000000000000000000000000000000060208201526027546025549251939095048416602484015293831660448301529091166064820152919250610c1291608401610b27565b602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383811691909117909155604080518082018252601a81527f5a657461436f6e6e6563746f724e6f6e4e61746976652e736f6c0000000000006020820152601f546024805460275460255495516101009094048716928401929092528516604483015284166064820152919092166084820152919250610d049160a40160408051601f198184030181529190526020810180516001600160e01b03167ff8c8765e00000000000000000000000000000000000000000000000000000000179052615dae565b602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038381169190911790915560275460405163ca669fa760e01b815291166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015610d8f57600080fd5b505af1158015610da3573d6000803e3d6000fd5b5050602480546027546022546040517f15d57fd40000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152908216938101939093521692506315d57fd49150604401600060405180830381600087803b158015610e1657600080fd5b505af1158015610e2a573d6000803e3d6000fd5b50505050604051610e3a9061a5f6565b604051809103906000f080158015610e56573d6000803e3d6000fd5b50602080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556027546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b158015610f0257600080fd5b505af1158015610f16573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610f8c57600080fd5b505af1158015610fa0573d6000803e3d6000fd5b5050601f546021546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261010090920416925063ae7a3a6f9150602401600060405180830381600087803b15801561100b57600080fd5b505af115801561101f573d6000803e3d6000fd5b5050601f546022546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526101009092041692506310188aef9150602401600060405180830381600087803b15801561108a57600080fd5b505af115801561109e573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561110057600080fd5b505af1158015611114573d6000803e3d6000fd5b50506023546025546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f42406024820152911692506340c10f199150604401600060405180830381600087803b15801561118357600080fd5b505af1158015611197573d6000803e3d6000fd5b50506023546021546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12060248201529116925063a9059cbb91506044016020604051808303816000875af115801561120b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122f919061abb4565b506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b1580156112b057600080fd5b505af11580156112c4573d6000803e3d6000fd5b5050604080516080810182526025546001600160a01b039081168252602354811660208084019182526001848601908152855191820190955260008152606084018190528351602d80549185167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161781559251602e8054919095169116179092559251602f5590935090915060309061092b908261ac6a565b6025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156113d257600080fd5b505af11580156113e6573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561146f57600080fd5b505af1158015611483573d6000803e3d6000fd5b5050601f546040517fae7a3a6f000000000000000000000000000000000000000000000000000000008152600060048201526101009091046001600160a01b0316925063ae7a3a6f91506024016108fd565b6040805160048082526024820183526020820180516001600160e01b03167fc9028a3600000000000000000000000000000000000000000000000000000000179052602754925163ca669fa760e01b81529192737109709ecfa91a80626ff3989d68f67f5b1dd12d9263ca669fa792611567926001600160a01b031691016001600160a01b0391909116815260200190565b600060405180830381600087803b15801561158157600080fd5b505af1158015611595573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527ff3459a96000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b15801561161f57600080fd5b505af1158015611633573d6000803e3d6000fd5b5050601f546020546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526101009092046001600160a01b039081169450631cff79cd93506106f592911690859060040161aa62565b6025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156116fe57600080fd5b505af1158015611712573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fb337f378000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b15801561179c57600080fd5b505af11580156117b0573d6000803e3d6000fd5b5050601f546021546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261010090920416925063ae7a3a6f91506024016108fd565b6060601680548060200260200160405190810160405280929190818152602001828054801561185e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611840575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b828210156119a157600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561198a5783829060005260206000200180546118fd9061abd6565b80601f01602080910402602001604051908101604052809291908181526020018280546119299061abd6565b80156119765780601f1061194b57610100808354040283529160200191611976565b820191906000526020600020905b81548152906001019060200180831161195957829003601f168201915b5050505050815260200190600101906118de565b50505050815250508152602001906001019061188c565b50505050905090565b6060601880548060200260200160405190810160405280929190818152602001828054801561185e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611840575050505050905090565b6060601780548060200260200160405190810160405280929190818152602001828054801561185e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611840575050505050905090565b604080516001808252818301909252600091816020015b6060815260200190600190039081611a815790505090506040518060400160405280600f81526020017f48656c6c6f2c20466f756e64727921000000000000000000000000000000000081525081600081518110611ae157611ae161ad29565b6020908102919091010152604080516001808252818301909252600091816020016020820280368337019050509050602a81600081518110611b2557611b2561ad29565b6020908102919091010152604051600190600090611b4b9085908590859060240161ad8a565b60408051601f198184030181529181526020820180516001600160e01b03167ff05b6abf00000000000000000000000000000000000000000000000000000000179052602554905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611be957600080fd5b505af1158015611bfd573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250611cd3919060040161aba1565b600060405180830381600087803b158015611ced57600080fd5b505af1158015611d01573d6000803e3d6000fd5b5050601f54604080516020808201835261012382525491517f38e225270000000000000000000000000000000000000000000000000000000081526101009093046001600160a01b0390811695506338e225279450611d689391921690869060040161adc2565b6000604051808303816000875af1158015611d87573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611daf919081019061ab6c565b5050505050565b604080516004808252602482018352602080830180516001600160e01b03167f6ed70169000000000000000000000000000000000000000000000000000000001790525492517ff30c7ba30000000000000000000000000000000000000000000000000000000081529192737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba392611e56926001600160a01b03169160009187910161adf4565b600060405180830381600087803b158015611e7057600080fd5b505af1158015611e84573d6000803e3d6000fd5b50506020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015611efd57600080fd5b505af1158015611f11573d6000803e3d6000fd5b5050601f546040516101009091046001600160a01b031681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09250602001905060405180910390a1601f546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611fd357600080fd5b505af1158015611fe7573d6000803e3d6000fd5b50506020546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f915061202d90600090859061ae1c565b60405180910390a260275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401611605565b6025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156120eb57600080fd5b505af11580156120ff573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561218857600080fd5b505af115801561219c573d6000803e3d6000fd5b5050601f546040517f950837aa000000000000000000000000000000000000000000000000000000008152600060048201526101009091046001600160a01b0316925063950837aa91506024016108fd565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152670de0b6b3a76400009060009060250160408051808303601f190181529082905260275463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561228e57600080fd5b505af11580156122a2573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561232b57600080fd5b505af115801561233f573d6000803e3d6000fd5b5050601f546040517fcb7ba8e50000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b0316925063cb7ba8e591508490612398906000908690602d9060040161af12565b6000604051808303818588803b1580156123b157600080fd5b505af11580156123c5573d6000803e3d6000fd5b50505050505050565b601f546040517f91d148540000000000000000000000000000000000000000000000000000000081527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb600482015261432160248201819052916000916101009091046001600160a01b0316906391d1485490604401602060405180830381865afa158015612461573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612485919061abb4565b905061249081615dcd565b601f546027546040517f91d148540000000000000000000000000000000000000000000000000000000081527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60048201526001600160a01b0391821660248201526000926101009004909116906391d1485490604401602060405180830381865afa158015612524573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612548919061abb4565b905061255381615e47565b6025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156125c557600080fd5b505af11580156125d9573d6000803e3d6000fd5b5050601f546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561265657600080fd5b505af115801561266a573d6000803e3d6000fd5b5050602754604080516001600160a01b03928316815291871660208301527f3a7b8d6372645f474fe60c115a2ef21421306a3ed4664fa0023c461413c08579935001905060405180910390a1601f546040517f950837aa0000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526101009092049091169063950837aa90602401600060405180830381600087803b15801561271c57600080fd5b505af1158015612730573d6000803e3d6000fd5b505050506127b483601f60019054906101000a90046001600160a01b03166001600160a01b0316635b1125916040518163ffffffff1660e01b8152600401602060405180830381865afa15801561278b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127af919061af46565b615e99565b601f546040517f91d148540000000000000000000000000000000000000000000000000000000081527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60048201526001600160a01b038581166024830152610100909204909116906391d1485490604401602060405180830381865afa158015612843573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612867919061abb4565b915061287282615e47565b601f546027546040517f91d148540000000000000000000000000000000000000000000000000000000081527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60048201526001600160a01b03918216602482015261010090920416906391d1485490604401602060405180830381865afa158015612902573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612926919061abb4565b905061293181615dcd565b505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156119a1578382906000526020600020906002020160405180604001604052908160008201805461298d9061abd6565b80601f01602080910402602001604051908101604052809291908181526020018280546129b99061abd6565b8015612a065780601f106129db57610100808354040283529160200191612a06565b820191906000526020600020905b8154815290600101906020018083116129e957829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015612a8b57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411612a4d5790505b5050505050815250508152602001906001019061295a565b6040805160048082526024820183526020820180516001600160e01b03167f6ed7016900000000000000000000000000000000000000000000000000000000179052602754925163ca669fa760e01b81529192737109709ecfa91a80626ff3989d68f67f5b1dd12d9263ca669fa792612b35926001600160a01b031691016001600160a01b0391909116815260200190565b600060405180830381600087803b158015612b4f57600080fd5b505af1158015612b63573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015612bec57600080fd5b505af1158015612c00573d6000803e3d6000fd5b5050601f5460408051602081018252610123815290517f38e225270000000000000000000000000000000000000000000000000000000081526101009092046001600160a01b031693506338e2252792506106f591600090869060040161adc2565b601f54604080518082018252601981527f4761746577617945564d55706772616465546573742e736f6c00000000000000602080830191909152825190810190925260008252602554612cc7936001600160a01b036101009091048116939116615f22565b601f54604080517fdda79b7500000000000000000000000000000000000000000000000000000000815290516101009092046001600160a01b031691600091839163dda79b75916004808201926020929091908290030181865afa158015612d33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d57919061af46565b90506000601f60019054906101000a90046001600160a01b03166001600160a01b0316635b1125916040518163ffffffff1660e01b8152600401602060405180830381865afa158015612dae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dd2919061af46565b604080518082018252600f81527f48656c6c6f2c20466f756e6472792100000000000000000000000000000000006020820152905191925090602a90600190670de0b6b3a764000090600090612e309086908690869060240161af6f565b60408051601f19818403018152918152602080830180516001600160e01b03167fe04d4f97000000000000000000000000000000000000000000000000000000001790525490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391612ed6916001600160a01b0391909116908690869060040161adf4565b600060405180830381600087803b158015612ef057600080fd5b505af1158015612f04573d6000803e3d6000fd5b50506020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015612f7d57600080fd5b505af1158015612f91573d6000803e3d6000fd5b505050507f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa601f60019054906101000a90046001600160a01b031683878787604051612fe195949392919061af99565b60405180910390a1601f546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561306257600080fd5b505af1158015613076573d6000803e3d6000fd5b50506020546040516001600160a01b0390911692507f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e854691506130bb908590859061ae1c565b60405180910390a260275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561311c57600080fd5b505af1158015613130573d6000803e3d6000fd5b50506020546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b03808d169450631cff79cd9350869261318292911690869060040161aa62565b60006040518083038185885af11580156131a0573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526131c9919081019061ab6c565b5061322187601f60019054906101000a90046001600160a01b03166001600160a01b031663dda79b756040518163ffffffff1660e01b8152600401602060405180830381865afa15801561278b573d6000803e3d6000fd5b61327886601f60019054906101000a90046001600160a01b03166001600160a01b0316635b1125916040518163ffffffff1660e01b8152600401602060405180830381865afa15801561278b573d6000803e3d6000fd5b5050505050505050565b604080516001808252818301909252600091816020015b60608152602001906001900390816132995790505090506040518060400160405280600f81526020017f48656c6c6f2c20466f756e647279210000000000000000000000000000000000815250816000815181106132f9576132f961ad29565b6020908102919091010152604080516001808252818301909252600091816020016020820280368337019050509050602a8160008151811061333d5761333d61ad29565b60209081029190910101526040516001906000906133639085908590859060240161ad8a565b60408051601f198184030181529181526020820180516001600160e01b03167ff05b6abf00000000000000000000000000000000000000000000000000000000179052602554905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561340157600080fd5b505af1158015613415573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506134eb919060040161aba1565b600060405180830381600087803b15801561350557600080fd5b505af1158015613519573d6000803e3d6000fd5b5050601f546020546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526101009092046001600160a01b039081169450631cff79cd9350611d6892911690859060040161aa62565b6025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156135e457600080fd5b505af11580156135f8573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f0c8dc016000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b15801561368257600080fd5b505af1158015613696573d6000803e3d6000fd5b5050601f546022546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526101009092041692506310188aef91506024016108fd565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156119a157838290600052602060002001805461372f9061abd6565b80601f016020809104026020016040519081016040528092919081815260200182805461375b9061abd6565b80156137a85780601f1061377d576101008083540402835291602001916137a8565b820191906000526020600020905b81548152906001019060200180831161378b57829003601f168201915b505050505081526020019060010190613710565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156119a15760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561388a57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161384c5790505b505050505081525050815260200190600101906137e0565b6020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561391757600080fd5b505af115801561392b573d6000803e3d6000fd5b50506040517f3658b46bab672c7672b69c2f0feda706eabdb7d2231421c96e9049b2db5e7eee925060009150a1601f546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156139d157600080fd5b505af11580156139e5573d6000803e3d6000fd5b505060208054604080518082018252600181527f310000000000000000000000000000000000000000000000000000000000000093810193909352516001600160a01b0390911693507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9250613a5d9160009161ae1c565b60405180910390a260275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613abe57600080fd5b505af1158015613ad2573d6000803e3d6000fd5b5050601f5460408051602080820183526101238252805483518085018552600181527f31000000000000000000000000000000000000000000000000000000000000009281019290925292517f38e225270000000000000000000000000000000000000000000000000000000081526101009094046001600160a01b0390811696506338e225279550613b6b949293169160040161adc2565b6000604051808303816000875af1158015613b8a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613bb2919081019061ab6c565b50565b6027546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b158015613c2757600080fd5b505af1158015613c3b573d6000803e3d6000fd5b5050602754604080516001600160a01b039092166024830152600060448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250611782919060040161aba1565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156119a15760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015613dc057602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411613d825790505b50505050508152505081526020019060010190613d16565b602354602654604051620186a0602482018190526001600160a01b03938416604483015292909116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a200000000000000000000000000000000000000000000000000000000179052602554905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613ea957600080fd5b505af1158015613ebd573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b960448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250613f93919060040161aba1565b600060405180830381600087803b158015613fad57600080fd5b505af1158015613fc1573d6000803e3d6000fd5b5050601f546023546026546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526101009093046001600160a01b03908116955063aa0c0fc19450614026939281169291169087908790602d9060040161afda565b600060405180830381600087803b15801561404057600080fd5b505af1158015614054573d6000803e3d6000fd5b505050505050565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156119a157838290600052602060002001805461409f9061abd6565b80601f01602080910402602001604051908101604052809291908181526020018280546140cb9061abd6565b80156141185780601f106140ed57610100808354040283529160200191614118565b820191906000526020600020905b8154815290600101906020018083116140fb57829003601f168201915b505050505081526020019060010190614080565b60085460009060ff1615614144575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa1580156141d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141f9919061b02f565b1415905090565b6027546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b15801561427257600080fd5b505af1158015614286573d6000803e3d6000fd5b5050602754604080516001600160a01b039092166024830152600060448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250613668919060040161aba1565b6025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156143af57600080fd5b505af11580156143c3573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561444c57600080fd5b505af1158015614460573d6000803e3d6000fd5b5050601f546040517f10188aef000000000000000000000000000000000000000000000000000000008152600060048201526101009091046001600160a01b031692506310188aef91506024016108fd565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152670de0b6b3a76400009060009060250160408051808303601f190181529082905260255463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561455257600080fd5b505af1158015614566573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061463c919060040161aba1565b600060405180830381600087803b15801561465657600080fd5b505af115801561466a573d6000803e3d6000fd5b5050601f546020546040517fcb7ba8e50000000000000000000000000000000000000000000000000000000081526001600160a01b036101009093048316945063cb7ba8e5935086926123989216908690602d9060040161af12565b60408051602081018252600080825291516146e691607b9160240161aa62565b60408051601f198184030181529181526020820180516001600160e01b03167f676cc05400000000000000000000000000000000000000000000000000000000179052602754905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561478457600080fd5b505af1158015614798573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fed699775000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401611605565b60285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561486557600080fd5b505af1158015614879573d6000803e3d6000fd5b5050602854604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061494f919060040161aba1565b600060405180830381600087803b15801561496957600080fd5b505af115801561497d573d6000803e3d6000fd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156149d157600080fd5b505af11580156149e5573d6000803e3d6000fd5b505060285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015614a4257600080fd5b505af1158015614a56573d6000803e3d6000fd5b5050602854604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250614b2c919060040161aba1565b600060405180830381600087803b158015614b4657600080fd5b505af1158015614b5a573d6000803e3d6000fd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015614bae57600080fd5b505af1158015614bc2573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015614c1f57600080fd5b505af1158015614c33573d6000803e3d6000fd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b158015614c8757600080fd5b505af1158015614c9b573d6000803e3d6000fd5b5050604080516004808252602480830184526020830180516001600160e01b03167f6ed701690000000000000000000000000000000000000000000000000000000017905292517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd93c06650000000000000000000000000000000000000000000000000000000091810191909152909350737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09101600060405180830381600087803b158015614d6857600080fd5b505af1158015614d7c573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015614dd957600080fd5b505af1158015614ded573d6000803e3d6000fd5b5050601f546020546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526101009092046001600160a01b039081169450631cff79cd9350614e4692911690859060040161aa62565b6000604051808303816000875af1158015614e65573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614e8d919081019061ab6c565b5060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614ee757600080fd5b505af1158015614efb573d6000803e3d6000fd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015614f4f57600080fd5b505af1158015614f63573d6000803e3d6000fd5b50506020546040517ff30c7ba3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f30c7ba39250611e56916001600160a01b031690600090869060040161adf4565b6060601580548060200260200160405190810160405280929190818152602001828054801561185e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611840575050505050905090565b602354602654604051620186a0602482018190526001600160a01b03938416604483015292909116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a200000000000000000000000000000000000000000000000000000000179052602554905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156150f857600080fd5b505af115801561510c573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b960448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506151e2919060040161aba1565b600060405180830381600087803b1580156151fc57600080fd5b505af1158015615210573d6000803e3d6000fd5b5050601f546023546026546040517f5131ab590000000000000000000000000000000000000000000000000000000081526101009093046001600160a01b039081169550635131ab59945061402693928116929116908790879060040161b048565b604080516001808252818301909252600091816020015b60608152602001906001900390816152895790505090506040518060400160405280600f81526020017f48656c6c6f2c20466f756e647279210000000000000000000000000000000000815250816000815181106152e9576152e961ad29565b6020908102919091010152604080516001808252818301909252600091816020016020820280368337019050509050602a8160008151811061532d5761532d61ad29565b60209081029190910101526040516001906000906153539085908590859060240161ad8a565b60408051601f19818403018152918152602080830180516001600160e01b03167ff05b6abf000000000000000000000000000000000000000000000000000000001790525490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba3916153fa916001600160a01b039190911690600090869060040161adf4565b600060405180830381600087803b15801561541457600080fd5b505af1158015615428573d6000803e3d6000fd5b50506020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156154a157600080fd5b505af11580156154b5573d6000803e3d6000fd5b505050507f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146601f60019054906101000a90046001600160a01b0316858585604051615503949392919061b07f565b60405180910390a1601f546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561558457600080fd5b505af1158015615598573d6000803e3d6000fd5b50506020546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f91506155de90600090859061ae1c565b60405180910390a260275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024016134eb565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152670de0b6b3a76400009060009060250160408051601f198184030181529190526020549091506001600160a01b03163161568e816000615f37565b6020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561570357600080fd5b505af1158015615717573d6000803e3d6000fd5b505050507f689a5a5cb55e795ffe4cd8b419cd3bb0a3373974c54d25f64e734d7388b93e9b601f60019054906101000a90046001600160a01b0316602d60405161576292919061b0c7565b60405180910390a1601f546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156157e357600080fd5b505af11580156157f7573d6000803e3d6000fd5b5050602054604051600093506001600160a01b0390911691507fde7603a6ed5d07c9f43597ccfe9043d15b66d3284f0de321f5cdf56329e6e0359061584a90670de0b6b3a7640000908790602d9061b0e9565b60405180910390a360275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156158ab57600080fd5b505af11580156158bf573d6000803e3d6000fd5b5050601f546020546040517fcb7ba8e50000000000000000000000000000000000000000000000000000000081526001600160a01b036101009093048316945063cb7ba8e59350879261591b9216908790602d9060040161af12565b6000604051808303818588803b15801561593457600080fd5b505af1158015615948573d6000803e3d6000fd5b50506020546001600160a01b031631925061092b9150829050670de0b6b3a7640000615f37565b60408051808201909152600f81527f48656c6c6f2c20466f756e64727921000000000000000000000000000000000060208083019190915254602a90600190670de0b6b3a7640000906159ce906000906001600160a01b031631615f37565b60008484846040516024016159e59392919061af6f565b60408051601f19818403018152918152602080830180516001600160e01b03167fe04d4f97000000000000000000000000000000000000000000000000000000001790525490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391615a93916001600160a01b039190911690670de0b6b3a764000090869060040161adf4565b600060405180830381600087803b158015615aad57600080fd5b505af1158015615ac1573d6000803e3d6000fd5b50506020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015615b3a57600080fd5b505af1158015615b4e573d6000803e3d6000fd5b505050507f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa601f60019054906101000a90046001600160a01b031683878787604051615b9e95949392919061af99565b60405180910390a1601f546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015615c1f57600080fd5b505af1158015615c33573d6000803e3d6000fd5b50506020546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150615c8090670de0b6b3a764000090859061ae1c565b60405180910390a260275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015615ce157600080fd5b505af1158015615cf5573d6000803e3d6000fd5b5050601f546020546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b0361010090930483169450631cff79cd93508692615d4e921690869060040161aa62565b60006040518083038185885af1158015615d6c573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052615d95919081019061ab6c565b50602054611daf9083906001600160a01b031631615f37565b6000615db861a603565b615dc3848483615f8f565b9150505b92915050565b6040517fa59828850000000000000000000000000000000000000000000000000000000081528115156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063a5982885906024015b60006040518083038186803b158015615e3357600080fd5b505afa158015611daf573d6000803e3d6000fd5b6040517f0c9fd5810000000000000000000000000000000000000000000000000000000081528115156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90630c9fd58190602401615e1b565b6040517f515361f60000000000000000000000000000000000000000000000000000000081526001600160a01b03808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f6906044015b60006040518083038186803b158015615f0e57600080fd5b505afa158015614054573d6000803e3d6000fd5b615f2a61a603565b611daf858585848661600a565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c5490604401615ef6565b600080615f9c858461610a565b9050615fff6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001615fea92919061aa62565b60405160208183030381529060405285616116565b9150505b9392505050565b6040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201528190737109709ecfa91a80626ff3989d68f67f5b1dd12d9081906306447d5690602401600060405180830381600087803b15801561607c57600080fd5b505af192505050801561608d575060015b6160a25761609d87878787616144565b6123c5565b6160ae87878787616144565b806001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156160e957600080fd5b505af11580156160fd573d6000803e3d6000fd5b5050505050505050505050565b6000616003838361615d565b60c0810151516000901561613a5761613384848460c00151616178565b9050616003565b616133848461631e565b60006161508483616409565b9050611daf858285616415565b600061616983836167df565b61600383836020015184616116565b6000806161836167eb565b9050600061619186836168be565b905060006161a88260600151836020015185616d64565b905060006161b883838989616f76565b905060006161c582617df3565b602081015181519192509060030b15616238578982604001516040516020016161ef92919061b102565b60408051601f19818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261622f9160040161aba1565b60405180910390fd5b600061627b6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001617fc2565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d906162ce90849060040161aba1565b602060405180830381865afa1580156162eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061630f919061af46565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc9259061637390879060040161aba1565b600060405180830381865afa158015616390573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526163b8919081019061ab6c565b905060006163e682856040516020016163d292919061b183565b6040516020818303038152906040526181c2565b90506001600160a01b038116615dc35784846040516020016161ef92919061b1b2565b600061616983836181d5565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201527fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61036024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90600090829063667f9d7090604401602060405180830381865afa1580156164b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906164d5919061b02f565b90508061667c5760006164e7866181e1565b604080518082018252600581527f352e302e3000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150616572905b604080518082018252600080825260209182015281518083019092528451825280850190820152906182c4565b8061657e575060008451115b15616601576040517f4f1ef2860000000000000000000000000000000000000000000000000000000081526001600160a01b03871690634f1ef286906165ca908890889060040161aa62565b600060405180830381600087803b1580156165e457600080fd5b505af11580156165f8573d6000803e3d6000fd5b50505050616676565b6040517f3659cfe60000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152871690633659cfe690602401600060405180830381600087803b15801561665d57600080fd5b505af1158015616671573d6000803e3d6000fd5b505050505b50611daf565b806000616688826181e1565b604080518082018252600581527f352e302e30000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506166ea90616545565b806166f6575060008551115b1561677b576040517f9623609d0000000000000000000000000000000000000000000000000000000081526001600160a01b03831690639623609d90616744908a908a908a9060040161b25d565b600060405180830381600087803b15801561675e57600080fd5b505af1158015616772573d6000803e3d6000fd5b505050506123c5565b6040517f99a88ec40000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015287811660248301528316906399a88ec490604401600060405180830381600087803b1580156160e957600080fd5b61073c828260006182d8565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c9061687290849060040161b28e565b600060405180830381865afa15801561688f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526168b7919081019061b2d5565b9250505090565b6168f06040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d905061693b6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b616944856183db565b60208201526000616954866187c0565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015616996573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526169be919081019061b2d5565b868385602001516040516020016169d8949392919061b31e565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190616a3090859060040161aba1565b600060405180830381865afa158015616a4d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616a75919081019061b2d5565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690616abd90849060040161b422565b602060405180830381865afa158015616ada573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616afe919061abb4565b616b1357816040516020016161ef919061b474565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890616b5890849060040161b506565b600060405180830381865afa158015616b75573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616b9d919081019061b2d5565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690616be490849060040161b558565b602060405180830381865afa158015616c01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616c25919061abb4565b15616cba576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890616c6f90849060040161b558565b600060405180830381865afa158015616c8c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616cb4919081019061b2d5565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001616cdf919061b5aa565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401616d0b92919061b616565b600060405180830381865afa158015616d28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616d50919081019061b2d5565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081616d805790505090506040518060400160405280600481526020017f677265700000000000000000000000000000000000000000000000000000000081525081600081518110616de057616de061ad29565b60200260200101819052506040518060400160405280600381526020017f2d726c000000000000000000000000000000000000000000000000000000000081525081600181518110616e3457616e3461ad29565b602002602001018190525084604051602001616e50919061b63b565b60405160208183030381529060405281600281518110616e7257616e7261ad29565b602002602001018190525082604051602001616e8e919061b6a7565b60405160208183030381529060405281600381518110616eb057616eb061ad29565b60200260200101819052506000616ec682617df3565b602080820151604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000008185019081528251808401845260008082529086015282518084019093529051825292810192909252919250616f579060408051808201825260008082526020918201528151808301909252845182528085019082015290618a43565b616f6c57856040516020016161ef919061b6e8565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015616fc6565b511590565b61713a57826020015115617082576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a40161622f565b8260c001511561713a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a40161622f565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161715357905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806171ae9061b7a8565b935060ff16815181106171c3576171c361ad29565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001617214919061b7c7565b60405160208183030381529060405282828061722f9061b7a8565b935060ff16815181106172445761724461ad29565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806172919061b7a8565b935060ff16815181106172a6576172a661ad29565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806172f39061b7a8565b935060ff16815181106173085761730861ad29565b602002602001018190525087602001518282806173249061b7a8565b935060ff16815181106173395761733961ad29565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806173869061b7a8565b935060ff168151811061739b5761739b61ad29565b6020908102919091010152875182826173b38161b7a8565b935060ff16815181106173c8576173c861ad29565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806174159061b7a8565b935060ff168151811061742a5761742a61ad29565b602002602001018190525061743e46618aa4565b82826174498161b7a8565b935060ff168151811061745e5761745e61ad29565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c6500000000000000000000000000000000008152508282806174ab9061b7a8565b935060ff16815181106174c0576174c061ad29565b6020026020010181905250868282806174d89061b7a8565b935060ff16815181106174ed576174ed61ad29565b60209081029190910101528551156176145760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261753e8161b7a8565b935060ff16815181106175535761755361ad29565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d906175a390899060040161aba1565b600060405180830381865afa1580156175c0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526175e8919081019061b2d5565b82826175f38161b7a8565b935060ff16815181106176085761760861ad29565b60200260200101819052505b8460200151156176e45760408051808201909152601281527f2d2d766572696679536f75726365436f646500000000000000000000000000006020820152828261765d8161b7a8565b935060ff16815181106176725761767261ad29565b60200260200101819052506040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152508282806176bf9061b7a8565b935060ff16815181106176d4576176d461ad29565b60200260200101819052506178ab565b61771c616fc18660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6177af5760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828261775f8161b7a8565b935060ff16815181106177745761777461ad29565b60200260200101819052508460a00151604051602001617794919061b63b565b6040516020818303038152906040528282806176bf9061b7a8565b8460c001511580156177f25750604080890151815180830183526000808252602091820152825180840190935281518352908101908201526177f090511590565b155b156178ab5760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826178368161b7a8565b935060ff168151811061784b5761784b61ad29565b602002602001018190525061785f88618b44565b60405160200161786f919061b63b565b60405160208183030381529060405282828061788a9061b7a8565b935060ff168151811061789f5761789f61ad29565b60200260200101819052505b604080860151815180830183526000808252602091820152825180840190935281518352908101908201526178df90511590565b6179745760408051808201909152600b81527f2d2d72656c617965724964000000000000000000000000000000000000000000602082015282826179228161b7a8565b935060ff16815181106179375761793761ad29565b602002602001018190525084604001518282806179539061b7a8565b935060ff16815181106179685761796861ad29565b60200260200101819052505b606085015115617a955760408051808201909152600681527f2d2d73616c740000000000000000000000000000000000000000000000000000602082015282826179bd8161b7a8565b935060ff16815181106179d2576179d261ad29565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015617a41573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617a69919081019061b2d5565b8282617a748161b7a8565b935060ff1681518110617a8957617a8961ad29565b60200260200101819052505b60e08501515115617b3c5760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282617adf8161b7a8565b935060ff1681518110617af457617af461ad29565b6020026020010181905250617b108560e0015160000151618aa4565b8282617b1b8161b7a8565b935060ff1681518110617b3057617b3061ad29565b60200260200101819052505b60e08501516020015115617be65760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282617b898161b7a8565b935060ff1681518110617b9e57617b9e61ad29565b6020026020010181905250617bba8560e0015160200151618aa4565b8282617bc58161b7a8565b935060ff1681518110617bda57617bda61ad29565b60200260200101819052505b60e08501516040015115617c905760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282617c338161b7a8565b935060ff1681518110617c4857617c4861ad29565b6020026020010181905250617c648560e0015160400151618aa4565b8282617c6f8161b7a8565b935060ff1681518110617c8457617c8461ad29565b60200260200101819052505b60e08501516060015115617d3a5760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282617cdd8161b7a8565b935060ff1681518110617cf257617cf261ad29565b6020026020010181905250617d0e8560e0015160600151618aa4565b8282617d198161b7a8565b935060ff1681518110617d2e57617d2e61ad29565b60200260200101819052505b60008160ff1667ffffffffffffffff811115617d5857617d5861aa84565b604051908082528060200260200182016040528015617d8b57816020015b6060815260200190600190039081617d765790505b50905060005b8260ff168160ff161015617de457838160ff1681518110617db457617db461ad29565b6020026020010151828260ff1681518110617dd157617dd161ad29565b6020908102919091010152600101617d91565b5093505050505b949350505050565b617e1a6040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c91617ea09186910161b832565b600060405180830381865afa158015617ebd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617ee5919081019061b2d5565b90506000617ef38683619633565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401617f23919061a9b8565b6000604051808303816000875af1158015617f42573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617f6a919081019061b879565b805190915060030b15801590617f835750602081015151155b8015617f925750604081015151155b15616f6c5781600081518110617faa57617faa61ad29565b60200260200101516040516020016161ef919061b92f565b60606000617ff78560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252865182528087019082015290915061802e9082905b90619788565b1561818b5760006180ab826180a58461809f6180718a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b906197af565b90619811565b604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061810f908290619788565b1561817957604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618176905b8290619896565b90505b618182816198bc565b92505050616003565b82156181a45784846040516020016161ef92919061bb1b565b5050604080516020810190915260008152616003565b509392505050565b6000808251602084016000f09392505050565b61073c828260016182d8565b60408051600481526024810182526020810180516001600160e01b03167fad3cb1cc00000000000000000000000000000000000000000000000000000000179052905160609160009182916001600160a01b03861691618241919061bbc2565b600060405180830381855afa9150503d806000811461827c576040519150601f19603f3d011682016040523d82523d6000602084013e618281565b606091505b5091509150818015618294575060208151115b156182ad5780806020019051810190617deb919061b2d5565b505060408051602081019091526000815292915050565b60006182d08383619925565b159392505050565b8160a00151156182e757505050565b60006182f4848484619a00565b9050600061830182617df3565b602081015181519192509060030b15801561839d5750604080518082018252600781527f53554343455353000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261839d90604080518082018252600080825260209182015281518083019092528451825280850190820152618028565b156183aa57505050505050565b604082015151156183ca5781604001516040516020016161ef919061bbde565b806040516020016161ef919061bc3c565b606060006184108360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150618475905b8290618a43565b156184e457604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616003906184df908390619f9b565b6198bc565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618546905b829061a025565b60010361861357604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526185ac9061816f565b50604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616003906184df905b8390619896565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526186729061846e565b156187a957604080518082018252600181527f2f000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201819052845180860190955292518452830152906186da90839061a0bf565b9050600081600183516186ed919061bca7565b815181106186fd576186fd61ad29565b602002602001015190506187a06184df6187736040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290619f9b565b95945050505050565b826040516020016161ef919061bcba565b50919050565b606060006187f58360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506188579061846e565b1561886557616003816198bc565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526188c49061853f565b60010361892e57604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616003906184df9061860c565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261898d9061846e565b156187a957604080518082018252600181527f2f000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201819052845180860190955292518452830152906189f590839061a0bf565b9050600181511115618a31578060028251618a10919061bca7565b81518110618a2057618a2061ad29565b602002602001015192505050919050565b50826040516020016161ef919061bcba565b805182516000911115618a5857506000615dc7565b81518351602085015160009291618a6e9161bd98565b618a78919061bca7565b905082602001518103618a8f576001915050615dc7565b82516020840151819020912014905092915050565b60606000618ab18361a164565b600101905060008167ffffffffffffffff811115618ad157618ad161aa84565b6040519080825280601f01601f191660200182016040528015618afb576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084618b0557509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091618bd0905b82906182c4565b15618c1057505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618c6f90618bc9565b15618caf57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618d0e90618bc9565b15618d4e57505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618dad90618bc9565b80618e125750604080518082018252601081527f47504c2d322e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618e1290618bc9565b15618e5257505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618eb190618bc9565b80618f165750604080518082018252601081527f47504c2d332e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618f1690618bc9565b15618f5657505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618fb590618bc9565b8061901a5750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261901a90618bc9565b1561905a57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526190b990618bc9565b8061911e5750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261911e90618bc9565b1561915e57505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526191bd90618bc9565b156191fd57505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261925c90618bc9565b1561929c57505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526192fb90618bc9565b1561933b57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261939a90618bc9565b156193da57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261943990618bc9565b1561947957505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526194d890618bc9565b8061953d5750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261953d90618bc9565b1561957d57505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e31000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526195dc90618bc9565b1561961c57505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b604080840151845191516161ef929060200161bdab565b60608060005b84518110156196be57818582815181106196555761965561ad29565b602002602001015160405160200161966e92919061b183565b60405160208183030381529060405291506001855161968d919061bca7565b81146196b657816040516020016196a4919061bf14565b60405160208183030381529060405291505b600101619639565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816196d757905050905083816000815181106197025761970261ad29565b60200260200101819052506040518060400160405280600281526020017f2d63000000000000000000000000000000000000000000000000000000000000815250816001815181106197565761975661ad29565b602002602001018190525081816002815181106197755761977561ad29565b6020908102919091010152949350505050565b60208083015183518351928401516000936197a6929184919061a246565b14159392505050565b604080518082019091526000808252602082015260006197e1846000015185602001518560000151866020015161a357565b90508360200151816197f3919061bca7565b8451859061980290839061bca7565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015619836575081615dc7565b602080830151908401516001911461985d5750815160208481015190840151829020919020145b801561988e5782518451859061987490839061bca7565b905250825160208501805161988a90839061bd98565b9052505b509192915050565b60408051808201909152600080825260208201526198b583838361a477565b5092915050565b60606000826000015167ffffffffffffffff8111156198dd576198dd61aa84565b6040519080825280601f01601f191660200182016040528015619907576020820181803683370190505b50905060006020820190506198b5818560200151866000015161a522565b8151815160009190811115619938575081515b6020808501519084015160005b838110156199f157825182518082146199c15760001960208710156199a05760018461997289602061bca7565b61997c919061bd98565b61998790600861bf55565b61999290600261c053565b61999c919061bca7565b1990505b81811683821681810391146199be579750615dc79650505050505050565b50505b6199cc60208661bd98565b94506199d960208561bd98565b935050506020816199ea919061bd98565b9050619945565b5084518651616f6c919061c05f565b60606000619a0c6167eb565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081619a2957905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280619a849061b7a8565b935060ff1681518110619a9957619a9961ad29565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001619aea919061c07f565b604051602081830303815290604052828280619b059061b7a8565b935060ff1681518110619b1a57619b1a61ad29565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280619b679061b7a8565b935060ff1681518110619b7c57619b7c61ad29565b602002602001018190525082604051602001619b98919061b6a7565b604051602081830303815290604052828280619bb39061b7a8565b935060ff1681518110619bc857619bc861ad29565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280619c159061b7a8565b935060ff1681518110619c2a57619c2a61ad29565b6020026020010181905250619c3f878461a59c565b8282619c4a8161b7a8565b935060ff1681518110619c5f57619c5f61ad29565b602090810291909101015285515115619d0b5760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282619cb18161b7a8565b935060ff1681518110619cc657619cc661ad29565b6020026020010181905250619cdf86600001518461a59c565b8282619cea8161b7a8565b935060ff1681518110619cff57619cff61ad29565b60200260200101819052505b856080015115619d795760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282619d548161b7a8565b935060ff1681518110619d6957619d6961ad29565b6020026020010181905250619ddf565b8415619ddf5760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282619dbe8161b7a8565b935060ff1681518110619dd357619dd361ad29565b60200260200101819052505b60408601515115619e7b5760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282619e298161b7a8565b935060ff1681518110619e3e57619e3e61ad29565b60200260200101819052508560400151828280619e5a9061b7a8565b935060ff1681518110619e6f57619e6f61ad29565b60200260200101819052505b856060015115619ee55760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282619ec48161b7a8565b935060ff1681518110619ed957619ed961ad29565b60200260200101819052505b60008160ff1667ffffffffffffffff811115619f0357619f0361aa84565b604051908082528060200260200182016040528015619f3657816020015b6060815260200190600190039081619f215790505b50905060005b8260ff168160ff161015619f8f57838160ff1681518110619f5f57619f5f61ad29565b6020026020010151828260ff1681518110619f7c57619f7c61ad29565b6020908102919091010152600101619f3c565b50979650505050505050565b6040805180820190915260008082526020820152815183511015619fc0575081615dc7565b81518351602085015160009291619fd69161bd98565b619fe0919061bca7565b6020840151909150600190821461a001575082516020840151819020908220145b801561a01c5783518551869061a01890839061bca7565b9052505b50929392505050565b600080826000015161a049856000015186602001518660000151876020015161a357565b61a053919061bd98565b90505b8351602085015161a067919061bd98565b81116198b5578161a0778161c0c4565b925050826000015161a0ae85602001518361a092919061bca7565b865161a09e919061bca7565b838660000151876020015161a357565b61a0b8919061bd98565b905061a056565b6060600061a0cd848461a025565b61a0d890600161bd98565b67ffffffffffffffff81111561a0f05761a0f061aa84565b60405190808252806020026020018201604052801561a12357816020015b606081526020019060019003908161a10e5790505b50905060005b81518110156181ba5761a13f6184df8686619896565b82828151811061a1515761a15161ad29565b602090810291909101015260010161a129565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061a1ad577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831061a1d9576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061a1f757662386f26fc10000830492506010015b6305f5e100831061a20f576305f5e100830492506008015b612710831061a22357612710830492506004015b6064831061a235576064830492506002015b600a8310615dc75760010192915050565b60008085841161a34d576020841161a2f9576000841561a29157600161a26d86602061bca7565b61a27890600861bf55565b61a28390600261c053565b61a28d919061bca7565b1990505b835181168561a2a0898961bd98565b61a2aa919061bca7565b805190935082165b81811461a2e45787841161a2cc5787945050505050617deb565b8361a2d68161c0de565b94505082845116905061a2b2565b61a2ee878561bd98565b945050505050617deb565b83832061a306858861bca7565b61a310908761bd98565b91505b85821061a34b5784822080820361a3385761a32e868461bd98565b9350505050617deb565b61a34360018461bca7565b92505061a313565b505b5092949350505050565b6000838186851161a462576020851161a411576000851561a3a357600161a37f87602061bca7565b61a38a90600861bf55565b61a39590600261c053565b61a39f919061bca7565b1990505b8451811660008761a3b48b8b61bd98565b61a3be919061bca7565b855190915083165b82811461a4035781861061a3eb5761a3de8b8b61bd98565b9650505050505050617deb565b8561a3f58161c0c4565b96505083865116905061a3c6565b859650505050505050617deb565b508383206000905b61a423868961bca7565b821161a4605785832080820361a43f5783945050505050617deb565b61a44a60018561bd98565b935050818061a4589061c0c4565b92505061a419565b505b61a46c878761bd98565b979650505050505050565b6040805180820190915260008082526020820152600061a4a9856000015186602001518660000151876020015161a357565b60208087018051918601919091525190915061a4c5908261bca7565b83528451602086015161a4d8919061bd98565b810361a4e7576000855261a519565b8351835161a4f5919061bd98565b8551869061a50490839061bca7565b905250835161a513908261bd98565b60208601525b50909392505050565b6020811061a55a578151835261a53960208461bd98565b925061a54660208361bd98565b915061a55360208261bca7565b905061a522565b600019811561a58957600161a57083602061bca7565b61a57c9061010061c053565b61a586919061bca7565b90505b9151835183169219169190911790915250565b6060600061a5aa84846168be565b805160208083015160405193945061a5c49390910161c0f5565b60405160208183030381529060405291505092915050565b610c9f8061c14e83390190565b6112a68061cded83390190565b610ec28061e09383390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161a64661a64b565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161a6466040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b8181101561a6fd5783516001600160a01b031683526020938401939092019160010161a6d6565b509095945050505050565b60005b8381101561a72357818101518382015260200161a70b565b50506000910152565b6000815180845261a74481602086016020860161a708565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a854577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b8181101561a83a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261a82484865161a72c565b602095860195909450929092019160010161a7ea565b50919750505060209485019492909201915060010161a780565b50929695505050505050565b600081518084526020840193506020830160005b8281101561a8b45781517fffffffff000000000000000000000000000000000000000000000000000000001686526020958601959091019060010161a874565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a854577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516040875261a92a604088018261a72c565b905060208201519150868103602088015261a945818361a860565b96505050602093840193919091019060010161a8e6565b600082825180855260208501945060208160051b8301016020850160005b8381101561a9ac57601f1985840301885261a99683835161a72c565b602098890198909350919091019060010161a97a565b50909695505050505050565b602081526000616003602083018461a95c565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a854577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b038151168652602081015190506040602087015261aa4c604087018261a860565b955050602093840193919091019060010161a9f3565b6001600160a01b0383168152604060208201526000617deb604083018461a72c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561aad65761aad661aa84565b60405290565b60008067ffffffffffffffff84111561aaf75761aaf761aa84565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561ab265761ab2661aa84565b60405283815290508082840185101561ab3e57600080fd5b6181ba84602083018561a708565b600082601f83011261ab5d57600080fd5b6160038383516020850161aadc565b60006020828403121561ab7e57600080fd5b815167ffffffffffffffff81111561ab9557600080fd5b615dc38482850161ab4c565b602081526000616003602083018461a72c565b60006020828403121561abc657600080fd5b8151801515811461600357600080fd5b600181811c9082168061abea57607f821691505b6020821081036187ba577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b601f82111561293157806000526020600020601f840160051c8101602085101561ac4a5750805b601f840160051c820191505b81811015611daf576000815560010161ac56565b815167ffffffffffffffff81111561ac845761ac8461aa84565b61ac988161ac92845461abd6565b8461ac23565b6020601f82116001811461accc576000831561acb45750848201515b600019600385901b1c1916600184901b178455611daf565b600084815260208120601f198516915b8281101561acfc578785015182556020948501946001909201910161acdc565b508482101561ad1a5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081518084526020840193506020830160005b8281101561a8b457815186526020958601959091019060010161ad6c565b60608152600061ad9d606083018661a95c565b828103602084015261adaf818661ad58565b9150508215156040830152949350505050565b6001600160a01b0384511681526001600160a01b03831660208201526060604082015260006187a0606083018461a72c565b6001600160a01b03841681528260208201526060604082015260006187a0606083018461a72c565b828152604060208201526000617deb604083018461a72c565b6001600160a01b0381541682526001600160a01b03600182015416602083015260028101546040830152600060038201608060608501526000815461ae798161abd6565b806080880152600182166000811461ae98576001811461aed25761af06565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831660a089015260a082151560051b890101935061af06565b84600052602060002060005b8381101561aefd5781548a820160a0015260019091019060200161aede565b890160a0019450505b50919695505050505050565b6001600160a01b038416815260606020820152600061af34606083018561a72c565b8281036040840152616f6c818561ae35565b60006020828403121561af5857600080fd5b81516001600160a01b038116811461600357600080fd5b60608152600061af82606083018661a72c565b602083019490945250901515604090910152919050565b6001600160a01b038616815284602082015260a06040820152600061afc160a083018661a72c565b6060830194909452509015156080909101529392505050565b6001600160a01b03861681526001600160a01b038516602082015283604082015260a06060820152600061b01160a083018561a72c565b828103608084015261b023818561ae35565b98975050505050505050565b60006020828403121561b04157600080fd5b5051919050565b6001600160a01b03851681526001600160a01b0384166020820152826040820152608060608201526000616f6c608083018461a72c565b6001600160a01b038516815260806020820152600061b0a1608083018661a95c565b828103604084015261b0b3818661ad58565b915050821515606083015295945050505050565b6001600160a01b0383168152604060208201526000617deb604083018461ae35565b83815260606020820152600061af34606083018561a72c565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161b13a81601a85016020880161a708565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161b17781601c84016020880161a708565b01601c01949350505050565b6000835161b19581846020880161a708565b83519083019061b1a981836020880161a708565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161b1ea81601a85016020880161a708565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161b22781603384016020880161a708565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b6001600160a01b03841681526001600160a01b03831660208201526060604082015260006187a0606083018461a72c565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000616003608083018461a72c565b60006020828403121561b2e757600080fd5b815167ffffffffffffffff81111561b2fe57600080fd5b8201601f8101841361b30f57600080fd5b615dc38482516020840161aadc565b6000855161b330818460208a0161a708565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161b36a816001840160208a0161a708565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161b3a881600284016020890161a708565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161b3ea81600284016020880161a708565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061b435604083018461a72c565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161b4ac81601f85016020870161a708565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061b519604083018461a72c565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061b56b604083018461a72c565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161b5e281601485016020870161a708565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061b629604083018561a72c565b8281036020840152615fff818561a72c565b7f220000000000000000000000000000000000000000000000000000000000000081526000825161b67381600185016020870161a708565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161b6b981846020870161a708565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161b76c81604b85016020870161a708565b91909101604b0192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff810361b7be5761b7be61b779565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161b82581602985016020870161a708565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000616003608083018461a72c565b60006020828403121561b88b57600080fd5b815167ffffffffffffffff81111561b8a257600080fd5b82016060818503121561b8b457600080fd5b61b8bc61aab3565b81518060030b811461b8cd57600080fd5b8152602082015167ffffffffffffffff81111561b8e957600080fd5b61b8f58682850161ab4c565b602083015250604082015167ffffffffffffffff81111561b91557600080fd5b61b9218682850161ab4c565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161b98d81602185016020870161a708565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161bb7981602185016020880161a708565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161bbb681602e84016020880161a708565b01602e01949350505050565b6000825161bbd481846020870161a708565b9190910192915050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161b82581602985016020870161a708565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161bc9a81602285016020870161a708565b9190910160220192915050565b81810381811115615dc757615dc761b779565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161bcf281600e85016020870161a708565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b80820180821115615dc757615dc761b779565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161bde381601885016020880161a708565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161be2081601c84016020880161a708565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161bf2681846020870161a708565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b8082028115828204841417615dc757615dc761b779565b6001815b600184111561bfa75780850481111561bf8b5761bf8b61b779565b600184161561bf9957908102905b60019390931c92800261bf70565b935093915050565b60008261bfbe57506001615dc7565b8161bfcb57506000615dc7565b816001811461bfe1576002811461bfeb5761c007565b6001915050615dc7565b60ff84111561bffc5761bffc61b779565b50506001821b615dc7565b5060208310610133831016604e8410600b841016171561c02a575081810a615dc7565b61c037600019848461bf6c565b806000190482111561c04b5761c04b61b779565b029392505050565b6000616003838361bfaf565b81810360008312801583831316838312821617156198b5576198b561b779565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161c0b781601c85016020870161a708565b91909101601c0192915050565b6000600019820361c0d75761c0d761b779565b5060010190565b60008161c0ed5761c0ed61b779565b506000190190565b6000835161c10781846020880161a708565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161c14181600184016020880161a708565b0160010194935050505056fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212205f76808fb3dc6dacf4bd766b2d0bf9d6beb64856c952cec8e267368511bd936a64736f6c634300081a0033608060405234801561001057600080fd5b506040516112a63803806112a683398101604081905261002f91610110565b604051806040016040528060048152602001635a65746160e01b815250604051806040016040528060048152602001635a45544160e01b815250816003908161007891906101e2565b50600461008582826101e2565b5050506001600160a01b03821615806100a557506001600160a01b038116155b156100c35760405163e6c4247b60e01b815260040160405180910390fd5b600680546001600160a01b039384166001600160a01b031991821617909155600780549290931691161790556102a0565b80516001600160a01b038116811461010b57600080fd5b919050565b6000806040838503121561012357600080fd5b61012c836100f4565b915061013a602084016100f4565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061016d57607f821691505b60208210810361018d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101dd57806000526020600020601f840160051c810160208510156101ba5750805b601f840160051c820191505b818110156101da57600081556001016101c6565b50505b505050565b81516001600160401b038111156101fb576101fb610143565b61020f816102098454610159565b84610193565b6020601f821160018114610243576000831561022b5750848201515b600019600385901b1c1916600184901b1784556101da565b600084815260208120601f198516915b828110156102735787850151825560209485019460019092019101610253565b50848210156102915786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610ff7806102af6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806342966c68116100b257806379cc679011610081578063a9059cbb11610066578063a9059cbb1461028e578063bff9662a146102a1578063dd62ed3e146102c157600080fd5b806379cc67901461027357806395d89b411461028657600080fd5b806342966c68146102025780635b1125911461021557806370a0823114610235578063779e3b631461026b57600080fd5b80631e458bee116100ee5780631e458bee1461018857806323b872dd1461019b578063313ce567146101ae578063328a01d0146101bd57600080fd5b806306fdde0314610120578063095ea7b31461013e57806315d57fd41461016157806318160ddd14610176575b600080fd5b610128610307565b6040516101359190610d97565b60405180910390f35b61015161014c366004610e2c565b610399565b6040519015158152602001610135565b61017461016f366004610e56565b6103b3565b005b6002545b604051908152602001610135565b610174610196366004610e89565b61057e565b6101516101a9366004610ebc565b610631565b60405160128152602001610135565b6007546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610135565b610174610210366004610ef9565b610655565b6006546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a610243366004610f12565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b610174610662565b610174610281366004610e2c565b610786565b610128610837565b61015161029c366004610e2c565b610846565b6005546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a6102cf366004610e56565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461031690610f34565b80601f016020809104026020016040519081016040528092919081815260200182805461034290610f34565b801561038f5780601f106103645761010080835404028352916020019161038f565b820191906000526020600020905b81548152906001019060200180831161037257829003601f168201915b5050505050905090565b6000336103a7818585610854565b60019150505b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff1633148015906103f3575060065473ffffffffffffffffffffffffffffffffffffffff163314155b15610431576040517fcdfcef970000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82161580610468575073ffffffffffffffffffffffffffffffffffffffff8116155b1561049f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006805473ffffffffffffffffffffffffffffffffffffffff8481167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316811790935560058054918516919092161790556040805133815260208101929092527fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff910160405180910390a16040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f1b9352454524a57a51f24f67dc66d898f616922cd1f7a12d73570ece12b1975c910160405180910390a15050565b60055473ffffffffffffffffffffffffffffffffffffffff1633146105d1576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6105db8383610866565b808373ffffffffffffffffffffffffffffffffffffffff167fc263b302aec62d29105026245f19e16f8e0137066ccd4a8bd941f716bd4096bb8460405161062491815260200190565b60405180910390a3505050565b60003361063f8582856108c6565b61064a858585610995565b506001949350505050565b61065f3382610a40565b50565b60075473ffffffffffffffffffffffffffffffffffffffff1633146106b5576040517fe700765e000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b60065473ffffffffffffffffffffffffffffffffffffffff16610704576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0910160405180910390a1565b60055473ffffffffffffffffffffffffffffffffffffffff1633146107d9576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6107e38282610a9c565b8173ffffffffffffffffffffffffffffffffffffffff167f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b18260405161082b91815260200190565b60405180910390a25050565b60606004805461031690610f34565b6000336103a7818585610995565b6108618383836001610ab1565b505050565b73ffffffffffffffffffffffffffffffffffffffff82166108b6576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c260008383610bf9565b5050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461098f5781811015610980576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401610428565b61098f84848484036000610ab1565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166109e5576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8216610a35576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b610861838383610bf9565b73ffffffffffffffffffffffffffffffffffffffff8216610a90576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c282600083610bf9565b610aa78233836108c6565b6108c28282610a40565b73ffffffffffffffffffffffffffffffffffffffff8416610b01576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8316610b51576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160209081526040808320938716835292905220829055801561098f578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610beb91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8316610c31578060026000828254610c269190610f87565b90915550610ce39050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610cb7576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810182905260448101839052606401610428565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff8216610d0c57600280548290039055610d38565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161062491815260200190565b602081526000825180602084015260005b81811015610dc55760208186018101516040868401015201610da8565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e2757600080fd5b919050565b60008060408385031215610e3f57600080fd5b610e4883610e03565b946020939093013593505050565b60008060408385031215610e6957600080fd5b610e7283610e03565b9150610e8060208401610e03565b90509250929050565b600080600060608486031215610e9e57600080fd5b610ea784610e03565b95602085013595506040909401359392505050565b600080600060608486031215610ed157600080fd5b610eda84610e03565b9250610ee860208501610e03565b929592945050506040919091013590565b600060208284031215610f0b57600080fd5b5035919050565b600060208284031215610f2457600080fd5b610f2d82610e03565b9392505050565b600181811c90821680610f4857607f821691505b602082108103610f81577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156103ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220e8a1f6a00b1b9c77fd6d8724e3829463441aaedd6b65190c6dc6c18bcc5810e364736f6c634300081a00336080604052348015600f57600080fd5b506001600055610e9e806100246000396000f3fe60806040526004361061006e5760003560e01c8063c51316911161004b578063c5131691146100d5578063c9028a36146100f5578063e04d4f9714610115578063f05b6abf1461012857005b8063357fc5a214610077578063676cc054146100975780636ed70169146100c057005b3661007557005b005b34801561008357600080fd5b506100756100923660046106ec565b610148565b6100aa6100a5366004610728565b6101de565b6040516100b79190610823565b60405180910390f35b3480156100cc57600080fd5b50610075610222565b3480156100e157600080fd5b506100756100f03660046106ec565b610257565b34801561010157600080fd5b50610075610110366004610836565b610332565b610075610123366004610996565b61036e565b34801561013457600080fd5b50610075610143366004610a82565b6103b2565b6101506103e7565b61017273ffffffffffffffffffffffffffffffffffffffff831633838661042a565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101d96001600055565b505050565b6040516060907f3658b46bab672c7672b69c2f0feda706eabdb7d2231421c96e9049b2db5e7eee90600090a1506040805160208101909152600081525b9392505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b61025f6103e7565b600061026c600285610b6c565b9050806000036102a8576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102ca73ffffffffffffffffffffffffffffffffffffffff841633848461042a565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101d96001600055565b7f689a5a5cb55e795ffe4cd8b419cd3bb0a3373974c54d25f64e734d7388b93e9b3382604051610363929190610bf0565b60405180910390a150565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa33348585856040516103a5959493929190610ce2565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103a59493929190610d6c565b600260005403610423576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526104bf9085906104c5565b50505050565b60006104e773ffffffffffffffffffffffffffffffffffffffff841683610560565b9050805160001415801561050c57508080602001905181019061050a9190610e2f565b155b156101d9576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061021b83836000846000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105939190610e4c565b60006040518083038185875af1925050503d80600081146105d0576040519150601f19603f3d011682016040523d82523d6000602084013e6105d5565b606091505b50915091506105e58683836105ef565b9695505050505050565b606082610604576105ff8261067e565b61021b565b8151158015610628575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610677576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610557565b508061021b565b80511561068e5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106e757600080fd5b919050565b60008060006060848603121561070157600080fd5b83359250610711602085016106c3565b915061071f604085016106c3565b90509250925092565b6000806000838503604081121561073e57600080fd5b602081121561074c57600080fd5b50839250602084013567ffffffffffffffff81111561076a57600080fd5b8401601f8101861361077b57600080fd5b803567ffffffffffffffff81111561079257600080fd5b8660208284010111156107a457600080fd5b939660209190910195509293505050565b60005b838110156107d05781810151838201526020016107b8565b50506000910152565b600081518084526107f18160208601602086016107b5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061021b60208301846107d9565b60006020828403121561084857600080fd5b813567ffffffffffffffff81111561085f57600080fd5b82016080818503121561021b57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156108e7576108e7610871565b604052919050565b600082601f83011261090057600080fd5b813567ffffffffffffffff81111561091a5761091a610871565b61094b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016108a0565b81815284602083860101111561096057600080fd5b816020850160208301376000918101602001919091529392505050565b80151581146106c057600080fd5b80356106e78161097d565b6000806000606084860312156109ab57600080fd5b833567ffffffffffffffff8111156109c257600080fd5b6109ce868287016108ef565b9350506020840135915060408401356109e68161097d565b809150509250925092565b600067ffffffffffffffff821115610a0b57610a0b610871565b5060051b60200190565b600082601f830112610a2657600080fd5b8135610a39610a34826109f1565b6108a0565b8082825260208201915060208360051b860101925085831115610a5b57600080fd5b602085015b83811015610a78578035835260209283019201610a60565b5095945050505050565b600080600060608486031215610a9757600080fd5b833567ffffffffffffffff811115610aae57600080fd5b8401601f81018613610abf57600080fd5b8035610acd610a34826109f1565b8082825260208201915060208360051b850101925088831115610aef57600080fd5b602084015b83811015610b3157803567ffffffffffffffff811115610b1357600080fd5b610b228b6020838901016108ef565b84525060209283019201610af4565b509550505050602084013567ffffffffffffffff811115610b5157600080fd5b610b5d86828701610a15565b92505061071f6040850161098b565b600082610ba2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015273ffffffffffffffffffffffffffffffffffffffff610c2e836106c3565b16604082015273ffffffffffffffffffffffffffffffffffffffff610c55602084016106c3565b166060820152600080604084013590508060808401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610ca157600080fd5b830160208101903567ffffffffffffffff811115610cbe57600080fd5b803603821315610ccd57600080fd5b608060a08501526105e560c085018284610ba7565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610d1760a08301866107d9565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610d62578151865260209586019590910190600101610d44565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610dff577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610dea8583516107d9565b94506020938401939190910190600101610db0565b505050508281036040840152610e158186610d30565b915050610e26606083018415159052565b95945050505050565b600060208284031215610e4157600080fd5b815161021b8161097d565b60008251610e5e8184602087016107b5565b919091019291505056fea26469706673582212200208dfaef53d7ec7d471b3a513486f45b234e5fb6727c50beff735b8aa974ee464736f6c634300081a0033a2646970667358221220b22b3b807558bb4787ba8f88b8da953d574218189f40e18eeaf11e28652115ee64736f6c634300081a0033", } // GatewayEVMTestABI 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 16a94c869..a1a4a2095 100644 --- a/v2/pkg/gatewayevmupgradetest.sol/gatewayevmupgradetest.go +++ b/v2/pkg/gatewayevmupgradetest.sol/gatewayevmupgradetest.go @@ -54,7 +54,7 @@ type RevertOptions struct { // 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\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\":\"execute\",\"inputs\":[{\"name\":\"messageContext\",\"type\":\"tuple\",\"internalType\":\"structMessageContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"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\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"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\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"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\":\"Called\",\"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\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposited\",\"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\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"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\":\"UpdatedGatewayTSSAddress\",\"inputs\":[{\"name\":\"oldTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newTSSAddress\",\"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\":\"ConnectorInitialized\",\"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\":\"NotAllowedToCallOnCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotAllowedToCallOnRevert\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotWhitelistedInCustody\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PayloadSizeExceeded\",\"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: "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161386d6100fd600039600081816121ee015281816122170152612685015261386d6000f3fe6080604052600436106101fe5760003560e01c80635c975abb1161011d578063aa0c0fc1116100b0578063cb7ba8e51161007f578063d547741f11610064578063d547741f1461066f578063dda79b751461068f578063e63ab1e9146106af57600080fd5b8063cb7ba8e51461063c578063d09e3b781461064f57600080fd5b8063aa0c0fc114610593578063ad3cb1cc146105b3578063ae7a3a6f146105fc578063c0c53b8b1461061c57600080fd5b80638456cb59116100ec5780638456cb59146104d057806391d14854146104e5578063a217fddf1461054a578063a783c7891461055f57600080fd5b80635c975abb1461043f5780635d62c86014610476578063726ac97c146104aa578063744b9b8b146104bd57600080fd5b806336568abe116101955780635131ab59116101645780635131ab59146103ca57806352d1902d146103ea57806357bec62f146103ff5780635b1125911461041f57600080fd5b806336568abe1461036f57806338e225271461038f5780633f4ba83a146103a25780634f1ef286146103b757600080fd5b80631cff79cd116101d15780631cff79cd1461029a57806321e093b1146102ba578063248a9ca3146102f25780632f2ff15d1461034f57600080fd5b806301ffc9a71461020357806310188aef14610238578063102614b01461025a5780631becceb41461027a575b600080fd5b34801561020f57600080fd5b5061022361021e366004612df1565b6106e3565b60405190151581526020015b60405180910390f35b34801561024457600080fd5b50610258610253366004612e4f565b61077c565b005b34801561026657600080fd5b50610258610275366004612e82565b610857565b34801561028657600080fd5b50610258610295366004612f33565b610951565b6102ad6102a8366004612f9a565b6109cf565b60405161022f919061303d565b3480156102c657600080fd5b506003546102da906001600160a01b031681565b6040516001600160a01b03909116815260200161022f565b3480156102fe57600080fd5b5061034161030d366004613050565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b60405190815260200161022f565b34801561035b57600080fd5b5061025861036a366004613069565b610a87565b34801561037b57600080fd5b5061025861038a366004613069565b610acb565b6102ad61039d366004613095565b610b1c565b3480156103ae57600080fd5b50610258610c08565b6102586103c5366004613186565b610c3d565b3480156103d657600080fd5b506102586103e5366004613217565b610c5c565b3480156103f657600080fd5b50610341610f5c565b34801561040b57600080fd5b506002546102da906001600160a01b031681565b34801561042b57600080fd5b506001546102da906001600160a01b031681565b34801561044b57600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610223565b34801561048257600080fd5b506103417f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b6102586104b8366004613286565b610f8b565b6102586104cb366004612f33565b611103565b3480156104dc57600080fd5b5061025861127f565b3480156104f157600080fd5b50610223610500366004613069565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561055657600080fd5b50610341600081565b34801561056b57600080fd5b506103417f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561059f57600080fd5b506102586105ae3660046132e6565b6112b1565b3480156105bf57600080fd5b506102ad6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b34801561060857600080fd5b50610258610617366004612e4f565b61145a565b34801561062857600080fd5b5061025861063736600461337e565b611535565b61025861064a3660046133c1565b6117fc565b34801561065b57600080fd5b5061025861066a366004613434565b6119e4565b34801561067b57600080fd5b5061025861068a366004613069565b611adc565b34801561069b57600080fd5b506000546102da906001600160a01b031681565b3480156106bb57600080fd5b506103417f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061077657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600061078781611b20565b6001600160a01b0382166107ae5760405163d92e233d60e01b815260040160405180910390fd5b6002546001600160a01b0316156107f1576040517f0c8dc01600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61081b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611b2a565b5050600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61085f611c17565b610867611c75565b826000036108a1576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166108c85760405163d92e233d60e01b815260040160405180910390fd5b6108d3338385611cf6565b836001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c85858560405161091a939291906135d9565b60405180910390a361094b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050565b610959611c17565b610961611c75565b6001600160a01b0384166109885760405163d92e233d60e01b815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167fd34634f30f94a646fdf4ce7078f38fc5fa0d3f0b193658facea4e3e43330d97485858560405161091a9392919061360f565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb6109fb81611b20565b610a03611c17565b6001600160a01b038516610a2a5760405163d92e233d60e01b815260040160405180910390fd5b6000610a37868686611f59565b9050856001600160a01b03167f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e8546348787604051610a7693929190613635565b60405180910390a295945050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610ac181611b20565b61094b8383611b2a565b6001600160a01b0381163314610b0d576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b17828261200c565b505050565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610b4881611b20565b610b50611c17565b610b58611c75565b6001600160a01b038516610b7f5760405163d92e233d60e01b815260040160405180910390fd5b6060610b8d878787876120d0565b9050856001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f348787604051610bcc93929190613635565b60405180910390a29150610bff60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50949350505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610c3281611b20565b610c3a612153565b50565b610c456121e3565b610c4e826122b3565b610c5882826122be565b5050565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9610c8681611b20565b610c8e611c17565b610c96611c75565b83600003610cd0576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038516610cf75760405163d92e233d60e01b815260040160405180910390fd5b610d0186866123c4565b610d37576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905287169063095ea7b3906044016020604051808303816000875af1158015610d9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc3919061364f565b610df9576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e04858484611f59565b50610e0f86866123c4565b610e45576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610ea5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec9919061366c565b90508015610edb57610edb8782612454565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610f2293929190613635565b60405180910390a350610f5460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b6000610f6661267a565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610f93611c17565b610f9b611c75565b34600003610fd5576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216610ffc5760405163d92e233d60e01b815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114611049576040519150601f19603f3d011682016040523d82523d6000602084013e61104e565b606091505b5050905080611089576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c346000866040516110d1939291906135d9565b60405180910390a350610c5860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b61110b611c17565b611113611c75565b3460000361114d576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166111745760405163d92e233d60e01b815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146111c1576040519150601f19603f3d011682016040523d82523d6000602084013e6111c6565b606091505b5050905080611201576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c34600088888860405161124d959493929190613685565b60405180910390a35061094b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6112a981611b20565b610c3a6126dc565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b96112db81611b20565b6112e3611c17565b6112eb611c75565b84600003611325576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03861661134c5760405163d92e233d60e01b815260040160405180910390fd5b6113606001600160a01b0388168787612755565b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063c9028a36906113a5908590600401613728565b600060405180830381600087803b1580156113bf57600080fd5b505af11580156113d3573d6000803e3d6000fd5b50505050866001600160a01b0316866001600160a01b03167fde7603a6ed5d07c9f43597ccfe9043d15b66d3284f0de321f5cdf56329e6e03587878787604051611420949392919061373b565b60405180910390a361145160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050505050565b600061146581611b20565b6001600160a01b03821661148c5760405163d92e233d60e01b815260040160405180910390fd5b6000546001600160a01b0316156114cf576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114f97f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611b2a565b5050600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156115805750825b905060008267ffffffffffffffff16600114801561159d5750303b155b9050811580156115ab575080155b156115e2576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156116435784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038816158061166057506001600160a01b038716155b1561167e5760405163d92e233d60e01b815260040160405180910390fd5b6116866127c9565b61168e6127d1565b6116966127c9565b61169e6127e1565b6116a9600087611b2a565b506116d47f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611b2a565b506116ff7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a89611b2a565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a1617905561175d7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb89611b2a565b50600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03891617905583156117f25784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb61182681611b20565b61182e611c17565b611836611c75565b6001600160a01b03851661185d5760405163d92e233d60e01b815260040160405180910390fd5b6000856001600160a01b03163460405160006040518083038185875af1925050503d80600081146118aa576040519150601f19603f3d011682016040523d82523d6000602084013e6118af565b606091505b50509050806118ea576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063c9028a369061192f908690600401613728565b600060405180830381600087803b15801561194957600080fd5b505af115801561195d573d6000803e3d6000fd5b5050505060006001600160a01b0316866001600160a01b03167fde7603a6ed5d07c9f43597ccfe9043d15b66d3284f0de321f5cdf56329e6e035348888886040516119ab949392919061373b565b60405180910390a3506119dd60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6119ec611c17565b6119f4611c75565b84600003611a2e576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038616611a555760405163d92e233d60e01b815260040160405180910390fd5b611a60338587611cf6565b856001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c8787878787604051611aab959493929190613685565b60405180910390a3610f5460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154611b1681611b20565b61094b838361200c565b610c3a81336127f1565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611c0d576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611bc33390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610776565b6000915050610776565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611c73576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611cf0576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6003546001600160a01b0390811690831603611e5a57611d216001600160a01b03831684308461287e565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611d8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611db1919061364f565b611de7576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611e4657600080fd5b505af1158015611451573d6000803e3d6000fd5b6000546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301529091169063d936547e90602401602060405180830381865afa158015611ebd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee1919061364f565b611f17576040517fac2175f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610b17906001600160a01b03848116918691168461287e565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6060611f6583836128b7565b600080856001600160a01b0316348686604051611f83929190613772565b60006040518083038185875af1925050503d8060008114611fc0576040519150601f19603f3d011682016040523d82523d6000602084013e611fc5565b606091505b509150915081612001576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611c0d576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610776565b6060836001600160a01b031663676cc054348786866040518563ffffffff1660e01b815260040161210393929190613782565b60006040518083038185885af1158015612121573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261214a91908101906137ad565b95945050505050565b61215b61293c565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061227c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166122707f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611c73576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610c5881611b20565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612318575060408051601f3d908101601f191682019092526123159181019061366c565b60015b61235e576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146123ba576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401612355565b610b178383612997565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015612430573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612005919061364f565b6003546001600160a01b03908116908316036125a3576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af11580156124d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124fa919061364f565b612530576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561258f57600080fd5b505af1158015610f54573d6000803e3d6000fd5b6000546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301529091169063d936547e90602401602060405180830381865afa158015612606573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061262a919061364f565b612660576040517fac2175f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610c58906001600160a01b03848116911683612755565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611c73576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6126e4611c17565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258336121c5565b6040516001600160a01b03838116602483015260448201839052610b1791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506129ed565b611c73612a69565b6127d9612a69565b611c73612ad0565b6127e9612a69565b611c73612ad8565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610c58576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401612355565b6040516001600160a01b03848116602483015283811660448301526064820183905261094b9186918216906323b872dd90608401612782565b60048110610c585781357f98933fac000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000821601610b17576040517fed69977500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611c73576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6129a082612b29565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156129e557610b178282612bd1565b610c58612c3e565b6000612a026001600160a01b03841683612c76565b90508051600014158015612a27575080806020019051810190612a25919061364f565b155b15610b17576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401612355565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611c73576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f33612a69565b612ae0612a69565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b806001600160a01b03163b600003612b78576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401612355565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051612bee919061381b565b600060405180830381855af49150503d8060008114612c29576040519150601f19603f3d011682016040523d82523d6000602084013e612c2e565b606091505b509150915061214a858383612c84565b3415611c73576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061200583836000612cf9565b606082612c9957612c9482612daf565b612005565b8151158015612cb057506001600160a01b0384163b155b15612cf2576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401612355565b5080612005565b606081471015612d37576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401612355565b600080856001600160a01b03168486604051612d53919061381b565b60006040518083038185875af1925050503d8060008114612d90576040519150601f19603f3d011682016040523d82523d6000602084013e612d95565b606091505b5091509150612da5868383612c84565b9695505050505050565b805115612dbf5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215612e0357600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461200557600080fd5b80356001600160a01b0381168114612e4a57600080fd5b919050565b600060208284031215612e6157600080fd5b61200582612e33565b600060a08284031215612e7c57600080fd5b50919050565b60008060008060808587031215612e9857600080fd5b612ea185612e33565b935060208501359250612eb660408601612e33565b9150606085013567ffffffffffffffff811115612ed257600080fd5b612ede87828801612e6a565b91505092959194509250565b60008083601f840112612efc57600080fd5b50813567ffffffffffffffff811115612f1457600080fd5b602083019150836020828501011115612f2c57600080fd5b9250929050565b60008060008060608587031215612f4957600080fd5b612f5285612e33565b9350602085013567ffffffffffffffff811115612f6e57600080fd5b612f7a87828801612eea565b909450925050604085013567ffffffffffffffff811115612ed257600080fd5b600080600060408486031215612faf57600080fd5b612fb884612e33565b9250602084013567ffffffffffffffff811115612fd457600080fd5b612fe086828701612eea565b9497909650939450505050565b60005b83811015613008578181015183820152602001612ff0565b50506000910152565b60008151808452613029816020860160208601612fed565b601f01601f19169290920160200192915050565b6020815260006120056020830184613011565b60006020828403121561306257600080fd5b5035919050565b6000806040838503121561307c57600080fd5b8235915061308c60208401612e33565b90509250929050565b60008060008084860360608112156130ac57600080fd5b60208112156130ba57600080fd5b508493506130ca60208601612e33565b9250604085013567ffffffffffffffff8111156130e657600080fd5b6130f287828801612eea565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613156576131566130fe565b604052919050565b600067ffffffffffffffff821115613178576131786130fe565b50601f01601f191660200190565b6000806040838503121561319957600080fd5b6131a283612e33565b9150602083013567ffffffffffffffff8111156131be57600080fd5b8301601f810185136131cf57600080fd5b80356131e26131dd8261315e565b61312d565b8181528660208385010111156131f757600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008060008060006080868803121561322f57600080fd5b61323886612e33565b945061324660208701612e33565b935060408601359250606086013567ffffffffffffffff81111561326957600080fd5b61327588828901612eea565b969995985093965092949392505050565b6000806040838503121561329957600080fd5b6132a283612e33565b9150602083013567ffffffffffffffff8111156132be57600080fd5b6132ca85828601612e6a565b9150509250929050565b600060808284031215612e7c57600080fd5b60008060008060008060a087890312156132ff57600080fd5b61330887612e33565b955061331660208801612e33565b945060408701359350606087013567ffffffffffffffff81111561333957600080fd5b61334589828a01612eea565b909450925050608087013567ffffffffffffffff81111561336557600080fd5b61337189828a016132d4565b9150509295509295509295565b60008060006060848603121561339357600080fd5b61339c84612e33565b92506133aa60208501612e33565b91506133b860408501612e33565b90509250925092565b600080600080606085870312156133d757600080fd5b6133e085612e33565b9350602085013567ffffffffffffffff8111156133fc57600080fd5b61340887828801612eea565b909450925050604085013567ffffffffffffffff81111561342857600080fd5b612ede878288016132d4565b60008060008060008060a0878903121561344d57600080fd5b61345687612e33565b95506020870135945061346b60408801612e33565b9350606087013567ffffffffffffffff81111561348757600080fd5b61349389828a01612eea565b909450925050608087013567ffffffffffffffff8111156134b357600080fd5b61337189828a01612e6a565b8015158114610c3a57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261350257600080fd5b830160208101925035905067ffffffffffffffff81111561352257600080fd5b803603821315612f2c57600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6001600160a01b0361356d82612e33565b16825260006020820135613580816134bf565b151560208401526001600160a01b0361359b60408401612e33565b1660408401526135ae60608301836134cd565b60a060608601526135c360a086018284613531565b6080948501359590940194909452509092915050565b8381526001600160a01b0383166020820152608060408201526000608082015260a06060820152600061214a60a083018461355c565b604081526000613623604083018587613531565b8281036020840152612da5818561355c565b83815260406020820152600061214a604083018486613531565b60006020828403121561366157600080fd5b8151612005816134bf565b60006020828403121561367e57600080fd5b5051919050565b8581526001600160a01b03851660208201526080604082015260006136ae608083018587613531565b82810360608401526136c0818561355c565b98975050505050505050565b6001600160a01b036136dd82612e33565b1682526001600160a01b036136f460208301612e33565b16602083015260408181013590830152600061371360608301836134cd565b6080606086015261214a608086018284613531565b60208152600061200560208301846136cc565b848152606060208201526000613755606083018587613531565b828103604084015261376781856136cc565b979650505050505050565b8183823760009101908152919050565b6001600160a01b0361379385612e33565b16815260406020820152600061214a604083018486613531565b6000602082840312156137bf57600080fd5b815167ffffffffffffffff8111156137d657600080fd5b8201601f810184136137e757600080fd5b80516137f56131dd8261315e565b81815285602083850101111561380a57600080fd5b61214a826020830160208601612fed565b6000825161382d818460208701612fed565b919091019291505056fea26469706673582212208b72f5389b712bdb905de4b6561d7eed975fa0feeef1beea3562eb3d8e499dc564736f6c634300081a0033", + Bin: "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161386d6100fd600039600081816121ee015281816122170152612685015261386d6000f3fe6080604052600436106101fe5760003560e01c80635c975abb1161011d578063aa0c0fc1116100b0578063cb7ba8e51161007f578063d547741f11610064578063d547741f1461066f578063dda79b751461068f578063e63ab1e9146106af57600080fd5b8063cb7ba8e51461063c578063d09e3b781461064f57600080fd5b8063aa0c0fc114610593578063ad3cb1cc146105b3578063ae7a3a6f146105fc578063c0c53b8b1461061c57600080fd5b80638456cb59116100ec5780638456cb59146104d057806391d14854146104e5578063a217fddf1461054a578063a783c7891461055f57600080fd5b80635c975abb1461043f5780635d62c86014610476578063726ac97c146104aa578063744b9b8b146104bd57600080fd5b806336568abe116101955780635131ab59116101645780635131ab59146103ca57806352d1902d146103ea57806357bec62f146103ff5780635b1125911461041f57600080fd5b806336568abe1461036f57806338e225271461038f5780633f4ba83a146103a25780634f1ef286146103b757600080fd5b80631cff79cd116101d15780631cff79cd1461029a57806321e093b1146102ba578063248a9ca3146102f25780632f2ff15d1461034f57600080fd5b806301ffc9a71461020357806310188aef14610238578063102614b01461025a5780631becceb41461027a575b600080fd5b34801561020f57600080fd5b5061022361021e366004612df1565b6106e3565b60405190151581526020015b60405180910390f35b34801561024457600080fd5b50610258610253366004612e4f565b61077c565b005b34801561026657600080fd5b50610258610275366004612e82565b610857565b34801561028657600080fd5b50610258610295366004612f33565b610951565b6102ad6102a8366004612f9a565b6109cf565b60405161022f919061303d565b3480156102c657600080fd5b506003546102da906001600160a01b031681565b6040516001600160a01b03909116815260200161022f565b3480156102fe57600080fd5b5061034161030d366004613050565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b60405190815260200161022f565b34801561035b57600080fd5b5061025861036a366004613069565b610a87565b34801561037b57600080fd5b5061025861038a366004613069565b610acb565b6102ad61039d366004613095565b610b1c565b3480156103ae57600080fd5b50610258610c08565b6102586103c5366004613186565b610c3d565b3480156103d657600080fd5b506102586103e5366004613217565b610c5c565b3480156103f657600080fd5b50610341610f5c565b34801561040b57600080fd5b506002546102da906001600160a01b031681565b34801561042b57600080fd5b506001546102da906001600160a01b031681565b34801561044b57600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610223565b34801561048257600080fd5b506103417f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b6102586104b8366004613286565b610f8b565b6102586104cb366004612f33565b611103565b3480156104dc57600080fd5b5061025861127f565b3480156104f157600080fd5b50610223610500366004613069565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561055657600080fd5b50610341600081565b34801561056b57600080fd5b506103417f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561059f57600080fd5b506102586105ae3660046132e6565b6112b1565b3480156105bf57600080fd5b506102ad6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b34801561060857600080fd5b50610258610617366004612e4f565b61145a565b34801561062857600080fd5b5061025861063736600461337e565b611535565b61025861064a3660046133c1565b6117fc565b34801561065b57600080fd5b5061025861066a366004613434565b6119e4565b34801561067b57600080fd5b5061025861068a366004613069565b611adc565b34801561069b57600080fd5b506000546102da906001600160a01b031681565b3480156106bb57600080fd5b506103417f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061077657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600061078781611b20565b6001600160a01b0382166107ae5760405163d92e233d60e01b815260040160405180910390fd5b6002546001600160a01b0316156107f1576040517f0c8dc01600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61081b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611b2a565b5050600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61085f611c17565b610867611c75565b826000036108a1576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166108c85760405163d92e233d60e01b815260040160405180910390fd5b6108d3338385611cf6565b836001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c85858560405161091a939291906135d9565b60405180910390a361094b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050565b610959611c17565b610961611c75565b6001600160a01b0384166109885760405163d92e233d60e01b815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167fd34634f30f94a646fdf4ce7078f38fc5fa0d3f0b193658facea4e3e43330d97485858560405161091a9392919061360f565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb6109fb81611b20565b610a03611c17565b6001600160a01b038516610a2a5760405163d92e233d60e01b815260040160405180910390fd5b6000610a37868686611f59565b9050856001600160a01b03167f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e8546348787604051610a7693929190613635565b60405180910390a295945050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610ac181611b20565b61094b8383611b2a565b6001600160a01b0381163314610b0d576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b17828261200c565b505050565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610b4881611b20565b610b50611c17565b610b58611c75565b6001600160a01b038516610b7f5760405163d92e233d60e01b815260040160405180910390fd5b6060610b8d878787876120d0565b9050856001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f348787604051610bcc93929190613635565b60405180910390a29150610bff60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50949350505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610c3281611b20565b610c3a612153565b50565b610c456121e3565b610c4e826122b3565b610c5882826122be565b5050565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9610c8681611b20565b610c8e611c17565b610c96611c75565b83600003610cd0576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038516610cf75760405163d92e233d60e01b815260040160405180910390fd5b610d0186866123c4565b610d37576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905287169063095ea7b3906044016020604051808303816000875af1158015610d9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc3919061364f565b610df9576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e04858484611f59565b50610e0f86866123c4565b610e45576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610ea5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec9919061366c565b90508015610edb57610edb8782612454565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610f2293929190613635565b60405180910390a350610f5460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b6000610f6661267a565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610f93611c17565b610f9b611c75565b34600003610fd5576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216610ffc5760405163d92e233d60e01b815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114611049576040519150601f19603f3d011682016040523d82523d6000602084013e61104e565b606091505b5050905080611089576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c346000866040516110d1939291906135d9565b60405180910390a350610c5860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b61110b611c17565b611113611c75565b3460000361114d576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166111745760405163d92e233d60e01b815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146111c1576040519150601f19603f3d011682016040523d82523d6000602084013e6111c6565b606091505b5050905080611201576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c34600088888860405161124d959493929190613685565b60405180910390a35061094b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6112a981611b20565b610c3a6126dc565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b96112db81611b20565b6112e3611c17565b6112eb611c75565b84600003611325576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03861661134c5760405163d92e233d60e01b815260040160405180910390fd5b6113606001600160a01b0388168787612755565b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063c9028a36906113a5908590600401613728565b600060405180830381600087803b1580156113bf57600080fd5b505af11580156113d3573d6000803e3d6000fd5b50505050866001600160a01b0316866001600160a01b03167fde7603a6ed5d07c9f43597ccfe9043d15b66d3284f0de321f5cdf56329e6e03587878787604051611420949392919061373b565b60405180910390a361145160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050505050565b600061146581611b20565b6001600160a01b03821661148c5760405163d92e233d60e01b815260040160405180910390fd5b6000546001600160a01b0316156114cf576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114f97f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611b2a565b5050600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156115805750825b905060008267ffffffffffffffff16600114801561159d5750303b155b9050811580156115ab575080155b156115e2576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156116435784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038816158061166057506001600160a01b038716155b1561167e5760405163d92e233d60e01b815260040160405180910390fd5b6116866127c9565b61168e6127d1565b6116966127c9565b61169e6127e1565b6116a9600087611b2a565b506116d47f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611b2a565b506116ff7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a89611b2a565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a1617905561175d7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb89611b2a565b50600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03891617905583156117f25784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb61182681611b20565b61182e611c17565b611836611c75565b6001600160a01b03851661185d5760405163d92e233d60e01b815260040160405180910390fd5b6000856001600160a01b03163460405160006040518083038185875af1925050503d80600081146118aa576040519150601f19603f3d011682016040523d82523d6000602084013e6118af565b606091505b50509050806118ea576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063c9028a369061192f908690600401613728565b600060405180830381600087803b15801561194957600080fd5b505af115801561195d573d6000803e3d6000fd5b5050505060006001600160a01b0316866001600160a01b03167fde7603a6ed5d07c9f43597ccfe9043d15b66d3284f0de321f5cdf56329e6e035348888886040516119ab949392919061373b565b60405180910390a3506119dd60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6119ec611c17565b6119f4611c75565b84600003611a2e576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038616611a555760405163d92e233d60e01b815260040160405180910390fd5b611a60338587611cf6565b856001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c8787878787604051611aab959493929190613685565b60405180910390a3610f5460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154611b1681611b20565b61094b838361200c565b610c3a81336127f1565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611c0d576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611bc33390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610776565b6000915050610776565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611c73576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611cf0576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6003546001600160a01b0390811690831603611e5a57611d216001600160a01b03831684308461287e565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611d8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611db1919061364f565b611de7576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611e4657600080fd5b505af1158015611451573d6000803e3d6000fd5b6000546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301529091169063d936547e90602401602060405180830381865afa158015611ebd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee1919061364f565b611f17576040517fac2175f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610b17906001600160a01b03848116918691168461287e565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6060611f6583836128b7565b600080856001600160a01b0316348686604051611f83929190613772565b60006040518083038185875af1925050503d8060008114611fc0576040519150601f19603f3d011682016040523d82523d6000602084013e611fc5565b606091505b509150915081612001576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611c0d576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610776565b6060836001600160a01b031663676cc054348786866040518563ffffffff1660e01b815260040161210393929190613782565b60006040518083038185885af1158015612121573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261214a91908101906137ad565b95945050505050565b61215b61293c565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061227c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166122707f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611c73576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610c5881611b20565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612318575060408051601f3d908101601f191682019092526123159181019061366c565b60015b61235e576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146123ba576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401612355565b610b178383612997565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015612430573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612005919061364f565b6003546001600160a01b03908116908316036125a3576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af11580156124d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124fa919061364f565b612530576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561258f57600080fd5b505af1158015610f54573d6000803e3d6000fd5b6000546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301529091169063d936547e90602401602060405180830381865afa158015612606573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061262a919061364f565b612660576040517fac2175f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610c58906001600160a01b03848116911683612755565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611c73576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6126e4611c17565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258336121c5565b6040516001600160a01b03838116602483015260448201839052610b1791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506129ed565b611c73612a69565b6127d9612a69565b611c73612ad0565b6127e9612a69565b611c73612ad8565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610c58576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401612355565b6040516001600160a01b03848116602483015283811660448301526064820183905261094b9186918216906323b872dd90608401612782565b60048110610c585781357f98933fac000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000821601610b17576040517fed69977500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611c73576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6129a082612b29565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156129e557610b178282612bd1565b610c58612c3e565b6000612a026001600160a01b03841683612c76565b90508051600014158015612a27575080806020019051810190612a25919061364f565b155b15610b17576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401612355565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611c73576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f33612a69565b612ae0612a69565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b806001600160a01b03163b600003612b78576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401612355565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051612bee919061381b565b600060405180830381855af49150503d8060008114612c29576040519150601f19603f3d011682016040523d82523d6000602084013e612c2e565b606091505b509150915061214a858383612c84565b3415611c73576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061200583836000612cf9565b606082612c9957612c9482612daf565b612005565b8151158015612cb057506001600160a01b0384163b155b15612cf2576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401612355565b5080612005565b606081471015612d37576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401612355565b600080856001600160a01b03168486604051612d53919061381b565b60006040518083038185875af1925050503d8060008114612d90576040519150601f19603f3d011682016040523d82523d6000602084013e612d95565b606091505b5091509150612da5868383612c84565b9695505050505050565b805115612dbf5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215612e0357600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461200557600080fd5b80356001600160a01b0381168114612e4a57600080fd5b919050565b600060208284031215612e6157600080fd5b61200582612e33565b600060a08284031215612e7c57600080fd5b50919050565b60008060008060808587031215612e9857600080fd5b612ea185612e33565b935060208501359250612eb660408601612e33565b9150606085013567ffffffffffffffff811115612ed257600080fd5b612ede87828801612e6a565b91505092959194509250565b60008083601f840112612efc57600080fd5b50813567ffffffffffffffff811115612f1457600080fd5b602083019150836020828501011115612f2c57600080fd5b9250929050565b60008060008060608587031215612f4957600080fd5b612f5285612e33565b9350602085013567ffffffffffffffff811115612f6e57600080fd5b612f7a87828801612eea565b909450925050604085013567ffffffffffffffff811115612ed257600080fd5b600080600060408486031215612faf57600080fd5b612fb884612e33565b9250602084013567ffffffffffffffff811115612fd457600080fd5b612fe086828701612eea565b9497909650939450505050565b60005b83811015613008578181015183820152602001612ff0565b50506000910152565b60008151808452613029816020860160208601612fed565b601f01601f19169290920160200192915050565b6020815260006120056020830184613011565b60006020828403121561306257600080fd5b5035919050565b6000806040838503121561307c57600080fd5b8235915061308c60208401612e33565b90509250929050565b60008060008084860360608112156130ac57600080fd5b60208112156130ba57600080fd5b508493506130ca60208601612e33565b9250604085013567ffffffffffffffff8111156130e657600080fd5b6130f287828801612eea565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613156576131566130fe565b604052919050565b600067ffffffffffffffff821115613178576131786130fe565b50601f01601f191660200190565b6000806040838503121561319957600080fd5b6131a283612e33565b9150602083013567ffffffffffffffff8111156131be57600080fd5b8301601f810185136131cf57600080fd5b80356131e26131dd8261315e565b61312d565b8181528660208385010111156131f757600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008060008060006080868803121561322f57600080fd5b61323886612e33565b945061324660208701612e33565b935060408601359250606086013567ffffffffffffffff81111561326957600080fd5b61327588828901612eea565b969995985093965092949392505050565b6000806040838503121561329957600080fd5b6132a283612e33565b9150602083013567ffffffffffffffff8111156132be57600080fd5b6132ca85828601612e6a565b9150509250929050565b600060808284031215612e7c57600080fd5b60008060008060008060a087890312156132ff57600080fd5b61330887612e33565b955061331660208801612e33565b945060408701359350606087013567ffffffffffffffff81111561333957600080fd5b61334589828a01612eea565b909450925050608087013567ffffffffffffffff81111561336557600080fd5b61337189828a016132d4565b9150509295509295509295565b60008060006060848603121561339357600080fd5b61339c84612e33565b92506133aa60208501612e33565b91506133b860408501612e33565b90509250925092565b600080600080606085870312156133d757600080fd5b6133e085612e33565b9350602085013567ffffffffffffffff8111156133fc57600080fd5b61340887828801612eea565b909450925050604085013567ffffffffffffffff81111561342857600080fd5b612ede878288016132d4565b60008060008060008060a0878903121561344d57600080fd5b61345687612e33565b95506020870135945061346b60408801612e33565b9350606087013567ffffffffffffffff81111561348757600080fd5b61349389828a01612eea565b909450925050608087013567ffffffffffffffff8111156134b357600080fd5b61337189828a01612e6a565b8015158114610c3a57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261350257600080fd5b830160208101925035905067ffffffffffffffff81111561352257600080fd5b803603821315612f2c57600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6001600160a01b0361356d82612e33565b16825260006020820135613580816134bf565b151560208401526001600160a01b0361359b60408401612e33565b1660408401526135ae60608301836134cd565b60a060608601526135c360a086018284613531565b6080948501359590940194909452509092915050565b8381526001600160a01b0383166020820152608060408201526000608082015260a06060820152600061214a60a083018461355c565b604081526000613623604083018587613531565b8281036020840152612da5818561355c565b83815260406020820152600061214a604083018486613531565b60006020828403121561366157600080fd5b8151612005816134bf565b60006020828403121561367e57600080fd5b5051919050565b8581526001600160a01b03851660208201526080604082015260006136ae608083018587613531565b82810360608401526136c0818561355c565b98975050505050505050565b6001600160a01b036136dd82612e33565b1682526001600160a01b036136f460208301612e33565b16602083015260408181013590830152600061371360608301836134cd565b6080606086015261214a608086018284613531565b60208152600061200560208301846136cc565b848152606060208201526000613755606083018587613531565b828103604084015261376781856136cc565b979650505050505050565b8183823760009101908152919050565b6001600160a01b0361379385612e33565b16815260406020820152600061214a604083018486613531565b6000602082840312156137bf57600080fd5b815167ffffffffffffffff8111156137d657600080fd5b8201601f810184136137e757600080fd5b80516137f56131dd8261315e565b81815285602083850101111561380a57600080fd5b61214a826020830160208601612fed565b6000825161382d818460208701612fed565b919091019291505056fea264697066735822122022d40b9e785f46c5c32d3f24d5e9bbe74f9a765997a8161aeac2bbb027d5d21b64736f6c634300081a0033", } // 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 9a71321b6..bcce72171 100644 --- a/v2/pkg/gatewayevmzevm.t.sol/gatewayevmzevmtest.go +++ b/v2/pkg/gatewayevmzevm.t.sol/gatewayevmzevmtest.go @@ -73,7 +73,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\":\"Called\",\"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\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Called\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"callOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structCallOptions\",\"components\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"isArbitraryCall\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposited\",\"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\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\":\"ReceivedOnCall\",\"inputs\":[],\"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\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedGatewayTSSAddress\",\"inputs\":[{\"name\":\"oldTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawn\",\"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\"},{\"name\":\"callOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structCallOptions\",\"components\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"isArbitraryCall\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\":\"CallerIsNotProtocol\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ConnectorInitialized\",\"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\":\"InsufficientGasLimit\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZetaAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"MessageSizeExceeded\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotAllowedToCallOnCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotAllowedToCallOnRevert\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotWhitelistedInCustody\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrProtocol\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PayloadSizeExceeded\",\"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: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061e9858061003c6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806385226c81116100b2578063b5508aa911610081578063d7a525fc11610066578063d7a525fc146101ec578063e20c9f71146101f4578063fa7626d4146101fc57600080fd5b8063b5508aa9146101cc578063ba414fa6146101d457600080fd5b806385226c8114610192578063916a17c6146101a75780639683c695146101bc578063b0464fdc146101c457600080fd5b80633f7286f4116100ee5780633f7286f414610165578063524744131461016d57806366d9a9a0146101755780636ff15ccc1461018a57600080fd5b80630a9254e4146101205780631ed7831c1461012a5780632ade3880146101485780633e5e3c231461015d575b600080fd5b610128610209565b005b6101326112bd565b60405161013f9190617b89565b60405180910390f35b61015061131f565b60405161013f9190617c25565b610132611461565b6101326114c1565b610128611521565b61017d611da5565b60405161013f9190617d8b565b610128611f27565b61019a612770565b60405161013f9190617e29565b6101af612840565b60405161013f9190617ea0565b61012861293b565b6101af612f46565b61019a613041565b6101dc613111565b604051901515815260200161013f565b6101286131e5565b61013261391e565b601f546101dc9060ff1681565b602580547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602680548216611234179055602780548216615678179055602d805490911661432117905560405161026790617a8f565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f0801580156102ec573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405161033190617a8f565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f0801580156103b5573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600e81527f4761746577617945564d2e736f6c0000000000000000000000000000000000006020820152602754602554925190851660248201526044810193909352921660648201526000916104a7916084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc0c53b8b0000000000000000000000000000000000000000000000000000000017905261397e565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0384811682029290921792839055604080518082018252601081527f4552433230437573746f64792e736f6c000000000000000000000000000000006020820152602754602554925193909504841660248401529383166044830152909116606482015291925061054a9160840161044a565b602080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03838116919091178255604080518082018252601a81527f5a657461436f6e6e6563746f724e6f6e4e61746976652e736f6c00000000000093810193909352601f546023546027546025549351610100909304851660248401529084166044830152831660648201529116608482015291925061064e9160a40160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff8c8765e0000000000000000000000000000000000000000000000000000000017905261397e565b602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03838116919091179091556027546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561070057600080fd5b505af1158015610714573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b15801561078a57600080fd5b505af115801561079e573d6000803e3d6000fd5b5050601f546020546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261010090920416925063ae7a3a6f9150602401600060405180830381600087803b15801561080957600080fd5b505af115801561081d573d6000803e3d6000fd5b5050601f546021546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526101009092041692506310188aef9150602401600060405180830381600087803b15801561088857600080fd5b505af115801561089c573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156108fe57600080fd5b505af1158015610912573d6000803e3d6000fd5b50506022546025546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f42406024820152911692506340c10f199150604401600060405180830381600087803b15801561098157600080fd5b505af1158015610995573d6000803e3d6000fd5b50506022546020546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12060248201529116925063a9059cbb91506044016020604051808303816000875af1158015610a09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a2d9190617f37565b50604051610a3a90617a9c565b604051809103906000f080158015610a56573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316178155604080518082018252600f81527f476174657761795a45564d2e736f6c00000000000000000000000000000000006020820152602354602d5492519085169381019390935292166044820152610b3c919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc9550000000000000000000000000000000000000000000000000000000017905261397e565b602880546001600160a01b03929092167fffffffffffffffffffffffff00000000000000000000000000000000000000009283168117909155602980549092168117909155604051610b8d90617aa9565b6001600160a01b039091168152602001604051809103906000f080158015610bb9573d6000803e3d6000fd5b50602a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040517f06447d5600000000000000000000000000000000000000000000000000000000815273735b14bb79463307aacbed86daf3322b1e6226ab6004820181905290737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b158015610c6e57600080fd5b505af1158015610c82573d6000803e3d6000fd5b505050506000806000604051610c9790617ab6565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610cd3573d6000803e3d6000fd5b50602b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602954604051601293600193600093849391921690610d2990617ac3565b610d3896959493929190617f59565b604051809103906000f080158015610d54573d6000803e3d6000fd5b50602c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602b546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b158015610deb57600080fd5b505af1158015610dff573d6000803e3d6000fd5b5050602b546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b158015610e6957600080fd5b505af1158015610e7d573d6000803e3d6000fd5b5050602c54602d546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f42406024820152911692506347e7ef2491506044016020604051808303816000875af1158015610ef1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f159190617f37565b50602c54602a546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424060248201529116906347e7ef24906044016020604051808303816000875af1158015610f86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610faa9190617f37565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561100957600080fd5b505af115801561101d573d6000803e3d6000fd5b5050602d546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561109357600080fd5b505af11580156110a7573d6000803e3d6000fd5b5050602c546029546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424060248201529116925063095ea7b391506044016020604051808303816000875af115801561111b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113f9190617f37565b506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b1580156111c057600080fd5b505af11580156111d4573d6000803e3d6000fd5b50506040805160a08101825261032180825260016020808401918252838501928352845190810190945260008085526060840185905260808401528251602e80549251151574010000000000000000000000000000000000000000027fffffffffffffffffffffff0000000000000000000000000000000000000000009093166001600160a01b03928316179290921782559151602f8054919093167fffffffffffffffffffffffff0000000000000000000000000000000000000000919091161790915590935091506030906112ab9082618119565b50608082015181600301559050505050565b6060601680548060200260200160405190810160405280929190818152602001828054801561131557602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116112f7575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561145857600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156114415783829060005260206000200180546113b49061807d565b80601f01602080910402602001604051908101604052809291908181526020018280546113e09061807d565b801561142d5780601f106114025761010080835404028352916020019161142d565b820191906000526020600020905b81548152906001019060200180831161141057829003601f168201915b505050505081526020019060010190611395565b505050508152505081526020019060010190611343565b50505050905090565b60606018805480602002602001604051908101604052809291908181526020018280548015611315576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116112f7575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015611315576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116112f7575050505050905090565b604080518082018252600681527f48656c6c6f2100000000000000000000000000000000000000000000000000006020820152602c54602a805493517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03948516600482015292939092600192670de0b6b3a7640000926000929116906370a0823190602401602060405180830381865afa1580156115cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f191906181d8565b6040519091506000907fe04d4f97000000000000000000000000000000000000000000000000000000009061162e908890889088906024016181f1565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009095169490941790935260245490519193506000926116c7926001600160a01b03909216910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602c546116fe926207a120916001600160a01b0316908690600190602e9060240161830a565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f048ae42c0000000000000000000000000000000000000000000000000000000017905260295490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba3916117bb916001600160a01b0391909116906000908690600401618373565b600060405180830381600087803b1580156117d557600080fd5b505af11580156117e9573d6000803e3d6000fd5b5050602d546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561185f57600080fd5b505af1158015611873573d6000803e3d6000fd5b5050602a5460245460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039091169250630abd8905915060340160408051601f1981840301815290829052602c547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261190d926207a120916001600160a01b0316908d908d908d9060040161839b565b600060405180830381600087803b15801561192757600080fd5b505af115801561193b573d6000803e3d6000fd5b5050601f546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b0316600482015260248101879052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b1580156119bc57600080fd5b505af11580156119d0573d6000803e3d6000fd5b5050602480546040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190529281018390526044810183905260648101929092526001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015611a6357600080fd5b505af1158015611a77573d6000803e3d6000fd5b505050507f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa601f60019054906101000a90046001600160a01b031685898989604051611ac79594939291906183f0565b60405180910390a1601f546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611b6157600080fd5b505af1158015611b75573d6000803e3d6000fd5b50506024546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150611bba9087908690618431565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611c3457600080fd5b505af1158015611c48573d6000803e3d6000fd5b5050601f546024546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b0361010090930483169450631cff79cd93508892611ca1921690879060040161844a565b60006040518083038185885af1158015611cbf573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052611ce89190810190618525565b50602c54602a546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611d53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d7791906181d8565b9050611d9b816001611d8c6207a12088618589565b611d969190618589565b61399d565b5050505050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156114585783829060005260206000209060020201604051806040016040529081600082018054611dfc9061807d565b80601f0160208091040260200160405190810160405280929190818152602001828054611e289061807d565b8015611e755780601f10611e4a57610100808354040283529160200191611e75565b820191906000526020600020905b815481529060010190602001808311611e5857829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611f0f57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611ebc5790505b50505050508152505081526020019060010190611dc9565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a7640000906000907fe04d4f970000000000000000000000000000000000000000000000000000000090611fa3908790879087906024016181f1565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000949094169390931790925260295491517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482018190526001600160a01b039093166084820152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561209557600080fd5b505af11580156120a9573d6000803e3d6000fd5b5050602d5460245460405160609190911b6bffffffffffffffffffffffff19166020820152600093506001600160a01b0390911691507f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c9060340160408051601f19818403018152828252602c547f4d8943bb000000000000000000000000000000000000000000000000000000008452915190926001600160a01b03909216916207a1209188918491634d8943bb916004808201926020929091908290030181865afa15801561217e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121a291906181d8565b6040805180820182526001808252602082015290516121ca9695949392918c91602e9061859c565b60405180910390a3602d546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561224457600080fd5b505af1158015612258573d6000803e3d6000fd5b50506029546024546040805160609290921b6bffffffffffffffffffffffff1916602083015280518083036014018152602c5460748401835260016034850181815260549095015291517f7b15118b0000000000000000000000000000000000000000000000000000000081526001600160a01b039485169650637b15118b95506122f69491936207a1209392909216918991602e9060040161860c565b600060405180830381600087803b15801561231057600080fd5b505af1158015612324573d6000803e3d6000fd5b5050602c54602d546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015612390573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b491906181d8565b90506123c781611d96846207a120618589565b601f546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b0316600482015260248101859052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561244457600080fd5b505af1158015612458573d6000803e3d6000fd5b5050602480546040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190529281018390526044810183905260648101929092526001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156124eb57600080fd5b505af11580156124ff573d6000803e3d6000fd5b505050507f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa601f60019054906101000a90046001600160a01b03168589898960405161254f9594939291906183f0565b60405180910390a1601f546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156125e957600080fd5b505af11580156125fd573d6000803e3d6000fd5b50506024546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f91506126429087908790618431565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156126bc57600080fd5b505af11580156126d0573d6000803e3d6000fd5b5050601f546024546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b0361010090930483169450631cff79cd93508892612729921690889060040161844a565b60006040518083038185885af1158015612747573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052611d9b9190810190618525565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156114585783829060005260206000200180546127b39061807d565b80601f01602080910402602001604051908101604052809291908181526020018280546127df9061807d565b801561282c5780601f106128015761010080835404028352916020019161282c565b820191906000526020600020905b81548152906001019060200180831161280f57829003601f168201915b505050505081526020019060010190612794565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156114585760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561292357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116128d05790505b50505050508152505081526020019060010190612864565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a7640000906000907fe04d4f9700000000000000000000000000000000000000000000000000000000906129b7908790879087906024016181f1565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009490941693909317909252602d5491517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612a8a57600080fd5b505af1158015612a9e573d6000803e3d6000fd5b50506029546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015612b3057600080fd5b505af1158015612b44573d6000803e3d6000fd5b5050602c54602d5460245460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039283169450911691507f306ee13f48319a123b222c69908e44dcf91abffc20cacc502e3cf5a4ff23e0e49060340160408051601f198184030181528282018252600180845260208401529051612bce928791602e9061866d565b60405180910390a36029546024546040805160609290921b6bffffffffffffffffffffffff19166020830152805180830360140181526034830191829052602c547f1cb5ea75000000000000000000000000000000000000000000000000000000009092526001600160a01b0393841693631cb5ea7593612c5e9391909116908690600190602e906038016186b9565b600060405180830381600087803b158015612c7857600080fd5b505af1158015612c8c573d6000803e3d6000fd5b5050601f546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b0316600482015260248101859052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015612d0d57600080fd5b505af1158015612d21573d6000803e3d6000fd5b5050601f546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015612db757600080fd5b505af1158015612dcb573d6000803e3d6000fd5b50506024546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150612e109085908590618431565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612e8a57600080fd5b505af1158015612e9e573d6000803e3d6000fd5b5050601f546024546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b0361010090930483169450631cff79cd93508692612ef7921690869060040161844a565b60006040518083038185885af1158015612f15573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052612f3e9190810190618525565b505050505050565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156114585760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561302957602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411612fd65790505b50505050508152505081526020019060010190612f6a565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156114585783829060005260206000200180546130849061807d565b80601f01602080910402602001604051908101604052809291908181526020018280546130b09061807d565b80156130fd5780601f106130d2576101008083540402835291602001916130fd565b820191906000526020600020905b8154815290600101906020018083116130e057829003601f168201915b505050505081526020019060010190613065565b60085460009060ff1615613129575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa1580156131ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131de91906181d8565b1415905090565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a7640000906000907fe04d4f970000000000000000000000000000000000000000000000000000000090613261908790879087906024016181f1565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009095169490941790935260245490519193506000926132fa926001600160a01b03909216910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602c5461332e926001600160a01b03909116908590600190602e90602401618713565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1cb5ea750000000000000000000000000000000000000000000000000000000017905260295490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba3916133eb916001600160a01b0391909116906000908690600401618373565b600060405180830381600087803b15801561340557600080fd5b505af1158015613419573d6000803e3d6000fd5b5050602d546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561348f57600080fd5b505af11580156134a3573d6000803e3d6000fd5b5050602a5460245460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039091169250637a34d8bb915060340160408051601f1981840301815290829052602c547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261353a926001600160a01b03909116908b908b908b90600401618764565b600060405180830381600087803b15801561355457600080fd5b505af1158015613568573d6000803e3d6000fd5b5050601f546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b0316600482015260248101869052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b1580156135e957600080fd5b505af11580156135fd573d6000803e3d6000fd5b5050602480546040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190529281018390526044810183905260648101929092526001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561369057600080fd5b505af11580156136a4573d6000803e3d6000fd5b505050507f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa601f60019054906101000a90046001600160a01b0316848888886040516136f49594939291906183f0565b60405180910390a1601f546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561378e57600080fd5b505af11580156137a2573d6000803e3d6000fd5b50506024546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f91506137e79086908690618431565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561386157600080fd5b505af1158015613875573d6000803e3d6000fd5b5050601f546024546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b0361010090930483169450631cff79cd935087926138ce921690879060040161844a565b60006040518083038185885af11580156138ec573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526139159190810190618525565b50505050505050565b60606015805480602002602001604051908101604052809291908181526020018280548015611315576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116112f7575050505050905090565b6000613988617ad0565b613993848483613a1c565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b158015613a0857600080fd5b505afa158015612f3e573d6000803e3d6000fd5b600080613a298584613a97565b9050613a8c6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001613a7792919061844a565b60405160208183030381529060405285613aa3565b9150505b9392505050565b6000613a908383613ad1565b60c08101515160009015613ac757613ac084848460c00151613aec565b9050613a90565b613ac08484613c92565b6000613add8383613d7d565b613a9083836020015184613aa3565b600080613af7613d8d565b90506000613b058683613e60565b90506000613b1c8260600151836020015185614306565b90506000613b2c83838989614518565b90506000613b3982615395565b602081015181519192509060030b15613bac57898260400151604051602001613b639291906187b2565b60408051601f19818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252613ba391600401618833565b60405180910390fd5b6000613bef6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001615564565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90613c42908490600401618833565b602060405180830381865afa158015613c5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c839190618846565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590613ce7908790600401618833565b600060405180830381865afa158015613d04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d2c9190810190618525565b90506000613d5a8285604051602001613d4692919061886f565b604051602081830303815290604052615764565b90506001600160a01b038116613993578484604051602001613b6392919061889e565b613d8982826000615777565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90613e14908490600401618949565b600060405180830381865afa158015613e31573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613e599190810190618990565b9250505090565b613e926040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050613edd6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b613ee68561587a565b60208201526000613ef686615c5f565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015613f38573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f609190810190618990565b86838560200151604051602001613f7a94939291906189d9565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190613fd2908590600401618833565b600060405180830381865afa158015613fef573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526140179190810190618990565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f69061405f908490600401618add565b602060405180830381865afa15801561407c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140a09190617f37565b6140b55781604051602001613b639190618b2f565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906140fa908490600401618bc1565b600060405180830381865afa158015614117573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261413f9190810190618990565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690614186908490600401618c13565b602060405180830381865afa1580156141a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141c79190617f37565b1561425c576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890614211908490600401618c13565b600060405180830381865afa15801561422e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526142569190810190618990565b60408501525b846001600160a01b03166349c4fac88286600001516040516020016142819190618c65565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016142ad929190618cd1565b600060405180830381865afa1580156142ca573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526142f29190810190618990565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816143225790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061438257614382618cf6565b60200260200101819052506040518060400160405280600381526020017f2d726c0000000000000000000000000000000000000000000000000000000000815250816001815181106143d6576143d6618cf6565b6020026020010181905250846040516020016143f29190618d25565b6040516020818303038152906040528160028151811061441457614414618cf6565b6020026020010181905250826040516020016144309190618d91565b6040516020818303038152906040528160038151811061445257614452618cf6565b6020026020010181905250600061446882615395565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506144f99060408051808201825260008082526020918201528151808301909252845182528085019082015290615ee2565b61450e5785604051602001613b639190618dd2565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015614568565b511590565b6146dc57826020015115614624576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401613ba3565b8260c00151156146dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401613ba3565b6040805160ff8082526120008201909252600091816020015b60608152602001906001900390816146f557905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061475090618e63565b935060ff168151811061476557614765618cf6565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016147b69190618e82565b6040516020818303038152906040528282806147d190618e63565b935060ff16815181106147e6576147e6618cf6565b60200260200101819052506040518060400160405280600681526020017f6465706c6f79000000000000000000000000000000000000000000000000000081525082828061483390618e63565b935060ff168151811061484857614848618cf6565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d6500000000000000000000000000000000000081525082828061489590618e63565b935060ff16815181106148aa576148aa618cf6565b602002602001018190525087602001518282806148c690618e63565b935060ff16815181106148db576148db618cf6565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163745061746800000000000000000000000000000000000081525082828061492890618e63565b935060ff168151811061493d5761493d618cf6565b60209081029190910101528751828261495581618e63565b935060ff168151811061496a5761496a618cf6565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806149b790618e63565b935060ff16815181106149cc576149cc618cf6565b60200260200101819052506149e046615f43565b82826149eb81618e63565b935060ff1681518110614a0057614a00618cf6565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280614a4d90618e63565b935060ff1681518110614a6257614a62618cf6565b602002602001018190525086828280614a7a90618e63565b935060ff1681518110614a8f57614a8f618cf6565b6020908102919091010152855115614bb65760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f6465000000000000000000000060208201528282614ae081618e63565b935060ff1681518110614af557614af5618cf6565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90614b45908990600401618833565b600060405180830381865afa158015614b62573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614b8a9190810190618990565b8282614b9581618e63565b935060ff1681518110614baa57614baa618cf6565b60200260200101819052505b846020015115614c865760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282614bff81618e63565b935060ff1681518110614c1457614c14618cf6565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280614c6190618e63565b935060ff1681518110614c7657614c76618cf6565b6020026020010181905250614e4d565b614cbe6145638660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b614d515760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614d0181618e63565b935060ff1681518110614d1657614d16618cf6565b60200260200101819052508460a00151604051602001614d369190618d25565b604051602081830303815290604052828280614c6190618e63565b8460c00151158015614d94575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152614d9290511590565b155b15614e4d5760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614dd881618e63565b935060ff1681518110614ded57614ded618cf6565b6020026020010181905250614e0188615fe3565b604051602001614e119190618d25565b604051602081830303815290604052828280614e2c90618e63565b935060ff1681518110614e4157614e41618cf6565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152614e8190511590565b614f165760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282614ec481618e63565b935060ff1681518110614ed957614ed9618cf6565b60200260200101819052508460400151828280614ef590618e63565b935060ff1681518110614f0a57614f0a618cf6565b60200260200101819052505b6060850151156150375760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282614f5f81618e63565b935060ff1681518110614f7457614f74618cf6565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015614fe3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261500b9190810190618990565b828261501681618e63565b935060ff168151811061502b5761502b618cf6565b60200260200101819052505b60e085015151156150de5760408051808201909152600a81527f2d2d6761734c696d6974000000000000000000000000000000000000000000006020820152828261508181618e63565b935060ff168151811061509657615096618cf6565b60200260200101819052506150b28560e0015160000151615f43565b82826150bd81618e63565b935060ff16815181106150d2576150d2618cf6565b60200260200101819052505b60e085015160200151156151885760408051808201909152600a81527f2d2d6761735072696365000000000000000000000000000000000000000000006020820152828261512b81618e63565b935060ff168151811061514057615140618cf6565b602002602001018190525061515c8560e0015160200151615f43565b828261516781618e63565b935060ff168151811061517c5761517c618cf6565b60200260200101819052505b60e085015160400151156152325760408051808201909152600e81527f2d2d6d6178466565506572476173000000000000000000000000000000000000602082015282826151d581618e63565b935060ff16815181106151ea576151ea618cf6565b60200260200101819052506152068560e0015160400151615f43565b828261521181618e63565b935060ff168151811061522657615226618cf6565b60200260200101819052505b60e085015160600151156152dc5760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828261527f81618e63565b935060ff168151811061529457615294618cf6565b60200260200101819052506152b08560e0015160600151615f43565b82826152bb81618e63565b935060ff16815181106152d0576152d0618cf6565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156152fa576152fa61804e565b60405190808252806020026020018201604052801561532d57816020015b60608152602001906001900390816153185790505b50905060005b8260ff168160ff16101561538657838160ff168151811061535657615356618cf6565b6020026020010151828260ff168151811061537357615373618cf6565b6020908102919091010152600101615333565b5093505050505b949350505050565b6153bc6040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c9161544291869101618eed565b600060405180830381865afa15801561545f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526154879190810190618990565b905060006154958683616ad2565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b81526004016154c59190617e29565b6000604051808303816000875af11580156154e4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261550c9190810190618f34565b805190915060030b158015906155255750602081015151155b80156155345750604081015151155b1561450e578160008151811061554c5761554c618cf6565b6020026020010151604051602001613b639190618fea565b606060006155998560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506155d09082905b90616c27565b1561572d57600061564d82615647846156416156138a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90616c4e565b90616cb0565b604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506156b1908290616c27565b1561571b57604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615718905b8290616d35565b90505b61572481616d5b565b92505050613a90565b8215615746578484604051602001613b639291906191d6565b5050604080516020810190915260008152613a90565b509392505050565b6000808251602084016000f09392505050565b8160a001511561578657505050565b6000615793848484616dc4565b905060006157a082615395565b602081015181519192509060030b15801561583c5750604080518082018252600781527f53554343455353000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261583c906040805180820182526000808252602091820152815180830190925284518252808501908201526155ca565b1561584957505050505050565b60408201515115615869578160400151604051602001613b63919061927d565b80604051602001613b6391906192db565b606060006158af8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615914905b8290615ee2565b1561598357604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613a909061597e90839061735f565b616d5b565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526159e5905b82906173e9565b600103615ab257604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615a4b90615711565b50604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613a909061597e905b8390616d35565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615b119061590d565b15615c4857604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615b79908390617483565b905060008160018351615b8c9190618589565b81518110615b9c57615b9c618cf6565b60200260200101519050615c3f61597e615c126040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529061735f565b95945050505050565b82604051602001613b639190619346565b50919050565b60606000615c948360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615cf69061590d565b15615d0457613a9081616d5b565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615d63906159de565b600103615dcd57604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613a909061597e90615aab565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615e2c9061590d565b15615c4857604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615e94908390617483565b9050600181511115615ed0578060028251615eaf9190618589565b81518110615ebf57615ebf618cf6565b602002602001015192505050919050565b5082604051602001613b639190619346565b805182516000911115615ef757506000613997565b81518351602085015160009291615f0d91619424565b615f179190618589565b905082602001518103615f2e576001915050613997565b82516020840151819020912014905092915050565b60606000615f5083617528565b600101905060008167ffffffffffffffff811115615f7057615f7061804e565b6040519080825280601f01601f191660200182016040528015615f9a576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084615fa457509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e534544000000000000000000000000000000000000000000008184019081528551808701875283815284019290925284518086019095525184529083015260609161606f905b829061760a565b156160af57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261610e90616068565b1561614e57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d49540000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526161ad90616068565b156161ed57505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261624c90616068565b806162b15750604080518082018252601081527f47504c2d322e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526162b190616068565b156162f157505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261635090616068565b806163b55750604080518082018252601081527f47504c2d332e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163b590616068565b156163f557505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261645490616068565b806164b95750604080518082018252601181527f4c47504c2d322e312d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526164b990616068565b156164f957505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261655890616068565b806165bd5750604080518082018252601181527f4c47504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526165bd90616068565b156165fd57505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261665c90616068565b1561669c57505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526166fb90616068565b1561673b57505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261679a90616068565b156167da57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261683990616068565b1561687957505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e3000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526168d890616068565b1561691857505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261697790616068565b806169dc5750604080518082018252601181527f4147504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526169dc90616068565b15616a1c57505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e3100000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616a7b90616068565b15616abb57505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151613b639290602001619437565b60608060005b8451811015616b5d5781858281518110616af457616af4618cf6565b6020026020010151604051602001616b0d92919061886f565b604051602081830303815290604052915060018551616b2c9190618589565b8114616b555781604051602001616b4391906195a0565b60405160208183030381529060405291505b600101616ad8565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081616b765790505090508381600081518110616ba157616ba1618cf6565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110616bf557616bf5618cf6565b60200260200101819052508181600281518110616c1457616c14618cf6565b6020908102919091010152949350505050565b6020808301518351835192840151600093616c45929184919061761e565b14159392505050565b60408051808201909152600080825260208201526000616c80846000015185602001518560000151866020015161772f565b9050836020015181616c929190618589565b84518590616ca1908390618589565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015616cd5575081613997565b6020808301519084015160019114616cfc5750815160208481015190840151829020919020145b8015616d2d57825184518590616d13908390618589565b9052508251602085018051616d29908390619424565b9052505b509192915050565b6040805180820190915260008082526020820152616d5483838361784f565b5092915050565b60606000826000015167ffffffffffffffff811115616d7c57616d7c61804e565b6040519080825280601f01601f191660200182016040528015616da6576020820181803683370190505b5090506000602082019050616d5481856020015186600001516178fa565b60606000616dd0613d8d565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081616ded57905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616e4890618e63565b935060ff1681518110616e5d57616e5d618cf6565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001616eae91906195e1565b604051602081830303815290604052828280616ec990618e63565b935060ff1681518110616ede57616ede618cf6565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280616f2b90618e63565b935060ff1681518110616f4057616f40618cf6565b602002602001018190525082604051602001616f5c9190618d91565b604051602081830303815290604052828280616f7790618e63565b935060ff1681518110616f8c57616f8c618cf6565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280616fd990618e63565b935060ff1681518110616fee57616fee618cf6565b60200260200101819052506170038784617974565b828261700e81618e63565b935060ff168151811061702357617023618cf6565b6020908102919091010152855151156170cf5760408051808201909152600b81527f2d2d7265666572656e63650000000000000000000000000000000000000000006020820152828261707581618e63565b935060ff168151811061708a5761708a618cf6565b60200260200101819052506170a3866000015184617974565b82826170ae81618e63565b935060ff16815181106170c3576170c3618cf6565b60200260200101819052505b85608001511561713d5760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261711881618e63565b935060ff168151811061712d5761712d618cf6565b60200260200101819052506171a3565b84156171a35760408051808201909152601281527f2d2d726571756972655265666572656e636500000000000000000000000000006020820152828261718281618e63565b935060ff168151811061719757617197618cf6565b60200260200101819052505b6040860151511561723f5760408051808201909152600d81527f2d2d756e73616665416c6c6f7700000000000000000000000000000000000000602082015282826171ed81618e63565b935060ff168151811061720257617202618cf6565b6020026020010181905250856040015182828061721e90618e63565b935060ff168151811061723357617233618cf6565b60200260200101819052505b8560600151156172a95760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261728881618e63565b935060ff168151811061729d5761729d618cf6565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156172c7576172c761804e565b6040519080825280602002602001820160405280156172fa57816020015b60608152602001906001900390816172e55790505b50905060005b8260ff168160ff16101561735357838160ff168151811061732357617323618cf6565b6020026020010151828260ff168151811061734057617340618cf6565b6020908102919091010152600101617300565b50979650505050505050565b6040805180820190915260008082526020820152815183511015617384575081613997565b8151835160208501516000929161739a91619424565b6173a49190618589565b602084015190915060019082146173c5575082516020840151819020908220145b80156173e0578351855186906173dc908390618589565b9052505b50929392505050565b600080826000015161740d856000015186602001518660000151876020015161772f565b6174179190619424565b90505b8351602085015161742b9190619424565b8111616d54578161743b81619626565b92505082600001516174728560200151836174569190618589565b86516174629190618589565b838660000151876020015161772f565b61747c9190619424565b905061741a565b6060600061749184846173e9565b61749c906001619424565b67ffffffffffffffff8111156174b4576174b461804e565b6040519080825280602002602001820160405280156174e757816020015b60608152602001906001900390816174d25790505b50905060005b815181101561575c5761750361597e8686616d35565b82828151811061751557617515618cf6565b60209081029190910101526001016174ed565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310617571577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831061759d576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106175bb57662386f26fc10000830492506010015b6305f5e10083106175d3576305f5e100830492506008015b61271083106175e757612710830492506004015b606483106175f9576064830492506002015b600a83106139975760010192915050565b600061761683836179b4565b159392505050565b60008085841161772557602084116176d15760008415617669576001617645866020618589565b617650906008619640565b61765b90600261973e565b6176659190618589565b1990505b83518116856176788989619424565b6176829190618589565b805190935082165b8181146176bc578784116176a4578794505050505061538d565b836176ae8161974a565b94505082845116905061768a565b6176c68785619424565b94505050505061538d565b8383206176de8588618589565b6176e89087619424565b91505b85821061772357848220808203617710576177068684619424565b935050505061538d565b61771b600184618589565b9250506176eb565b505b5092949350505050565b6000838186851161783a57602085116177e9576000851561777b576001617757876020618589565b617762906008619640565b61776d90600261973e565b6177779190618589565b1990505b8451811660008761778c8b8b619424565b6177969190618589565b855190915083165b8281146177db578186106177c3576177b68b8b619424565b965050505050505061538d565b856177cd81619626565b96505083865116905061779e565b85965050505050505061538d565b508383206000905b6177fb8689618589565b821161783857858320808203617817578394505050505061538d565b617822600185619424565b935050818061783090619626565b9250506177f1565b505b6178448787619424565b979650505050505050565b60408051808201909152600080825260208201526000617881856000015186602001518660000151876020015161772f565b60208087018051918601919091525190915061789d9082618589565b8352845160208601516178b09190619424565b81036178bf57600085526178f1565b835183516178cd9190619424565b855186906178dc908390618589565b90525083516178eb9082619424565b60208601525b50909392505050565b602081106179325781518352617911602084619424565b925061791e602083619424565b915061792b602082618589565b90506178fa565b6000198115617961576001617948836020618589565b6179549061010061973e565b61795e9190618589565b90505b9151835183169219169190911790915250565b606060006179828484613e60565b805160208083015160405193945061799c93909101619761565b60405160208183030381529060405291505092915050565b81518151600091908111156179c7575081515b6020808501519084015160005b83811015617a805782518251808214617a50576000196020871015617a2f57600184617a01896020618589565b617a0b9190619424565b617a16906008619640565b617a2190600261973e565b617a2b9190618589565b1990505b8181168382168181039114617a4d5797506139979650505050505050565b50505b617a5b602086619424565b9450617a68602085619424565b93505050602081617a799190619424565b90506179d4565b508451865161450e91906197b9565b610c9f806197da83390190565b610efa8061a47983390190565b610a2c8061b37383390190565b610b3f8061bd9f83390190565b6120728061c8de83390190565b6040518060e00160405280606081526020016060815260200160608152602001600015158152602001600015158152602001600015158152602001617b13617b18565b905290565b60405180610100016040528060001515815260200160001515815260200160608152602001600080191681526020016060815260200160608152602001600015158152602001617b136040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b81811015617bca5783516001600160a01b0316835260209384019390920191600101617ba3565b509095945050505050565b60005b83811015617bf0578181015183820152602001617bd8565b50506000910152565b60008151808452617c11816020860160208601617bd5565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617d21577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015617d07577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352617cf1848651617bf9565b6020958601959094509290920191600101617cb7565b509197505050602094850194929092019150600101617c4d565b50929695505050505050565b600081518084526020840193506020830160005b82811015617d815781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101617d41565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617d21577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752617df76040880182617bf9565b9050602082015191508681036020880152617e128183617d2d565b965050506020938401939190910190600101617db3565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617d21577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452617e8b858351617bf9565b94506020938401939190910190600101617e51565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617d21577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152617f216040870182617d2d565b9550506020938401939190910190600101617ec8565b600060208284031215617f4957600080fd5b81518015158114613a9057600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff8816604083015286606083015260038610618013577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a083015261803460c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600181811c9082168061809157607f821691505b602082108103615c59577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b601f82111561811457806000526020600020601f840160051c810160208510156180f15750805b601f840160051c820191505b8181101561811157600081556001016180fd565b50505b505050565b815167ffffffffffffffff8111156181335761813361804e565b61814781618141845461807d565b846180ca565b6020601f82116001811461817b57600083156181635750848201515b600019600385901b1c1916600184901b178455618111565b600084815260208120601f198516915b828110156181ab578785015182556020948501946001909201910161818b565b50848210156181c95786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6000602082840312156181ea57600080fd5b5051919050565b6060815260006182046060830186617bf9565b602083019490945250901515604090910152919050565b600081546001600160a01b038116845260ff8160a01c1615156020850152506001600160a01b0360018301541660408401526002820160a06060850152600081546182658161807d565b8060a0880152600182166000811461828457600181146182be576182f2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831660c089015260c082151560051b89010193506182f2565b84600052602060002060005b838110156182e95781548a820160c001526001909101906020016182ca565b890160c0019450505b50505060038401546080860152809250505092915050565b60c08152600061831d60c0830189617bf9565b62ffffff881660208401526001600160a01b038716604084015282810360608401526183498187617bf9565b905060ff8516608084015282810360a0840152618366818561821b565b9998505050505050505050565b6001600160a01b0384168152826020820152606060408201526000615c3f6060830184617bf9565b60c0815260006183ae60c0830189617bf9565b8760208401526001600160a01b038716604084015282810360608401526183d58187617bf9565b6080840195909552505090151560a090910152949350505050565b6001600160a01b038616815284602082015260a06040820152600061841860a0830186617bf9565b6060830194909452509015156080909101529392505050565b82815260406020820152600061538d6040830184617bf9565b6001600160a01b038316815260406020820152600061538d6040830184617bf9565b6040516060810167ffffffffffffffff8111828210171561848f5761848f61804e565b60405290565b60008067ffffffffffffffff8411156184b0576184b061804e565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff821117156184df576184df61804e565b6040528381529050808284018510156184f757600080fd5b61575c846020830185617bd5565b600082601f83011261851657600080fd5b613a9083835160208501618495565b60006020828403121561853757600080fd5b815167ffffffffffffffff81111561854e57600080fd5b61399384828501618505565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156139975761399761855a565b610120815260006185b161012083018b617bf9565b6001600160a01b038a16602084015288604084015287606084015286608084015282810360a08401526185e48187617bf9565b855160c08501526020860151151560e08501529050828103610100840152613c83818561821b565b60e08152600061861f60e0830189617bf9565b8760208401526001600160a01b038716604084015282810360608401526186468187617bf9565b855160808501526020860151151560a0850152905082810360c0840152618366818561821b565b60a08152600061868060a0830187617bf9565b82810360208401526186928187617bf9565b8551604085015260208601511515606085015290508281036080840152617844818561821b565b60a0815260006186cc60a0830188617bf9565b6001600160a01b038716602084015282810360408401526186ed8187617bf9565b90508460608401528281036080840152618707818561821b565b98975050505050505050565b60a08152600061872660a0830188617bf9565b6001600160a01b038716602084015282810360408401526187478187617bf9565b905060ff851660608401528281036080840152618707818561821b565b60a08152600061877760a0830188617bf9565b6001600160a01b038716602084015282810360408401526187988187617bf9565b606084019590955250509015156080909101529392505050565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516187ea81601a850160208801617bd5565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161882781601c840160208801617bd5565b01601c01949350505050565b602081526000613a906020830184617bf9565b60006020828403121561885857600080fd5b81516001600160a01b0381168114613a9057600080fd5b60008351618881818460208801617bd5565b835190830190618895818360208801617bd5565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516188d681601a850160208801617bd5565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a918401918201528351618913816033840160208801617bd5565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000613a906080830184617bf9565b6000602082840312156189a257600080fd5b815167ffffffffffffffff8111156189b957600080fd5b8201601f810184136189ca57600080fd5b61399384825160208401618495565b600085516189eb818460208a01617bd5565b7f2f000000000000000000000000000000000000000000000000000000000000009083019081528551618a25816001840160208a01617bd5565b7f2f00000000000000000000000000000000000000000000000000000000000000600192909101918201528451618a63816002840160208901617bd5565b6001818301019150507f2f0000000000000000000000000000000000000000000000000000000000000060018201528351618aa5816002840160208801617bd5565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b604081526000618af06040830184617bf9565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251618b6781601f850160208701617bd5565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b604081526000618bd46040830184617bf9565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b604081526000618c266040830184617bf9565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251618c9d816014850160208701617bd5565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b604081526000618ce46040830185617bf9565b8281036020840152613a8c8185617bf9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f2200000000000000000000000000000000000000000000000000000000000000815260008251618d5d816001850160208701617bd5565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b60008251618da3818460208701617bd5565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e747261637420000000000000000000000000000000000000000000604082015260008251618e5681604b850160208701617bd5565b91909101604b0192915050565b600060ff821660ff8103618e7957618e7961855a565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c69400000000000000000000000000000000000000000000000602082015260008251618ee0816029850160208701617bd5565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000613a906080830184617bf9565b600060208284031215618f4657600080fd5b815167ffffffffffffffff811115618f5d57600080fd5b820160608185031215618f6f57600080fd5b618f7761846c565b81518060030b8114618f8857600080fd5b8152602082015167ffffffffffffffff811115618fa457600080fd5b618fb086828501618505565b602083015250604082015167ffffffffffffffff811115618fd057600080fd5b618fdc86828501618505565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f2200000000000000000000000000000000000000000000000000000000000000602082015260008251619048816021850160208701617bd5565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351619234816021850160208801617bd5565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161927181602e840160208801617bd5565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a200000000000000000000000000000000000000000000000602082015260008251618ee0816029850160208701617bd5565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251619339816022850160208701617bd5565b9190910160220192915050565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161937e81600e850160208701617bd5565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b808201808211156139975761399761855a565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161946f816018850160208801617bd5565b7f20696e200000000000000000000000000000000000000000000000000000000060189184019182015283516194ac81601c840160208801617bd5565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b600082516195b2818460208701617bd5565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161961981601c850160208701617bd5565b91909101601c0192915050565b600060001982036196395761963961855a565b5060010190565b80820281158282048414176139975761399761855a565b6001815b6001841115619692578085048111156196765761967661855a565b600184161561968457908102905b60019390931c92800261965b565b935093915050565b6000826196a957506001613997565b816196b657506000613997565b81600181146196cc57600281146196d6576196f2565b6001915050613997565b60ff8411156196e7576196e761855a565b50506001821b613997565b5060208310610133831016604e8410600b8410161715619715575081810a613997565b6197226000198484619657565b80600019048211156197365761973661855a565b029392505050565b6000613a90838361969a565b6000816197595761975961855a565b506000190190565b60008351619773818460208801617bd5565b7f3a0000000000000000000000000000000000000000000000000000000000000090830190815283516197ad816001840160208801617bd5565b01600101949350505050565b8181036000831280158383131683831282161715616d5457616d5461855a56fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220a043c41353215fce25ecb67a8a4f6f724aaa86dea8dcb0a6975bfb1f10ff3beb64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610ed6806100246000396000f3fe60806040526004361061006e5760003560e01c8063c51316911161004b578063c5131691146100d5578063c9028a36146100f5578063e04d4f9714610115578063f05b6abf1461012857005b8063357fc5a214610077578063676cc054146100975780636ed70169146100c057005b3661007557005b005b34801561008357600080fd5b50610075610092366004610724565b610148565b6100aa6100a5366004610760565b6101de565b6040516100b7919061085b565b60405180910390f35b3480156100cc57600080fd5b50610075610211565b3480156100e157600080fd5b506100756100f0366004610724565b610246565b34801561010157600080fd5b5061007561011036600461086e565b610321565b6100756101233660046109ce565b61035d565b34801561013457600080fd5b50610075610143366004610aba565b6103a1565b6101506103d6565b61017273ffffffffffffffffffffffffffffffffffffffff8316338386610419565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101d96001600055565b505050565b6040516060907f3658b46bab672c7672b69c2f0feda706eabdb7d2231421c96e9049b2db5e7eee90600090a19392505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b61024e6103d6565b600061025b600285610ba4565b905080600003610297576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102b973ffffffffffffffffffffffffffffffffffffffff8416338484610419565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101d96001600055565b7f689a5a5cb55e795ffe4cd8b419cd3bb0a3373974c54d25f64e734d7388b93e9b3382604051610352929190610c28565b60405180910390a150565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610394959493929190610d1a565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103949493929190610da4565b600260005403610412576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526104ae9085906104b4565b50505050565b60006104d673ffffffffffffffffffffffffffffffffffffffff84168361054f565b905080516000141580156104fb5750808060200190518101906104f99190610e67565b155b156101d9576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061055d83836000610564565b9392505050565b6060814710156105a2576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610546565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105cb9190610e84565b60006040518083038185875af1925050503d8060008114610608576040519150601f19603f3d011682016040523d82523d6000602084013e61060d565b606091505b509150915061061d868383610627565b9695505050505050565b60608261063c57610637826106b6565b61055d565b8151158015610660575073ffffffffffffffffffffffffffffffffffffffff84163b155b156106af576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610546565b508061055d565b8051156106c65780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff8116811461071f57600080fd5b919050565b60008060006060848603121561073957600080fd5b83359250610749602085016106fb565b9150610757604085016106fb565b90509250925092565b6000806000838503604081121561077657600080fd5b602081121561078457600080fd5b50839250602084013567ffffffffffffffff8111156107a257600080fd5b8401601f810186136107b357600080fd5b803567ffffffffffffffff8111156107ca57600080fd5b8660208284010111156107dc57600080fd5b939660209190910195509293505050565b60005b838110156108085781810151838201526020016107f0565b50506000910152565b600081518084526108298160208601602086016107ed565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061055d6020830184610811565b60006020828403121561088057600080fd5b813567ffffffffffffffff81111561089757600080fd5b82016080818503121561055d57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561091f5761091f6108a9565b604052919050565b600082601f83011261093857600080fd5b813567ffffffffffffffff811115610952576109526108a9565b61098360207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016108d8565b81815284602083860101111561099857600080fd5b816020850160208301376000918101602001919091529392505050565b80151581146106f857600080fd5b803561071f816109b5565b6000806000606084860312156109e357600080fd5b833567ffffffffffffffff8111156109fa57600080fd5b610a0686828701610927565b935050602084013591506040840135610a1e816109b5565b809150509250925092565b600067ffffffffffffffff821115610a4357610a436108a9565b5060051b60200190565b600082601f830112610a5e57600080fd5b8135610a71610a6c82610a29565b6108d8565b8082825260208201915060208360051b860101925085831115610a9357600080fd5b602085015b83811015610ab0578035835260209283019201610a98565b5095945050505050565b600080600060608486031215610acf57600080fd5b833567ffffffffffffffff811115610ae657600080fd5b8401601f81018613610af757600080fd5b8035610b05610a6c82610a29565b8082825260208201915060208360051b850101925088831115610b2757600080fd5b602084015b83811015610b6957803567ffffffffffffffff811115610b4b57600080fd5b610b5a8b602083890101610927565b84525060209283019201610b2c565b509550505050602084013567ffffffffffffffff811115610b8957600080fd5b610b9586828701610a4d565b925050610757604085016109c3565b600082610bda577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015273ffffffffffffffffffffffffffffffffffffffff610c66836106fb565b16604082015273ffffffffffffffffffffffffffffffffffffffff610c8d602084016106fb565b166060820152600080604084013590508060808401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610cd957600080fd5b830160208101903567ffffffffffffffff811115610cf657600080fd5b803603821315610d0557600080fd5b608060a085015261061d60c085018284610bdf565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610d4f60a0830186610811565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610d9a578151865260209586019590910190600101610d7c565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610e37577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610e22858351610811565b94506020938401939190910190600101610de8565b505050508281036040840152610e4d8186610d68565b915050610e5e606083018415159052565b95945050505050565b600060208284031215610e7957600080fd5b815161055d816109b5565b60008251610e968184602087016107ed565b919091019291505056fea2646970667358221220db940ec4fecaa3b11f71d6cf6ef0ac3141552c5e39d750c1e2295a761a9396ad64736f6c634300081a00336080604052348015600f57600080fd5b50604051610a2c380380610a2c833981016040819052602c916050565b600080546001600160a01b0319166001600160a01b0392909216919091179055607e565b600060208284031215606157600080fd5b81516001600160a01b0381168114607757600080fd5b9392505050565b61099f8061008d6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b5780637a34d8bb146100a4575b600080fd5b6100596100543660046105f5565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b2366004610695565b610313565b60008383836040516024016100ce93929190610791565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490915073ffffffffffffffffffffffffffffffffffffffff8087169163095ea7b391166101758960026107bb565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016020604051808303816000875af11580156101e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020991906107fb565b61023f576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160a0810182526103218082526001602080840182905283850192909252835191820184526000808352606084019290925260808301829052905492517f048ae42c000000000000000000000000000000000000000000000000000000008152919273ffffffffffffffffffffffffffffffffffffffff169163048ae42c916102d7918c918c918c9189918990600401610894565b600060405180830381600087803b1580156102f157600080fd5b505af1158015610305573d6000803e3d6000fd5b505050505050505050505050565b600083838360405160240161032a93929190610791565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f9700000000000000000000000000000000000000000000000000000000179052815160a081018352610321808252600182840181905282850191909152835192830184526000808452606083019390935260808201839052915492517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810183905293945092909188169063095ea7b3906044016020604051808303816000875af1158015610455573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047991906107fb565b506000546040517f1cb5ea7500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690631cb5ea75906102d7908b908b90889087908990600401610902565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261051857600080fd5b81356020830160008067ffffffffffffffff841115610539576105396104d8565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff82111715610586576105866104d8565b60405283815290508082840187101561059e57600080fd5b838360208301376000602085830101528094505050505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146105df57600080fd5b919050565b80151581146105f257600080fd5b50565b60008060008060008060c0878903121561060e57600080fd5b863567ffffffffffffffff81111561062557600080fd5b61063189828a01610507565b96505060208701359450610647604088016105bb565b9350606087013567ffffffffffffffff81111561066357600080fd5b61066f89828a01610507565b9350506080870135915060a0870135610687816105e4565b809150509295509295509295565b600080600080600060a086880312156106ad57600080fd5b853567ffffffffffffffff8111156106c457600080fd5b6106d088828901610507565b9550506106df602087016105bb565b9350604086013567ffffffffffffffff8111156106fb57600080fd5b61070788828901610507565b93505060608601359150608086013561071f816105e4565b809150509295509295909350565b6000815180845260005b8181101561075357602081850181015186830182015201610737565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6060815260006107a4606083018661072d565b602083019490945250901515604090910152919050565b808201808211156107f5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b60006020828403121561080d57600080fd5b8151610818816105e4565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff815116825260208101511515602083015273ffffffffffffffffffffffffffffffffffffffff60408201511660408301526000606082015160a0606085015261088060a085018261072d565b608093840151949093019390935250919050565b60c0815260006108a760c083018961072d565b87602084015273ffffffffffffffffffffffffffffffffffffffff8716604084015282810360608401526108db818761072d565b905084608084015282810360a08401526108f5818561081f565b9998505050505050505050565b60a08152600061091560a083018861072d565b73ffffffffffffffffffffffffffffffffffffffff871660208401528281036040840152610943818761072d565b9050846060840152828103608084015261095d818561081f565b9897505050505050505056fea26469706673582212205fa8242e260218029afa3d89782c3c4b8f593abd55a4428515fbfa47b0bbebf764736f6c634300081a0033608060405234801561001057600080fd5b50604051610b3f380380610b3f83398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a348061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fd565b6103a0565b6101416101da36600461081f565b610419565b6101046101ed366004610841565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610884565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108b0565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e90610366908490899089908990899060040161091b565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff8111156107b257600080fd5b8601601f810188136107c357600080fd5b803567ffffffffffffffff8111156107da57600080fd5b8860208284010111156107ec57600080fd5b959894975092955050506020019190565b60006020828403121561080f57600080fd5b61081882610737565b9392505050565b6000806040838503121561083257600080fd5b50508035926020909101359150565b60008060006060848603121561085657600080fd5b61085f84610737565b925061086d60208501610737565b915061087b60408501610737565b90509250925092565b6000806040838503121561089757600080fd5b823591506108a760208401610737565b90509250929050565b6000602082840312156108c257600080fd5b8151801515811461081857600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610953576020818401810151610100878401015201610935565b5060008482016101000152602089015173ffffffffffffffffffffffffffffffffffffffff811660a0860152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168401915050604088015160c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401526101008382030160608401526109f2610100820185876108d2565b9897505050505050505056fea26469706673582212201600a256a4ffaaa4ceb3b81d9f67be9d8f33665245b35eeba52fdc70200176a764736f6c634300081a003360c060405234801561001057600080fd5b5060405161207238038061207283398101604081905261002f916101f0565b6001600160a01b038216158061004c57506001600160a01b038116155b1561006a5760405163d92e233d60e01b815260040160405180910390fd5b60066100768982610342565b5060076100838882610342565b506008805460ff191660ff881617905560808590528360028111156100aa576100aa610400565b60a08160028111156100be576100be610400565b905250600192909255600080546001600160a01b039283166001600160a01b0319909116179055600880549190921661010002610100600160a81b0319909116179055506104169350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261013357600080fd5b81516001600160401b0381111561014c5761014c61010c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561017a5761017a61010c565b60405281815283820160200185101561019257600080fd5b60005b828110156101b157602081860181015183830182015201610195565b506000918101602001919091529392505050565b8051600381106101d457600080fd5b919050565b80516001600160a01b03811681146101d457600080fd5b600080600080600080600080610100898b03121561020d57600080fd5b88516001600160401b0381111561022357600080fd5b61022f8b828c01610122565b60208b015190995090506001600160401b0381111561024d57600080fd5b6102598b828c01610122565b975050604089015160ff8116811461027057600080fd5b60608a0151909650945061028660808a016101c5565b60a08a0151909450925061029c60c08a016101d9565b91506102aa60e08a016101d9565b90509295985092959890939650565b600181811c908216806102cd57607f821691505b6020821081036102ed57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561033d57806000526020600020601f840160051c8101602085101561031a5750805b601f840160051c820191505b8181101561033a5760008155600101610326565b50505b505050565b81516001600160401b0381111561035b5761035b61010c565b61036f8161036984546102b9565b846102f3565b6020601f8211600181146103a3576000831561038b5750848201515b600019600385901b1c1916600184901b17845561033a565b600084815260208120601f198516915b828110156103d357878501518255602094850194600190920191016103b3565b50848210156103f15786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a051611c1b61045760003960006103440152600081816102f001528181610bdc01528181610ce201528181610efe01526110040152611c1b6000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c806395d89b41116100f9578063ccc7759911610097578063eddeb12311610071578063eddeb12314610461578063f2441b3214610474578063f687d12a14610494578063fc5fecd5146104a757600080fd5b8063ccc77599146103d4578063d9eeebed146103e7578063dd62ed3e1461041b57600080fd5b8063b84c8246116100d3578063b84c824614610386578063c47f00271461039b578063c7012626146103ae578063c835d7cc146103c157600080fd5b806395d89b4114610337578063a3413d031461033f578063a9059cbb1461037357600080fd5b80633ce4a5bc116101665780634d8943bb116101405780634d8943bb146102ac57806370a08231146102b557806385e1f4d0146102eb5780638b851b951461031257600080fd5b80633ce4a5bc1461024657806342966c681461028657806347e7ef241461029957600080fd5b806318160ddd1161019757806318160ddd1461021657806323b872dd1461021e578063313ce5671461023157600080fd5b806306fdde03146101be578063091d2788146101dc578063095ea7b3146101f3575b600080fd5b6101c66104ba565b6040516101d39190611648565b60405180910390f35b6101e560015481565b6040519081526020016101d3565b610206610201366004611687565b61054c565b60405190151581526020016101d3565b6005546101e5565b61020661022c3660046116b3565b610563565b60085460405160ff90911681526020016101d3565b61026173735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d3565b6102066102943660046116f4565b6105fa565b6102066102a7366004611687565b61060e565b6101e560025481565b6101e56102c336600461170d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6101e57f000000000000000000000000000000000000000000000000000000000000000081565b60085461026190610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6101c6610767565b6103667f000000000000000000000000000000000000000000000000000000000000000081565b6040516101d3919061172a565b610206610381366004611687565b610776565b610399610394366004611832565b610783565b005b6103996103a9366004611832565b6107e0565b6102066103bc366004611883565b610839565b6103996103cf36600461170d565b610988565b6103996103e236600461170d565b610a9c565b6103ef610bb0565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101d3565b6101e56104293660046118dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205490565b61039961046f3660046116f4565b610dce565b6000546102619073ffffffffffffffffffffffffffffffffffffffff1681565b6103996104a23660046116f4565b610e50565b6103ef6104b53660046116f4565b610ed2565b6060600680546104c990611915565b80601f01602080910402602001604051908101604052809291908181526020018280546104f590611915565b80156105425780601f1061051757610100808354040283529160200191610542565b820191906000526020600020905b81548152906001019060200180831161052557829003601f168201915b5050505050905090565b60006105593384846110ee565b5060015b92915050565b60006105708484846111f7565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460209081526040808320338452909152902054828110156105db576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105ef85336105ea8685611997565b6110ee565b506001949350505050565b600061060633836113b2565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab1480159061064c575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156106755750600854610100900473ffffffffffffffffffffffffffffffffffffffff163314155b156106ac576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106b683836114f4565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526107569186906119aa565b60405180910390a250600192915050565b6060600780546104c990611915565b60006105593384846111f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab146107d0576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60076107dc8282611a1b565b5050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461082d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60066107dc8282611a1b565b6000806000610846610bb0565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156108d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fc9190611b34565b610932576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61093c33856113b2565b60025460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161097591899189918791611b56565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146109d5576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a22576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610ae9576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610b36576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c679190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610cb6576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d699190611ba2565b905080600003610da5576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060025460015483610db89190611bbb565b610dc29190611bd2565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e1b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610a91565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e9d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610f65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f899190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610fd8576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015611067573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108b9190611ba2565b9050806000036110c7576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000906110d78784611bbb565b6110e19190611bd2565b9296929550919350505050565b73ffffffffffffffffffffffffffffffffffffffff831661113b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611188576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611244576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611291576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040902054818110156112f1576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112fb8282611997565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260036020526040808220939093559085168152908120805484929061133e908490611bd2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113a491815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff82166113ff576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260409020548181101561145f576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114698282611997565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260036020526040812091909155600580548492906114a4908490611997565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016111ea565b73ffffffffffffffffffffffffffffffffffffffff8216611541576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008282546115539190611bd2565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805483929061158d908490611bd2565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561160a576020818501810151868301820152016115ee565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061165b60208301846115e4565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461168457600080fd5b50565b6000806040838503121561169a57600080fd5b82356116a581611662565b946020939093013593505050565b6000806000606084860312156116c857600080fd5b83356116d381611662565b925060208401356116e381611662565b929592945050506040919091013590565b60006020828403121561170657600080fd5b5035919050565b60006020828403121561171f57600080fd5b813561165b81611662565b6020810160038310611765577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff8411156117b5576117b561176b565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff821117156118025761180261176b565b60405283815290508082840185101561181a57600080fd5b83836020830137600060208583010152509392505050565b60006020828403121561184457600080fd5b813567ffffffffffffffff81111561185b57600080fd5b8201601f8101841361186c57600080fd5b61187b8482356020840161179a565b949350505050565b6000806040838503121561189657600080fd5b823567ffffffffffffffff8111156118ad57600080fd5b8301601f810185136118be57600080fd5b6118cd8582356020840161179a565b95602094909401359450505050565b600080604083850312156118ef57600080fd5b82356118fa81611662565b9150602083013561190a81611662565b809150509250929050565b600181811c9082168061192957607f821691505b602082108103611962577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561055d5761055d611968565b6040815260006119bd60408301856115e4565b90508260208301529392505050565b601f821115611a1657806000526020600020601f840160051c810160208510156119f35750805b601f840160051c820191505b81811015611a1357600081556001016119ff565b50505b505050565b815167ffffffffffffffff811115611a3557611a3561176b565b611a4981611a438454611915565b846119cc565b6020601f821160018114611a9b5760008315611a655750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611a13565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015611ae95787850151825560209485019460019092019101611ac9565b5084821015611b2557868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b600060208284031215611b4657600080fd5b8151801515811461165b57600080fd5b608081526000611b6960808301876115e4565b6020830195909552506040810192909252606090910152919050565b600060208284031215611b9757600080fd5b815161165b81611662565b600060208284031215611bb457600080fd5b5051919050565b808202811582820484141761055d5761055d611968565b8082018082111561055d5761055d61196856fea2646970667358221220d6ba834f25782689ed13bffb6ac9ff2c8d3b5342c94a515aea8197a76070ad3f64736f6c634300081a0033a2646970667358221220382f9435f6587aeb52d8f017024885dc189c593c8e105dd179f64d2cf296c5e864736f6c634300081a0033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061e9908061003c6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806385226c81116100b2578063b5508aa911610081578063d7a525fc11610066578063d7a525fc146101ec578063e20c9f71146101f4578063fa7626d4146101fc57600080fd5b8063b5508aa9146101cc578063ba414fa6146101d457600080fd5b806385226c8114610192578063916a17c6146101a75780639683c695146101bc578063b0464fdc146101c457600080fd5b80633f7286f4116100ee5780633f7286f414610165578063524744131461016d57806366d9a9a0146101755780636ff15ccc1461018a57600080fd5b80630a9254e4146101205780631ed7831c1461012a5780632ade3880146101485780633e5e3c231461015d575b600080fd5b610128610209565b005b6101326112bd565b60405161013f9190617b89565b60405180910390f35b61015061131f565b60405161013f9190617c25565b610132611461565b6101326114c1565b610128611521565b61017d611da5565b60405161013f9190617d8b565b610128611f27565b61019a612770565b60405161013f9190617e29565b6101af612840565b60405161013f9190617ea0565b61012861293b565b6101af612f46565b61019a613041565b6101dc613111565b604051901515815260200161013f565b6101286131e5565b61013261391e565b601f546101dc9060ff1681565b602580547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602680548216611234179055602780548216615678179055602d805490911661432117905560405161026790617a8f565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f0801580156102ec573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405161033190617a8f565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f0801580156103b5573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600e81527f4761746577617945564d2e736f6c0000000000000000000000000000000000006020820152602754602554925190851660248201526044810193909352921660648201526000916104a7916084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc0c53b8b0000000000000000000000000000000000000000000000000000000017905261397e565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0384811682029290921792839055604080518082018252601081527f4552433230437573746f64792e736f6c000000000000000000000000000000006020820152602754602554925193909504841660248401529383166044830152909116606482015291925061054a9160840161044a565b602080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03838116919091178255604080518082018252601a81527f5a657461436f6e6e6563746f724e6f6e4e61746976652e736f6c00000000000093810193909352601f546023546027546025549351610100909304851660248401529084166044830152831660648201529116608482015291925061064e9160a40160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff8c8765e0000000000000000000000000000000000000000000000000000000017905261397e565b602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03838116919091179091556027546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561070057600080fd5b505af1158015610714573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b15801561078a57600080fd5b505af115801561079e573d6000803e3d6000fd5b5050601f546020546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261010090920416925063ae7a3a6f9150602401600060405180830381600087803b15801561080957600080fd5b505af115801561081d573d6000803e3d6000fd5b5050601f546021546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526101009092041692506310188aef9150602401600060405180830381600087803b15801561088857600080fd5b505af115801561089c573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156108fe57600080fd5b505af1158015610912573d6000803e3d6000fd5b50506022546025546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f42406024820152911692506340c10f199150604401600060405180830381600087803b15801561098157600080fd5b505af1158015610995573d6000803e3d6000fd5b50506022546020546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12060248201529116925063a9059cbb91506044016020604051808303816000875af1158015610a09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a2d9190617f37565b50604051610a3a90617a9c565b604051809103906000f080158015610a56573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316178155604080518082018252600f81527f476174657761795a45564d2e736f6c00000000000000000000000000000000006020820152602354602d5492519085169381019390935292166044820152610b3c919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc9550000000000000000000000000000000000000000000000000000000017905261397e565b602880546001600160a01b03929092167fffffffffffffffffffffffff00000000000000000000000000000000000000009283168117909155602980549092168117909155604051610b8d90617aa9565b6001600160a01b039091168152602001604051809103906000f080158015610bb9573d6000803e3d6000fd5b50602a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040517f06447d5600000000000000000000000000000000000000000000000000000000815273735b14bb79463307aacbed86daf3322b1e6226ab6004820181905290737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b158015610c6e57600080fd5b505af1158015610c82573d6000803e3d6000fd5b505050506000806000604051610c9790617ab6565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610cd3573d6000803e3d6000fd5b50602b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602954604051601293600193600093849391921690610d2990617ac3565b610d3896959493929190617f59565b604051809103906000f080158015610d54573d6000803e3d6000fd5b50602c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602b546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b158015610deb57600080fd5b505af1158015610dff573d6000803e3d6000fd5b5050602b546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b158015610e6957600080fd5b505af1158015610e7d573d6000803e3d6000fd5b5050602c54602d546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f42406024820152911692506347e7ef2491506044016020604051808303816000875af1158015610ef1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f159190617f37565b50602c54602a546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424060248201529116906347e7ef24906044016020604051808303816000875af1158015610f86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610faa9190617f37565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561100957600080fd5b505af115801561101d573d6000803e3d6000fd5b5050602d546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561109357600080fd5b505af11580156110a7573d6000803e3d6000fd5b5050602c546029546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424060248201529116925063095ea7b391506044016020604051808303816000875af115801561111b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113f9190617f37565b506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b1580156111c057600080fd5b505af11580156111d4573d6000803e3d6000fd5b50506040805160a08101825261032180825260016020808401918252838501928352845190810190945260008085526060840185905260808401528251602e80549251151574010000000000000000000000000000000000000000027fffffffffffffffffffffff0000000000000000000000000000000000000000009093166001600160a01b03928316179290921782559151602f8054919093167fffffffffffffffffffffffff0000000000000000000000000000000000000000919091161790915590935091506030906112ab9082618119565b50608082015181600301559050505050565b6060601680548060200260200160405190810160405280929190818152602001828054801561131557602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116112f7575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561145857600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156114415783829060005260206000200180546113b49061807d565b80601f01602080910402602001604051908101604052809291908181526020018280546113e09061807d565b801561142d5780601f106114025761010080835404028352916020019161142d565b820191906000526020600020905b81548152906001019060200180831161141057829003601f168201915b505050505081526020019060010190611395565b505050508152505081526020019060010190611343565b50505050905090565b60606018805480602002602001604051908101604052809291908181526020018280548015611315576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116112f7575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015611315576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116112f7575050505050905090565b604080518082018252600681527f48656c6c6f2100000000000000000000000000000000000000000000000000006020820152602c54602a805493517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03948516600482015292939092600192670de0b6b3a7640000926000929116906370a0823190602401602060405180830381865afa1580156115cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f191906181d8565b6040519091506000907fe04d4f97000000000000000000000000000000000000000000000000000000009061162e908890889088906024016181f1565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009095169490941790935260245490519193506000926116c7926001600160a01b03909216910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602c546116fe926207a120916001600160a01b0316908690600190602e9060240161830a565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f048ae42c0000000000000000000000000000000000000000000000000000000017905260295490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba3916117bb916001600160a01b0391909116906000908690600401618373565b600060405180830381600087803b1580156117d557600080fd5b505af11580156117e9573d6000803e3d6000fd5b5050602d546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561185f57600080fd5b505af1158015611873573d6000803e3d6000fd5b5050602a5460245460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039091169250630abd8905915060340160408051601f1981840301815290829052602c547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261190d926207a120916001600160a01b0316908d908d908d9060040161839b565b600060405180830381600087803b15801561192757600080fd5b505af115801561193b573d6000803e3d6000fd5b5050601f546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b0316600482015260248101879052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b1580156119bc57600080fd5b505af11580156119d0573d6000803e3d6000fd5b5050602480546040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190529281018390526044810183905260648101929092526001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015611a6357600080fd5b505af1158015611a77573d6000803e3d6000fd5b505050507f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa601f60019054906101000a90046001600160a01b031685898989604051611ac79594939291906183f0565b60405180910390a1601f546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611b6157600080fd5b505af1158015611b75573d6000803e3d6000fd5b50506024546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150611bba9087908690618431565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611c3457600080fd5b505af1158015611c48573d6000803e3d6000fd5b5050601f546024546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b0361010090930483169450631cff79cd93508892611ca1921690879060040161844a565b60006040518083038185885af1158015611cbf573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052611ce89190810190618525565b50602c54602a546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611d53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d7791906181d8565b9050611d9b816001611d8c6207a12088618589565b611d969190618589565b61399d565b5050505050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156114585783829060005260206000209060020201604051806040016040529081600082018054611dfc9061807d565b80601f0160208091040260200160405190810160405280929190818152602001828054611e289061807d565b8015611e755780601f10611e4a57610100808354040283529160200191611e75565b820191906000526020600020905b815481529060010190602001808311611e5857829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611f0f57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611ebc5790505b50505050508152505081526020019060010190611dc9565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a7640000906000907fe04d4f970000000000000000000000000000000000000000000000000000000090611fa3908790879087906024016181f1565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000949094169390931790925260295491517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482018190526001600160a01b039093166084820152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561209557600080fd5b505af11580156120a9573d6000803e3d6000fd5b5050602d5460245460405160609190911b6bffffffffffffffffffffffff19166020820152600093506001600160a01b0390911691507f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c9060340160408051601f19818403018152828252602c547f4d8943bb000000000000000000000000000000000000000000000000000000008452915190926001600160a01b03909216916207a1209188918491634d8943bb916004808201926020929091908290030181865afa15801561217e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121a291906181d8565b6040805180820182526001808252602082015290516121ca9695949392918c91602e9061859c565b60405180910390a3602d546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561224457600080fd5b505af1158015612258573d6000803e3d6000fd5b50506029546024546040805160609290921b6bffffffffffffffffffffffff1916602083015280518083036014018152602c5460748401835260016034850181815260549095015291517f7b15118b0000000000000000000000000000000000000000000000000000000081526001600160a01b039485169650637b15118b95506122f69491936207a1209392909216918991602e9060040161860c565b600060405180830381600087803b15801561231057600080fd5b505af1158015612324573d6000803e3d6000fd5b5050602c54602d546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015612390573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b491906181d8565b90506123c781611d96846207a120618589565b601f546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b0316600482015260248101859052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561244457600080fd5b505af1158015612458573d6000803e3d6000fd5b5050602480546040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190529281018390526044810183905260648101929092526001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156124eb57600080fd5b505af11580156124ff573d6000803e3d6000fd5b505050507f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa601f60019054906101000a90046001600160a01b03168589898960405161254f9594939291906183f0565b60405180910390a1601f546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156125e957600080fd5b505af11580156125fd573d6000803e3d6000fd5b50506024546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f91506126429087908790618431565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156126bc57600080fd5b505af11580156126d0573d6000803e3d6000fd5b5050601f546024546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b0361010090930483169450631cff79cd93508892612729921690889060040161844a565b60006040518083038185885af1158015612747573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052611d9b9190810190618525565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156114585783829060005260206000200180546127b39061807d565b80601f01602080910402602001604051908101604052809291908181526020018280546127df9061807d565b801561282c5780601f106128015761010080835404028352916020019161282c565b820191906000526020600020905b81548152906001019060200180831161280f57829003601f168201915b505050505081526020019060010190612794565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156114585760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561292357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116128d05790505b50505050508152505081526020019060010190612864565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a7640000906000907fe04d4f9700000000000000000000000000000000000000000000000000000000906129b7908790879087906024016181f1565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009490941693909317909252602d5491517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612a8a57600080fd5b505af1158015612a9e573d6000803e3d6000fd5b50506029546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015612b3057600080fd5b505af1158015612b44573d6000803e3d6000fd5b5050602c54602d5460245460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039283169450911691507f306ee13f48319a123b222c69908e44dcf91abffc20cacc502e3cf5a4ff23e0e49060340160408051601f198184030181528282018252600180845260208401529051612bce928791602e9061866d565b60405180910390a36029546024546040805160609290921b6bffffffffffffffffffffffff19166020830152805180830360140181526034830191829052602c547f1cb5ea75000000000000000000000000000000000000000000000000000000009092526001600160a01b0393841693631cb5ea7593612c5e9391909116908690600190602e906038016186b9565b600060405180830381600087803b158015612c7857600080fd5b505af1158015612c8c573d6000803e3d6000fd5b5050601f546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b0316600482015260248101859052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015612d0d57600080fd5b505af1158015612d21573d6000803e3d6000fd5b5050601f546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015612db757600080fd5b505af1158015612dcb573d6000803e3d6000fd5b50506024546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150612e109085908590618431565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612e8a57600080fd5b505af1158015612e9e573d6000803e3d6000fd5b5050601f546024546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b0361010090930483169450631cff79cd93508692612ef7921690869060040161844a565b60006040518083038185885af1158015612f15573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052612f3e9190810190618525565b505050505050565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156114585760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561302957602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411612fd65790505b50505050508152505081526020019060010190612f6a565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156114585783829060005260206000200180546130849061807d565b80601f01602080910402602001604051908101604052809291908181526020018280546130b09061807d565b80156130fd5780601f106130d2576101008083540402835291602001916130fd565b820191906000526020600020905b8154815290600101906020018083116130e057829003601f168201915b505050505081526020019060010190613065565b60085460009060ff1615613129575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa1580156131ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131de91906181d8565b1415905090565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a7640000906000907fe04d4f970000000000000000000000000000000000000000000000000000000090613261908790879087906024016181f1565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009095169490941790935260245490519193506000926132fa926001600160a01b03909216910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602c5461332e926001600160a01b03909116908590600190602e90602401618713565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1cb5ea750000000000000000000000000000000000000000000000000000000017905260295490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba3916133eb916001600160a01b0391909116906000908690600401618373565b600060405180830381600087803b15801561340557600080fd5b505af1158015613419573d6000803e3d6000fd5b5050602d546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561348f57600080fd5b505af11580156134a3573d6000803e3d6000fd5b5050602a5460245460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039091169250637a34d8bb915060340160408051601f1981840301815290829052602c547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261353a926001600160a01b03909116908b908b908b90600401618764565b600060405180830381600087803b15801561355457600080fd5b505af1158015613568573d6000803e3d6000fd5b5050601f546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b0316600482015260248101869052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b1580156135e957600080fd5b505af11580156135fd573d6000803e3d6000fd5b5050602480546040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190529281018390526044810183905260648101929092526001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561369057600080fd5b505af11580156136a4573d6000803e3d6000fd5b505050507f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa601f60019054906101000a90046001600160a01b0316848888886040516136f49594939291906183f0565b60405180910390a1601f546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561378e57600080fd5b505af11580156137a2573d6000803e3d6000fd5b50506024546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f91506137e79086908690618431565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561386157600080fd5b505af1158015613875573d6000803e3d6000fd5b5050601f546024546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b0361010090930483169450631cff79cd935087926138ce921690879060040161844a565b60006040518083038185885af11580156138ec573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526139159190810190618525565b50505050505050565b60606015805480602002602001604051908101604052809291908181526020018280548015611315576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116112f7575050505050905090565b6000613988617ad0565b613993848483613a1c565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b158015613a0857600080fd5b505afa158015612f3e573d6000803e3d6000fd5b600080613a298584613a97565b9050613a8c6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001613a7792919061844a565b60405160208183030381529060405285613aa3565b9150505b9392505050565b6000613a908383613ad1565b60c08101515160009015613ac757613ac084848460c00151613aec565b9050613a90565b613ac08484613c92565b6000613add8383613d7d565b613a9083836020015184613aa3565b600080613af7613d8d565b90506000613b058683613e60565b90506000613b1c8260600151836020015185614306565b90506000613b2c83838989614518565b90506000613b3982615395565b602081015181519192509060030b15613bac57898260400151604051602001613b639291906187b2565b60408051601f19818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252613ba391600401618833565b60405180910390fd5b6000613bef6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001615564565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90613c42908490600401618833565b602060405180830381865afa158015613c5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c839190618846565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590613ce7908790600401618833565b600060405180830381865afa158015613d04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d2c9190810190618525565b90506000613d5a8285604051602001613d4692919061886f565b604051602081830303815290604052615764565b90506001600160a01b038116613993578484604051602001613b6392919061889e565b613d8982826000615777565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90613e14908490600401618949565b600060405180830381865afa158015613e31573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613e599190810190618990565b9250505090565b613e926040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050613edd6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b613ee68561587a565b60208201526000613ef686615c5f565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015613f38573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f609190810190618990565b86838560200151604051602001613f7a94939291906189d9565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190613fd2908590600401618833565b600060405180830381865afa158015613fef573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526140179190810190618990565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f69061405f908490600401618add565b602060405180830381865afa15801561407c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140a09190617f37565b6140b55781604051602001613b639190618b2f565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906140fa908490600401618bc1565b600060405180830381865afa158015614117573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261413f9190810190618990565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690614186908490600401618c13565b602060405180830381865afa1580156141a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141c79190617f37565b1561425c576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890614211908490600401618c13565b600060405180830381865afa15801561422e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526142569190810190618990565b60408501525b846001600160a01b03166349c4fac88286600001516040516020016142819190618c65565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016142ad929190618cd1565b600060405180830381865afa1580156142ca573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526142f29190810190618990565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816143225790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061438257614382618cf6565b60200260200101819052506040518060400160405280600381526020017f2d726c0000000000000000000000000000000000000000000000000000000000815250816001815181106143d6576143d6618cf6565b6020026020010181905250846040516020016143f29190618d25565b6040516020818303038152906040528160028151811061441457614414618cf6565b6020026020010181905250826040516020016144309190618d91565b6040516020818303038152906040528160038151811061445257614452618cf6565b6020026020010181905250600061446882615395565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506144f99060408051808201825260008082526020918201528151808301909252845182528085019082015290615ee2565b61450e5785604051602001613b639190618dd2565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015614568565b511590565b6146dc57826020015115614624576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401613ba3565b8260c00151156146dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401613ba3565b6040805160ff8082526120008201909252600091816020015b60608152602001906001900390816146f557905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061475090618e63565b935060ff168151811061476557614765618cf6565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016147b69190618e82565b6040516020818303038152906040528282806147d190618e63565b935060ff16815181106147e6576147e6618cf6565b60200260200101819052506040518060400160405280600681526020017f6465706c6f79000000000000000000000000000000000000000000000000000081525082828061483390618e63565b935060ff168151811061484857614848618cf6565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d6500000000000000000000000000000000000081525082828061489590618e63565b935060ff16815181106148aa576148aa618cf6565b602002602001018190525087602001518282806148c690618e63565b935060ff16815181106148db576148db618cf6565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163745061746800000000000000000000000000000000000081525082828061492890618e63565b935060ff168151811061493d5761493d618cf6565b60209081029190910101528751828261495581618e63565b935060ff168151811061496a5761496a618cf6565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806149b790618e63565b935060ff16815181106149cc576149cc618cf6565b60200260200101819052506149e046615f43565b82826149eb81618e63565b935060ff1681518110614a0057614a00618cf6565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280614a4d90618e63565b935060ff1681518110614a6257614a62618cf6565b602002602001018190525086828280614a7a90618e63565b935060ff1681518110614a8f57614a8f618cf6565b6020908102919091010152855115614bb65760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f6465000000000000000000000060208201528282614ae081618e63565b935060ff1681518110614af557614af5618cf6565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90614b45908990600401618833565b600060405180830381865afa158015614b62573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614b8a9190810190618990565b8282614b9581618e63565b935060ff1681518110614baa57614baa618cf6565b60200260200101819052505b846020015115614c865760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282614bff81618e63565b935060ff1681518110614c1457614c14618cf6565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280614c6190618e63565b935060ff1681518110614c7657614c76618cf6565b6020026020010181905250614e4d565b614cbe6145638660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b614d515760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614d0181618e63565b935060ff1681518110614d1657614d16618cf6565b60200260200101819052508460a00151604051602001614d369190618d25565b604051602081830303815290604052828280614c6190618e63565b8460c00151158015614d94575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152614d9290511590565b155b15614e4d5760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614dd881618e63565b935060ff1681518110614ded57614ded618cf6565b6020026020010181905250614e0188615fe3565b604051602001614e119190618d25565b604051602081830303815290604052828280614e2c90618e63565b935060ff1681518110614e4157614e41618cf6565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152614e8190511590565b614f165760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282614ec481618e63565b935060ff1681518110614ed957614ed9618cf6565b60200260200101819052508460400151828280614ef590618e63565b935060ff1681518110614f0a57614f0a618cf6565b60200260200101819052505b6060850151156150375760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282614f5f81618e63565b935060ff1681518110614f7457614f74618cf6565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015614fe3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261500b9190810190618990565b828261501681618e63565b935060ff168151811061502b5761502b618cf6565b60200260200101819052505b60e085015151156150de5760408051808201909152600a81527f2d2d6761734c696d6974000000000000000000000000000000000000000000006020820152828261508181618e63565b935060ff168151811061509657615096618cf6565b60200260200101819052506150b28560e0015160000151615f43565b82826150bd81618e63565b935060ff16815181106150d2576150d2618cf6565b60200260200101819052505b60e085015160200151156151885760408051808201909152600a81527f2d2d6761735072696365000000000000000000000000000000000000000000006020820152828261512b81618e63565b935060ff168151811061514057615140618cf6565b602002602001018190525061515c8560e0015160200151615f43565b828261516781618e63565b935060ff168151811061517c5761517c618cf6565b60200260200101819052505b60e085015160400151156152325760408051808201909152600e81527f2d2d6d6178466565506572476173000000000000000000000000000000000000602082015282826151d581618e63565b935060ff16815181106151ea576151ea618cf6565b60200260200101819052506152068560e0015160400151615f43565b828261521181618e63565b935060ff168151811061522657615226618cf6565b60200260200101819052505b60e085015160600151156152dc5760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828261527f81618e63565b935060ff168151811061529457615294618cf6565b60200260200101819052506152b08560e0015160600151615f43565b82826152bb81618e63565b935060ff16815181106152d0576152d0618cf6565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156152fa576152fa61804e565b60405190808252806020026020018201604052801561532d57816020015b60608152602001906001900390816153185790505b50905060005b8260ff168160ff16101561538657838160ff168151811061535657615356618cf6565b6020026020010151828260ff168151811061537357615373618cf6565b6020908102919091010152600101615333565b5093505050505b949350505050565b6153bc6040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c9161544291869101618eed565b600060405180830381865afa15801561545f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526154879190810190618990565b905060006154958683616ad2565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b81526004016154c59190617e29565b6000604051808303816000875af11580156154e4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261550c9190810190618f34565b805190915060030b158015906155255750602081015151155b80156155345750604081015151155b1561450e578160008151811061554c5761554c618cf6565b6020026020010151604051602001613b639190618fea565b606060006155998560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506155d09082905b90616c27565b1561572d57600061564d82615647846156416156138a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90616c4e565b90616cb0565b604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506156b1908290616c27565b1561571b57604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615718905b8290616d35565b90505b61572481616d5b565b92505050613a90565b8215615746578484604051602001613b639291906191d6565b5050604080516020810190915260008152613a90565b509392505050565b6000808251602084016000f09392505050565b8160a001511561578657505050565b6000615793848484616dc4565b905060006157a082615395565b602081015181519192509060030b15801561583c5750604080518082018252600781527f53554343455353000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261583c906040805180820182526000808252602091820152815180830190925284518252808501908201526155ca565b1561584957505050505050565b60408201515115615869578160400151604051602001613b63919061927d565b80604051602001613b6391906192db565b606060006158af8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615914905b8290615ee2565b1561598357604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613a909061597e90839061735f565b616d5b565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526159e5905b82906173e9565b600103615ab257604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615a4b90615711565b50604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613a909061597e905b8390616d35565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615b119061590d565b15615c4857604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615b79908390617483565b905060008160018351615b8c9190618589565b81518110615b9c57615b9c618cf6565b60200260200101519050615c3f61597e615c126040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529061735f565b95945050505050565b82604051602001613b639190619346565b50919050565b60606000615c948360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615cf69061590d565b15615d0457613a9081616d5b565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615d63906159de565b600103615dcd57604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613a909061597e90615aab565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615e2c9061590d565b15615c4857604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615e94908390617483565b9050600181511115615ed0578060028251615eaf9190618589565b81518110615ebf57615ebf618cf6565b602002602001015192505050919050565b5082604051602001613b639190619346565b805182516000911115615ef757506000613997565b81518351602085015160009291615f0d91619424565b615f179190618589565b905082602001518103615f2e576001915050613997565b82516020840151819020912014905092915050565b60606000615f5083617528565b600101905060008167ffffffffffffffff811115615f7057615f7061804e565b6040519080825280601f01601f191660200182016040528015615f9a576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084615fa457509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e534544000000000000000000000000000000000000000000008184019081528551808701875283815284019290925284518086019095525184529083015260609161606f905b829061760a565b156160af57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261610e90616068565b1561614e57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d49540000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526161ad90616068565b156161ed57505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261624c90616068565b806162b15750604080518082018252601081527f47504c2d322e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526162b190616068565b156162f157505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261635090616068565b806163b55750604080518082018252601081527f47504c2d332e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163b590616068565b156163f557505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261645490616068565b806164b95750604080518082018252601181527f4c47504c2d322e312d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526164b990616068565b156164f957505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261655890616068565b806165bd5750604080518082018252601181527f4c47504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526165bd90616068565b156165fd57505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261665c90616068565b1561669c57505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526166fb90616068565b1561673b57505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261679a90616068565b156167da57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261683990616068565b1561687957505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e3000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526168d890616068565b1561691857505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261697790616068565b806169dc5750604080518082018252601181527f4147504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526169dc90616068565b15616a1c57505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e3100000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616a7b90616068565b15616abb57505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151613b639290602001619437565b60608060005b8451811015616b5d5781858281518110616af457616af4618cf6565b6020026020010151604051602001616b0d92919061886f565b604051602081830303815290604052915060018551616b2c9190618589565b8114616b555781604051602001616b4391906195a0565b60405160208183030381529060405291505b600101616ad8565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081616b765790505090508381600081518110616ba157616ba1618cf6565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110616bf557616bf5618cf6565b60200260200101819052508181600281518110616c1457616c14618cf6565b6020908102919091010152949350505050565b6020808301518351835192840151600093616c45929184919061761e565b14159392505050565b60408051808201909152600080825260208201526000616c80846000015185602001518560000151866020015161772f565b9050836020015181616c929190618589565b84518590616ca1908390618589565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015616cd5575081613997565b6020808301519084015160019114616cfc5750815160208481015190840151829020919020145b8015616d2d57825184518590616d13908390618589565b9052508251602085018051616d29908390619424565b9052505b509192915050565b6040805180820190915260008082526020820152616d5483838361784f565b5092915050565b60606000826000015167ffffffffffffffff811115616d7c57616d7c61804e565b6040519080825280601f01601f191660200182016040528015616da6576020820181803683370190505b5090506000602082019050616d5481856020015186600001516178fa565b60606000616dd0613d8d565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081616ded57905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616e4890618e63565b935060ff1681518110616e5d57616e5d618cf6565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001616eae91906195e1565b604051602081830303815290604052828280616ec990618e63565b935060ff1681518110616ede57616ede618cf6565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280616f2b90618e63565b935060ff1681518110616f4057616f40618cf6565b602002602001018190525082604051602001616f5c9190618d91565b604051602081830303815290604052828280616f7790618e63565b935060ff1681518110616f8c57616f8c618cf6565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280616fd990618e63565b935060ff1681518110616fee57616fee618cf6565b60200260200101819052506170038784617974565b828261700e81618e63565b935060ff168151811061702357617023618cf6565b6020908102919091010152855151156170cf5760408051808201909152600b81527f2d2d7265666572656e63650000000000000000000000000000000000000000006020820152828261707581618e63565b935060ff168151811061708a5761708a618cf6565b60200260200101819052506170a3866000015184617974565b82826170ae81618e63565b935060ff16815181106170c3576170c3618cf6565b60200260200101819052505b85608001511561713d5760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261711881618e63565b935060ff168151811061712d5761712d618cf6565b60200260200101819052506171a3565b84156171a35760408051808201909152601281527f2d2d726571756972655265666572656e636500000000000000000000000000006020820152828261718281618e63565b935060ff168151811061719757617197618cf6565b60200260200101819052505b6040860151511561723f5760408051808201909152600d81527f2d2d756e73616665416c6c6f7700000000000000000000000000000000000000602082015282826171ed81618e63565b935060ff168151811061720257617202618cf6565b6020026020010181905250856040015182828061721e90618e63565b935060ff168151811061723357617233618cf6565b60200260200101819052505b8560600151156172a95760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261728881618e63565b935060ff168151811061729d5761729d618cf6565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156172c7576172c761804e565b6040519080825280602002602001820160405280156172fa57816020015b60608152602001906001900390816172e55790505b50905060005b8260ff168160ff16101561735357838160ff168151811061732357617323618cf6565b6020026020010151828260ff168151811061734057617340618cf6565b6020908102919091010152600101617300565b50979650505050505050565b6040805180820190915260008082526020820152815183511015617384575081613997565b8151835160208501516000929161739a91619424565b6173a49190618589565b602084015190915060019082146173c5575082516020840151819020908220145b80156173e0578351855186906173dc908390618589565b9052505b50929392505050565b600080826000015161740d856000015186602001518660000151876020015161772f565b6174179190619424565b90505b8351602085015161742b9190619424565b8111616d54578161743b81619626565b92505082600001516174728560200151836174569190618589565b86516174629190618589565b838660000151876020015161772f565b61747c9190619424565b905061741a565b6060600061749184846173e9565b61749c906001619424565b67ffffffffffffffff8111156174b4576174b461804e565b6040519080825280602002602001820160405280156174e757816020015b60608152602001906001900390816174d25790505b50905060005b815181101561575c5761750361597e8686616d35565b82828151811061751557617515618cf6565b60209081029190910101526001016174ed565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310617571577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831061759d576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106175bb57662386f26fc10000830492506010015b6305f5e10083106175d3576305f5e100830492506008015b61271083106175e757612710830492506004015b606483106175f9576064830492506002015b600a83106139975760010192915050565b600061761683836179b4565b159392505050565b60008085841161772557602084116176d15760008415617669576001617645866020618589565b617650906008619640565b61765b90600261973e565b6176659190618589565b1990505b83518116856176788989619424565b6176829190618589565b805190935082165b8181146176bc578784116176a4578794505050505061538d565b836176ae8161974a565b94505082845116905061768a565b6176c68785619424565b94505050505061538d565b8383206176de8588618589565b6176e89087619424565b91505b85821061772357848220808203617710576177068684619424565b935050505061538d565b61771b600184618589565b9250506176eb565b505b5092949350505050565b6000838186851161783a57602085116177e9576000851561777b576001617757876020618589565b617762906008619640565b61776d90600261973e565b6177779190618589565b1990505b8451811660008761778c8b8b619424565b6177969190618589565b855190915083165b8281146177db578186106177c3576177b68b8b619424565b965050505050505061538d565b856177cd81619626565b96505083865116905061779e565b85965050505050505061538d565b508383206000905b6177fb8689618589565b821161783857858320808203617817578394505050505061538d565b617822600185619424565b935050818061783090619626565b9250506177f1565b505b6178448787619424565b979650505050505050565b60408051808201909152600080825260208201526000617881856000015186602001518660000151876020015161772f565b60208087018051918601919091525190915061789d9082618589565b8352845160208601516178b09190619424565b81036178bf57600085526178f1565b835183516178cd9190619424565b855186906178dc908390618589565b90525083516178eb9082619424565b60208601525b50909392505050565b602081106179325781518352617911602084619424565b925061791e602083619424565b915061792b602082618589565b90506178fa565b6000198115617961576001617948836020618589565b6179549061010061973e565b61795e9190618589565b90505b9151835183169219169190911790915250565b606060006179828484613e60565b805160208083015160405193945061799c93909101619761565b60405160208183030381529060405291505092915050565b81518151600091908111156179c7575081515b6020808501519084015160005b83811015617a805782518251808214617a50576000196020871015617a2f57600184617a01896020618589565b617a0b9190619424565b617a16906008619640565b617a2190600261973e565b617a2b9190618589565b1990505b8181168382168181039114617a4d5797506139979650505050505050565b50505b617a5b602086619424565b9450617a68602085619424565b93505050602081617a799190619424565b90506179d4565b508451865161450e91906197b9565b610c9f806197da83390190565b610ec28061a47983390190565b610a6f8061b33b83390190565b610b3f8061bdaa83390190565b6120728061c8e983390190565b6040518060e00160405280606081526020016060815260200160608152602001600015158152602001600015158152602001600015158152602001617b13617b18565b905290565b60405180610100016040528060001515815260200160001515815260200160608152602001600080191681526020016060815260200160608152602001600015158152602001617b136040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b81811015617bca5783516001600160a01b0316835260209384019390920191600101617ba3565b509095945050505050565b60005b83811015617bf0578181015183820152602001617bd8565b50506000910152565b60008151808452617c11816020860160208601617bd5565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617d21577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015617d07577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352617cf1848651617bf9565b6020958601959094509290920191600101617cb7565b509197505050602094850194929092019150600101617c4d565b50929695505050505050565b600081518084526020840193506020830160005b82811015617d815781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101617d41565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617d21577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752617df76040880182617bf9565b9050602082015191508681036020880152617e128183617d2d565b965050506020938401939190910190600101617db3565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617d21577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452617e8b858351617bf9565b94506020938401939190910190600101617e51565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617d21577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152617f216040870182617d2d565b9550506020938401939190910190600101617ec8565b600060208284031215617f4957600080fd5b81518015158114613a9057600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff8816604083015286606083015260038610618013577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a083015261803460c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600181811c9082168061809157607f821691505b602082108103615c59577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b601f82111561811457806000526020600020601f840160051c810160208510156180f15750805b601f840160051c820191505b8181101561811157600081556001016180fd565b50505b505050565b815167ffffffffffffffff8111156181335761813361804e565b61814781618141845461807d565b846180ca565b6020601f82116001811461817b57600083156181635750848201515b600019600385901b1c1916600184901b178455618111565b600084815260208120601f198516915b828110156181ab578785015182556020948501946001909201910161818b565b50848210156181c95786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6000602082840312156181ea57600080fd5b5051919050565b6060815260006182046060830186617bf9565b602083019490945250901515604090910152919050565b600081546001600160a01b038116845260ff8160a01c1615156020850152506001600160a01b0360018301541660408401526002820160a06060850152600081546182658161807d565b8060a0880152600182166000811461828457600181146182be576182f2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831660c089015260c082151560051b89010193506182f2565b84600052602060002060005b838110156182e95781548a820160c001526001909101906020016182ca565b890160c0019450505b50505060038401546080860152809250505092915050565b60c08152600061831d60c0830189617bf9565b62ffffff881660208401526001600160a01b038716604084015282810360608401526183498187617bf9565b905060ff8516608084015282810360a0840152618366818561821b565b9998505050505050505050565b6001600160a01b0384168152826020820152606060408201526000615c3f6060830184617bf9565b60c0815260006183ae60c0830189617bf9565b8760208401526001600160a01b038716604084015282810360608401526183d58187617bf9565b6080840195909552505090151560a090910152949350505050565b6001600160a01b038616815284602082015260a06040820152600061841860a0830186617bf9565b6060830194909452509015156080909101529392505050565b82815260406020820152600061538d6040830184617bf9565b6001600160a01b038316815260406020820152600061538d6040830184617bf9565b6040516060810167ffffffffffffffff8111828210171561848f5761848f61804e565b60405290565b60008067ffffffffffffffff8411156184b0576184b061804e565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff821117156184df576184df61804e565b6040528381529050808284018510156184f757600080fd5b61575c846020830185617bd5565b600082601f83011261851657600080fd5b613a9083835160208501618495565b60006020828403121561853757600080fd5b815167ffffffffffffffff81111561854e57600080fd5b61399384828501618505565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156139975761399761855a565b610120815260006185b161012083018b617bf9565b6001600160a01b038a16602084015288604084015287606084015286608084015282810360a08401526185e48187617bf9565b855160c08501526020860151151560e08501529050828103610100840152613c83818561821b565b60e08152600061861f60e0830189617bf9565b8760208401526001600160a01b038716604084015282810360608401526186468187617bf9565b855160808501526020860151151560a0850152905082810360c0840152618366818561821b565b60a08152600061868060a0830187617bf9565b82810360208401526186928187617bf9565b8551604085015260208601511515606085015290508281036080840152617844818561821b565b60a0815260006186cc60a0830188617bf9565b6001600160a01b038716602084015282810360408401526186ed8187617bf9565b90508460608401528281036080840152618707818561821b565b98975050505050505050565b60a08152600061872660a0830188617bf9565b6001600160a01b038716602084015282810360408401526187478187617bf9565b905060ff851660608401528281036080840152618707818561821b565b60a08152600061877760a0830188617bf9565b6001600160a01b038716602084015282810360408401526187988187617bf9565b606084019590955250509015156080909101529392505050565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516187ea81601a850160208801617bd5565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161882781601c840160208801617bd5565b01601c01949350505050565b602081526000613a906020830184617bf9565b60006020828403121561885857600080fd5b81516001600160a01b0381168114613a9057600080fd5b60008351618881818460208801617bd5565b835190830190618895818360208801617bd5565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516188d681601a850160208801617bd5565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a918401918201528351618913816033840160208801617bd5565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000613a906080830184617bf9565b6000602082840312156189a257600080fd5b815167ffffffffffffffff8111156189b957600080fd5b8201601f810184136189ca57600080fd5b61399384825160208401618495565b600085516189eb818460208a01617bd5565b7f2f000000000000000000000000000000000000000000000000000000000000009083019081528551618a25816001840160208a01617bd5565b7f2f00000000000000000000000000000000000000000000000000000000000000600192909101918201528451618a63816002840160208901617bd5565b6001818301019150507f2f0000000000000000000000000000000000000000000000000000000000000060018201528351618aa5816002840160208801617bd5565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b604081526000618af06040830184617bf9565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251618b6781601f850160208701617bd5565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b604081526000618bd46040830184617bf9565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b604081526000618c266040830184617bf9565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251618c9d816014850160208701617bd5565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b604081526000618ce46040830185617bf9565b8281036020840152613a8c8185617bf9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f2200000000000000000000000000000000000000000000000000000000000000815260008251618d5d816001850160208701617bd5565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b60008251618da3818460208701617bd5565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e747261637420000000000000000000000000000000000000000000604082015260008251618e5681604b850160208701617bd5565b91909101604b0192915050565b600060ff821660ff8103618e7957618e7961855a565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c69400000000000000000000000000000000000000000000000602082015260008251618ee0816029850160208701617bd5565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000613a906080830184617bf9565b600060208284031215618f4657600080fd5b815167ffffffffffffffff811115618f5d57600080fd5b820160608185031215618f6f57600080fd5b618f7761846c565b81518060030b8114618f8857600080fd5b8152602082015167ffffffffffffffff811115618fa457600080fd5b618fb086828501618505565b602083015250604082015167ffffffffffffffff811115618fd057600080fd5b618fdc86828501618505565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f2200000000000000000000000000000000000000000000000000000000000000602082015260008251619048816021850160208701617bd5565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351619234816021850160208801617bd5565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161927181602e840160208801617bd5565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a200000000000000000000000000000000000000000000000602082015260008251618ee0816029850160208701617bd5565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251619339816022850160208701617bd5565b9190910160220192915050565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161937e81600e850160208701617bd5565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b808201808211156139975761399761855a565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161946f816018850160208801617bd5565b7f20696e200000000000000000000000000000000000000000000000000000000060189184019182015283516194ac81601c840160208801617bd5565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b600082516195b2818460208701617bd5565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161961981601c850160208701617bd5565b91909101601c0192915050565b600060001982036196395761963961855a565b5060010190565b80820281158282048414176139975761399761855a565b6001815b6001841115619692578085048111156196765761967661855a565b600184161561968457908102905b60019390931c92800261965b565b935093915050565b6000826196a957506001613997565b816196b657506000613997565b81600181146196cc57600281146196d6576196f2565b6001915050613997565b60ff8411156196e7576196e761855a565b50506001821b613997565b5060208310610133831016604e8410600b8410161715619715575081810a613997565b6197226000198484619657565b80600019048211156197365761973661855a565b029392505050565b6000613a90838361969a565b6000816197595761975961855a565b506000190190565b60008351619773818460208801617bd5565b7f3a0000000000000000000000000000000000000000000000000000000000000090830190815283516197ad816001840160208801617bd5565b01600101949350505050565b8181036000831280158383131683831282161715616d5457616d5461855a56fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212205f76808fb3dc6dacf4bd766b2d0bf9d6beb64856c952cec8e267368511bd936a64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610e9e806100246000396000f3fe60806040526004361061006e5760003560e01c8063c51316911161004b578063c5131691146100d5578063c9028a36146100f5578063e04d4f9714610115578063f05b6abf1461012857005b8063357fc5a214610077578063676cc054146100975780636ed70169146100c057005b3661007557005b005b34801561008357600080fd5b506100756100923660046106ec565b610148565b6100aa6100a5366004610728565b6101de565b6040516100b79190610823565b60405180910390f35b3480156100cc57600080fd5b50610075610222565b3480156100e157600080fd5b506100756100f03660046106ec565b610257565b34801561010157600080fd5b50610075610110366004610836565b610332565b610075610123366004610996565b61036e565b34801561013457600080fd5b50610075610143366004610a82565b6103b2565b6101506103e7565b61017273ffffffffffffffffffffffffffffffffffffffff831633838661042a565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101d96001600055565b505050565b6040516060907f3658b46bab672c7672b69c2f0feda706eabdb7d2231421c96e9049b2db5e7eee90600090a1506040805160208101909152600081525b9392505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b61025f6103e7565b600061026c600285610b6c565b9050806000036102a8576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102ca73ffffffffffffffffffffffffffffffffffffffff841633848461042a565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101d96001600055565b7f689a5a5cb55e795ffe4cd8b419cd3bb0a3373974c54d25f64e734d7388b93e9b3382604051610363929190610bf0565b60405180910390a150565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa33348585856040516103a5959493929190610ce2565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103a59493929190610d6c565b600260005403610423576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526104bf9085906104c5565b50505050565b60006104e773ffffffffffffffffffffffffffffffffffffffff841683610560565b9050805160001415801561050c57508080602001905181019061050a9190610e2f565b155b156101d9576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061021b83836000846000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105939190610e4c565b60006040518083038185875af1925050503d80600081146105d0576040519150601f19603f3d011682016040523d82523d6000602084013e6105d5565b606091505b50915091506105e58683836105ef565b9695505050505050565b606082610604576105ff8261067e565b61021b565b8151158015610628575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610677576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610557565b508061021b565b80511561068e5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106e757600080fd5b919050565b60008060006060848603121561070157600080fd5b83359250610711602085016106c3565b915061071f604085016106c3565b90509250925092565b6000806000838503604081121561073e57600080fd5b602081121561074c57600080fd5b50839250602084013567ffffffffffffffff81111561076a57600080fd5b8401601f8101861361077b57600080fd5b803567ffffffffffffffff81111561079257600080fd5b8660208284010111156107a457600080fd5b939660209190910195509293505050565b60005b838110156107d05781810151838201526020016107b8565b50506000910152565b600081518084526107f18160208601602086016107b5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061021b60208301846107d9565b60006020828403121561084857600080fd5b813567ffffffffffffffff81111561085f57600080fd5b82016080818503121561021b57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156108e7576108e7610871565b604052919050565b600082601f83011261090057600080fd5b813567ffffffffffffffff81111561091a5761091a610871565b61094b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016108a0565b81815284602083860101111561096057600080fd5b816020850160208301376000918101602001919091529392505050565b80151581146106c057600080fd5b80356106e78161097d565b6000806000606084860312156109ab57600080fd5b833567ffffffffffffffff8111156109c257600080fd5b6109ce868287016108ef565b9350506020840135915060408401356109e68161097d565b809150509250925092565b600067ffffffffffffffff821115610a0b57610a0b610871565b5060051b60200190565b600082601f830112610a2657600080fd5b8135610a39610a34826109f1565b6108a0565b8082825260208201915060208360051b860101925085831115610a5b57600080fd5b602085015b83811015610a78578035835260209283019201610a60565b5095945050505050565b600080600060608486031215610a9757600080fd5b833567ffffffffffffffff811115610aae57600080fd5b8401601f81018613610abf57600080fd5b8035610acd610a34826109f1565b8082825260208201915060208360051b850101925088831115610aef57600080fd5b602084015b83811015610b3157803567ffffffffffffffff811115610b1357600080fd5b610b228b6020838901016108ef565b84525060209283019201610af4565b509550505050602084013567ffffffffffffffff811115610b5157600080fd5b610b5d86828701610a15565b92505061071f6040850161098b565b600082610ba2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015273ffffffffffffffffffffffffffffffffffffffff610c2e836106c3565b16604082015273ffffffffffffffffffffffffffffffffffffffff610c55602084016106c3565b166060820152600080604084013590508060808401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610ca157600080fd5b830160208101903567ffffffffffffffff811115610cbe57600080fd5b803603821315610ccd57600080fd5b608060a08501526105e560c085018284610ba7565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610d1760a08301866107d9565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610d62578151865260209586019590910190600101610d44565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610dff577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610dea8583516107d9565b94506020938401939190910190600101610db0565b505050508281036040840152610e158186610d30565b915050610e26606083018415159052565b95945050505050565b600060208284031215610e4157600080fd5b815161021b8161097d565b60008251610e5e8184602087016107b5565b919091019291505056fea26469706673582212200208dfaef53d7ec7d471b3a513486f45b234e5fb6727c50beff735b8aa974ee464736f6c634300081a00336080604052348015600f57600080fd5b50604051610a6f380380610a6f833981016040819052602c916050565b600080546001600160a01b0319166001600160a01b0392909216919091179055607e565b600060208284031215606157600080fd5b81516001600160a01b0381168114607757600080fd5b9392505050565b6109e28061008d6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b5780637a34d8bb146100a4575b600080fd5b61005961005436600461061e565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b23660046106be565b61032a565b60008383836040516024016100ce939291906107ba565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490915073ffffffffffffffffffffffffffffffffffffffff8087169163095ea7b391166101758960026107e4565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016020604051808303816000875af11580156101e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102099190610824565b61023f576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160a081018252610321808252600160208084018290528385019290925283518083018552600080825260608501919091526080840181905284518086018652828152928301919091525492517f7b15118b0000000000000000000000000000000000000000000000000000000081529192909173ffffffffffffffffffffffffffffffffffffffff90911690637b15118b906102ed908c908c908c90899088908a906004016108bd565b600060405180830381600087803b15801561030757600080fd5b505af115801561031b573d6000803e3d6000fd5b50505050505050505050505050565b6000838383604051602401610341939291906107ba565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f9700000000000000000000000000000000000000000000000000000000179052815160a081018352610321808252600182840181905282850191909152835192830184526000808452606083019390935260808201839052915492517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810183905293945092909188169063095ea7b3906044016020604051808303816000875af115801561046c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104909190610824565b506040805180820182528281526001602082015260005491517f06cb8983000000000000000000000000000000000000000000000000000000008152909173ffffffffffffffffffffffffffffffffffffffff16906306cb8983906102ed908c908c90899087908a90600401610938565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261054157600080fd5b81356020830160008067ffffffffffffffff84111561056257610562610501565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff821117156105af576105af610501565b6040528381529050808284018710156105c757600080fd5b838360208301376000602085830101528094505050505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461060857600080fd5b919050565b801515811461061b57600080fd5b50565b60008060008060008060c0878903121561063757600080fd5b863567ffffffffffffffff81111561064e57600080fd5b61065a89828a01610530565b96505060208701359450610670604088016105e4565b9350606087013567ffffffffffffffff81111561068c57600080fd5b61069889828a01610530565b9350506080870135915060a08701356106b08161060d565b809150509295509295509295565b600080600080600060a086880312156106d657600080fd5b853567ffffffffffffffff8111156106ed57600080fd5b6106f988828901610530565b955050610708602087016105e4565b9350604086013567ffffffffffffffff81111561072457600080fd5b61073088828901610530565b9350506060860135915060808601356107488161060d565b809150509295509295909350565b6000815180845260005b8181101561077c57602081850181015186830182015201610760565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6060815260006107cd6060830186610756565b602083019490945250901515604090910152919050565b8082018082111561081e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b60006020828403121561083657600080fd5b81516108418161060d565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff815116825260208101511515602083015273ffffffffffffffffffffffffffffffffffffffff60408201511660408301526000606082015160a060608501526108a960a0850182610756565b608093840151949093019390935250919050565b60e0815260006108d060e0830189610756565b87602084015273ffffffffffffffffffffffffffffffffffffffff8716604084015282810360608401526109048187610756565b855160808501526020860151151560a0850152905082810360c084015261092b8185610848565b9998505050505050505050565b60c08152600061094b60c0830188610756565b73ffffffffffffffffffffffffffffffffffffffff8716602084015282810360408401526109798187610756565b85516060850152602086015115156080850152905082810360a08401526109a08185610848565b9897505050505050505056fea26469706673582212209f622dcab5d8978e2fd5899f3e29df8a3e10b78ba00381cd9537eaa5c325f63464736f6c634300081a0033608060405234801561001057600080fd5b50604051610b3f380380610b3f83398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a348061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fd565b6103a0565b6101416101da36600461081f565b610419565b6101046101ed366004610841565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610884565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108b0565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e90610366908490899089908990899060040161091b565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff8111156107b257600080fd5b8601601f810188136107c357600080fd5b803567ffffffffffffffff8111156107da57600080fd5b8860208284010111156107ec57600080fd5b959894975092955050506020019190565b60006020828403121561080f57600080fd5b61081882610737565b9392505050565b6000806040838503121561083257600080fd5b50508035926020909101359150565b60008060006060848603121561085657600080fd5b61085f84610737565b925061086d60208501610737565b915061087b60408501610737565b90509250925092565b6000806040838503121561089757600080fd5b823591506108a760208401610737565b90509250929050565b6000602082840312156108c257600080fd5b8151801515811461081857600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610953576020818401810151610100878401015201610935565b5060008482016101000152602089015173ffffffffffffffffffffffffffffffffffffffff811660a0860152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168401915050604088015160c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401526101008382030160608401526109f2610100820185876108d2565b9897505050505050505056fea2646970667358221220eb281f71b1a10df3d88243dcf9e9ff7f57e8f4bc6018408c57e8ef3bb671313d64736f6c634300081a003360c060405234801561001057600080fd5b5060405161207238038061207283398101604081905261002f916101f0565b6001600160a01b038216158061004c57506001600160a01b038116155b1561006a5760405163d92e233d60e01b815260040160405180910390fd5b60066100768982610342565b5060076100838882610342565b506008805460ff191660ff881617905560808590528360028111156100aa576100aa610400565b60a08160028111156100be576100be610400565b905250600192909255600080546001600160a01b039283166001600160a01b0319909116179055600880549190921661010002610100600160a81b0319909116179055506104169350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261013357600080fd5b81516001600160401b0381111561014c5761014c61010c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561017a5761017a61010c565b60405281815283820160200185101561019257600080fd5b60005b828110156101b157602081860181015183830182015201610195565b506000918101602001919091529392505050565b8051600381106101d457600080fd5b919050565b80516001600160a01b03811681146101d457600080fd5b600080600080600080600080610100898b03121561020d57600080fd5b88516001600160401b0381111561022357600080fd5b61022f8b828c01610122565b60208b015190995090506001600160401b0381111561024d57600080fd5b6102598b828c01610122565b975050604089015160ff8116811461027057600080fd5b60608a0151909650945061028660808a016101c5565b60a08a0151909450925061029c60c08a016101d9565b91506102aa60e08a016101d9565b90509295985092959890939650565b600181811c908216806102cd57607f821691505b6020821081036102ed57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561033d57806000526020600020601f840160051c8101602085101561031a5750805b601f840160051c820191505b8181101561033a5760008155600101610326565b50505b505050565b81516001600160401b0381111561035b5761035b61010c565b61036f8161036984546102b9565b846102f3565b6020601f8211600181146103a3576000831561038b5750848201515b600019600385901b1c1916600184901b17845561033a565b600084815260208120601f198516915b828110156103d357878501518255602094850194600190920191016103b3565b50848210156103f15786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a051611c1b61045760003960006103440152600081816102f001528181610bdc01528181610ce201528181610efe01526110040152611c1b6000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c806395d89b41116100f9578063ccc7759911610097578063eddeb12311610071578063eddeb12314610461578063f2441b3214610474578063f687d12a14610494578063fc5fecd5146104a757600080fd5b8063ccc77599146103d4578063d9eeebed146103e7578063dd62ed3e1461041b57600080fd5b8063b84c8246116100d3578063b84c824614610386578063c47f00271461039b578063c7012626146103ae578063c835d7cc146103c157600080fd5b806395d89b4114610337578063a3413d031461033f578063a9059cbb1461037357600080fd5b80633ce4a5bc116101665780634d8943bb116101405780634d8943bb146102ac57806370a08231146102b557806385e1f4d0146102eb5780638b851b951461031257600080fd5b80633ce4a5bc1461024657806342966c681461028657806347e7ef241461029957600080fd5b806318160ddd1161019757806318160ddd1461021657806323b872dd1461021e578063313ce5671461023157600080fd5b806306fdde03146101be578063091d2788146101dc578063095ea7b3146101f3575b600080fd5b6101c66104ba565b6040516101d39190611648565b60405180910390f35b6101e560015481565b6040519081526020016101d3565b610206610201366004611687565b61054c565b60405190151581526020016101d3565b6005546101e5565b61020661022c3660046116b3565b610563565b60085460405160ff90911681526020016101d3565b61026173735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d3565b6102066102943660046116f4565b6105fa565b6102066102a7366004611687565b61060e565b6101e560025481565b6101e56102c336600461170d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6101e57f000000000000000000000000000000000000000000000000000000000000000081565b60085461026190610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6101c6610767565b6103667f000000000000000000000000000000000000000000000000000000000000000081565b6040516101d3919061172a565b610206610381366004611687565b610776565b610399610394366004611832565b610783565b005b6103996103a9366004611832565b6107e0565b6102066103bc366004611883565b610839565b6103996103cf36600461170d565b610988565b6103996103e236600461170d565b610a9c565b6103ef610bb0565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101d3565b6101e56104293660046118dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205490565b61039961046f3660046116f4565b610dce565b6000546102619073ffffffffffffffffffffffffffffffffffffffff1681565b6103996104a23660046116f4565b610e50565b6103ef6104b53660046116f4565b610ed2565b6060600680546104c990611915565b80601f01602080910402602001604051908101604052809291908181526020018280546104f590611915565b80156105425780601f1061051757610100808354040283529160200191610542565b820191906000526020600020905b81548152906001019060200180831161052557829003601f168201915b5050505050905090565b60006105593384846110ee565b5060015b92915050565b60006105708484846111f7565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460209081526040808320338452909152902054828110156105db576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105ef85336105ea8685611997565b6110ee565b506001949350505050565b600061060633836113b2565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab1480159061064c575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156106755750600854610100900473ffffffffffffffffffffffffffffffffffffffff163314155b156106ac576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106b683836114f4565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526107569186906119aa565b60405180910390a250600192915050565b6060600780546104c990611915565b60006105593384846111f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab146107d0576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60076107dc8282611a1b565b5050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461082d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60066107dc8282611a1b565b6000806000610846610bb0565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156108d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fc9190611b34565b610932576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61093c33856113b2565b60025460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161097591899189918791611b56565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146109d5576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a22576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610ae9576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610b36576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c679190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610cb6576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d699190611ba2565b905080600003610da5576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060025460015483610db89190611bbb565b610dc29190611bd2565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e1b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610a91565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e9d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610f65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f899190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610fd8576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015611067573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108b9190611ba2565b9050806000036110c7576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000906110d78784611bbb565b6110e19190611bd2565b9296929550919350505050565b73ffffffffffffffffffffffffffffffffffffffff831661113b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611188576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611244576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611291576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040902054818110156112f1576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112fb8282611997565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260036020526040808220939093559085168152908120805484929061133e908490611bd2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113a491815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff82166113ff576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260409020548181101561145f576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114698282611997565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260036020526040812091909155600580548492906114a4908490611997565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016111ea565b73ffffffffffffffffffffffffffffffffffffffff8216611541576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008282546115539190611bd2565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805483929061158d908490611bd2565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561160a576020818501810151868301820152016115ee565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061165b60208301846115e4565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461168457600080fd5b50565b6000806040838503121561169a57600080fd5b82356116a581611662565b946020939093013593505050565b6000806000606084860312156116c857600080fd5b83356116d381611662565b925060208401356116e381611662565b929592945050506040919091013590565b60006020828403121561170657600080fd5b5035919050565b60006020828403121561171f57600080fd5b813561165b81611662565b6020810160038310611765577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff8411156117b5576117b561176b565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff821117156118025761180261176b565b60405283815290508082840185101561181a57600080fd5b83836020830137600060208583010152509392505050565b60006020828403121561184457600080fd5b813567ffffffffffffffff81111561185b57600080fd5b8201601f8101841361186c57600080fd5b61187b8482356020840161179a565b949350505050565b6000806040838503121561189657600080fd5b823567ffffffffffffffff8111156118ad57600080fd5b8301601f810185136118be57600080fd5b6118cd8582356020840161179a565b95602094909401359450505050565b600080604083850312156118ef57600080fd5b82356118fa81611662565b9150602083013561190a81611662565b809150509250929050565b600181811c9082168061192957607f821691505b602082108103611962577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561055d5761055d611968565b6040815260006119bd60408301856115e4565b90508260208301529392505050565b601f821115611a1657806000526020600020601f840160051c810160208510156119f35750805b601f840160051c820191505b81811015611a1357600081556001016119ff565b50505b505050565b815167ffffffffffffffff811115611a3557611a3561176b565b611a4981611a438454611915565b846119cc565b6020601f821160018114611a9b5760008315611a655750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611a13565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015611ae95787850151825560209485019460019092019101611ac9565b5084821015611b2557868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b600060208284031215611b4657600080fd5b8151801515811461165b57600080fd5b608081526000611b6960808301876115e4565b6020830195909552506040810192909252606090910152919050565b600060208284031215611b9757600080fd5b815161165b81611662565b600060208284031215611bb457600080fd5b5051919050565b808202811582820484141761055d5761055d611968565b8082018082111561055d5761055d61196856fea26469706673582212202a06c5d72036d88c206ff2bfdd016b3ce8555bc0090e8bb5487bc61ea043732b64736f6c634300081a0033a2646970667358221220bcd506557c9fdba722de8895e7bbb3af55c02c273ea25e54827100582a2cfce464736f6c634300081a0033", } // 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 5e53049e8..fb8c919a2 100644 --- a/v2/pkg/gatewayzevm.sol/gatewayzevm.go +++ b/v2/pkg/gatewayzevm.sol/gatewayzevm.go @@ -62,7 +62,7 @@ type RevertOptions 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\":\"MAX_MESSAGE_SIZE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PROTOCOL_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\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"callOptions\",\"type\":\"tuple\",\"internalType\":\"structCallOptions\",\"components\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"isArbitraryCall\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"call\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\":\"structMessageContext\",\"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\":\"structMessageContext\",\"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\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"execute\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structMessageContext\",\"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\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"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\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"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\"},{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"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\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"callOptions\",\"type\":\"tuple\",\"internalType\":\"structCallOptions\",\"components\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"isArbitraryCall\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"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\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"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\"},{\"name\":\"callOptions\",\"type\":\"tuple\",\"internalType\":\"structCallOptions\",\"components\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"isArbitraryCall\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Called\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"callOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structCallOptions\",\"components\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"isArbitraryCall\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\":\"Withdrawn\",\"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\"},{\"name\":\"callOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structCallOptions\",\"components\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"isArbitraryCall\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\":\"CallerIsNotProtocol\",\"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\":\"InsufficientGasLimit\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZetaAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"MessageSizeExceeded\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrProtocol\",\"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: "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516143726100fd60003960008181612bbd01528181612be60152612dbc01526143726000f3fe6080604052600436106101e75760003560e01c806352d1902d116101025780639d4ba46511610095578063c39aca3711610064578063c39aca37146106a2578063d547741f146106c2578063e63ab1e9146106e2578063f45346dc1461071657600080fd5b80639d4ba465146105f7578063a217fddf14610617578063ad3cb1cc1461062c578063bcf7f32b1461068257600080fd5b80638456cb59116100d15780638456cb591461054757806391d148541461055c57806397a1cef1146105c157806397d340f5146105e157600080fd5b806352d1902d146104bb5780635c975abb146104d05780637b15118b146105075780637c0dcb5f1461052757600080fd5b80632722feee1161017a5780633b283933116101495780633b283933146104535780633f4ba83a14610473578063485cc955146104885780634f1ef286146104a857600080fd5b80632722feee146103cb5780632810ae63146103f35780632f2ff15d1461041357806336568abe1461043357600080fd5b80631cb5ea75116101b65780631cb5ea75146102f657806321501a951461031657806321e093b114610336578063248a9ca31461036e57600080fd5b806301ffc9a714610261578063048ae42c1461029657806306cb8983146102b6578063184b0793146102d657600080fd5b3661025c576101f4610736565b6000546001600160a01b0316331480159061022357503373735b14bb79463307aacbed86daf3322b1e6226ab14155b1561025a576040517fb3af013700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b34801561026d57600080fd5b5061028161027c366004613305565b610794565b60405190151581526020015b60405180910390f35b3480156102a257600080fd5b5061025a6102b1366004613499565b61082d565b3480156102c257600080fd5b5061025a6102d136600461356b565b610a2d565b3480156102e257600080fd5b5061025a6102f136600461363b565b610b20565b34801561030257600080fd5b5061025a61031136600461368b565b610c0f565b34801561032257600080fd5b5061025a610331366004613739565b610cd5565b34801561034257600080fd5b50600054610356906001600160a01b031681565b6040516001600160a01b03909116815260200161028d565b34801561037a57600080fd5b506103bd6103893660046137c5565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b60405190815260200161028d565b3480156103d757600080fd5b5061035673735b14bb79463307aacbed86daf3322b1e6226ab81565b3480156103ff57600080fd5b5061025a61040e3660046137de565b610e89565b34801561041f57600080fd5b5061025a61042e366004613883565b611021565b34801561043f57600080fd5b5061025a61044e366004613883565b61106b565b34801561045f57600080fd5b5061025a61046e3660046138b3565b6110bc565b34801561047f57600080fd5b5061025a61122d565b34801561049457600080fd5b5061025a6104a3366004613946565b611262565b61025a6104b6366004613974565b61149e565b3480156104c757600080fd5b506103bd6114bd565b3480156104dc57600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610281565b34801561051357600080fd5b5061025a6105223660046139ba565b6114ec565b34801561053357600080fd5b5061025a610542366004613a2c565b6116a2565b34801561055357600080fd5b5061025a6118b6565b34801561056857600080fd5b50610281610577366004613883565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156105cd57600080fd5b5061025a6105dc366004613ab1565b6118e8565b3480156105ed57600080fd5b506103bd61040081565b34801561060357600080fd5b5061025a610612366004613b15565b611a4c565b34801561062357600080fd5b506103bd600081565b34801561063857600080fd5b506106756040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161028d9190613be3565b34801561068e57600080fd5b5061025a61069d366004613bf6565b611cbf565b3480156106ae57600080fd5b5061025a6106bd366004613bf6565b611dd6565b3480156106ce57600080fd5b5061025a6106dd366004613883565b611fcc565b3480156106ee57600080fd5b506103bd7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b34801561072257600080fd5b5061025a610731366004613c94565b612010565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615610792576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061082757507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610835612206565b61083d610736565b865160000361085f5760405163d92e233d60e01b815260040160405180910390fd5b85600003610899576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816000036108d3576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006108e36060830183613cd6565b6108ee915085613d3b565b1115610926576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610933878785612287565b90506000336001600160a01b03167f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c8a898b868c6001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c89190613d75565b6040805180820182528c81526001602082015290516109f29695949392918f918f91908e90613eca565b60405180910390a350610a2460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050505050565b610a35612206565b610a3d610736565b8135600003610a78576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610400610a886060830183613cd6565b610a93915085613d3b565b1115610acb576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610aef86868686610ae136889003880188613f4c565b610aea87613fa4565b61258a565b610b1860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b6d576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b75610736565b6001600160a01b038216610b9c5760405163d92e233d60e01b815260040160405180910390fd5b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063c9028a3690610be190849060040161404c565b600060405180830381600087803b158015610bfb57600080fd5b505af1158015610b18573d6000803e3d6000fd5b610c17612206565b610c1f610736565b81600003610c59576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610400610c696060830183613cd6565b610c74915085613d3b565b1115610cac576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610aef8686868660405180604001604052808881526020016001151581525086610aea90613fa4565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d22576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d2a610736565b6001600160a01b038316610d515760405163d92e233d60e01b815260040160405180910390fd5b83600003610d8b576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dbe57506001600160a01b03831630145b15610df5576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610dff8484612771565b6000546040517f5bcfd6160000000000000000000000000000000000000000000000000000000081526001600160a01b0380861692635bcfd61692610e50928a9216908990889088906004016140bc565b600060405180830381600087803b158015610e6a57600080fd5b505af1158015610e7e573d6000803e3d6000fd5b505050505050505050565b610e91612206565b610e99610736565b8651600003610ebb5760405163d92e233d60e01b815260040160405180910390fd5b85600003610ef5576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8135600003610f30576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610400610f406060830183613cd6565b610f4b915085613d3b565b1115610f83576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fa18673735b14bb79463307aacbed86daf3322b1e6226ab612771565b60008054604051879233927f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c92610ff0928d926001600160a01b0316918d919081908d908d908d908d90614158565b60405180910390a3610a2460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461105b8161293f565b6110658383612949565b50505050565b6001600160a01b03811633146110ad576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110b78282612a36565b505050565b6110c4612206565b6110cc610736565b85516000036110ee5760405163d92e233d60e01b815260040160405180910390fd5b84600003611128576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006111386060830183613cd6565b611143915084613d3b565b111561117b576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111998573735b14bb79463307aacbed86daf3322b1e6226ab612771565b60008054604080518082018252838152600160208201529051879333937f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c936111fc938d936001600160a01b03909316928d92909182918d918d91908d90613eca565b60405180910390a3610b1860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6112578161293f565b61125f612afa565b50565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156112ad5750825b905060008267ffffffffffffffff1660011480156112ca5750303b155b9050811580156112d8575080155b1561130f576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156113705784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038716158061138d57506001600160a01b038616155b156113ab5760405163d92e233d60e01b815260040160405180910390fd5b6113b3612b8a565b6113bb612b8a565b6113c3612b92565b6113cb612ba2565b6113d6600087612949565b506114017f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87612949565b50600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0389161790558315610a245784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050505050565b6114a6612bb2565b6114af82612c82565b6114b98282612c8d565b5050565b60006114c7612db1565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b6114f4612206565b6114fc610736565b865160000361151e5760405163d92e233d60e01b815260040160405180910390fd5b85600003611558576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8135600003611593576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006115a36060830183613cd6565b6115ae915085613d3b565b11156115e6576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006115f487878535612287565b90506000336001600160a01b03167f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c8a898b868c6001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611665573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116899190613d75565b8c8c8c8c6040516109f299989796959493929190614158565b6116aa612206565b6116b2610736565b83516000036116d45760405163d92e233d60e01b815260040160405180910390fd5b8260000361170e576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61040061171e6060830183613cd6565b90501115611758576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006117648484612e13565b90506000336001600160a01b03167f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c87868886896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f99190613d75565b60405180604001604052808c6001600160a01b031663091d27886040518163ffffffff1660e01b8152600401602060405180830381865afa158015611842573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118669190613d75565b81526001602090910152604051611884969594939291908c906141b0565b60405180910390a35061106560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6118e08161293f565b61125f612e81565b6118f0612206565b6118f8610736565b835160000361191a5760405163d92e233d60e01b815260040160405180910390fd5b82600003611954576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006119646060830183613cd6565b9050111561199e576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119bc8373735b14bb79463307aacbed86daf3322b1e6226ab612771565b60008054604080518082018252838152600160208201529051859333937f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c93611a1b938b936001600160a01b03909316928b9290918291908b906141b0565b60405180910390a361106560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611a99576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611aa1610736565b6001600160a01b0384161580611abe57506001600160a01b038216155b15611adc5760405163d92e233d60e01b815260040160405180910390fd5b82600003611b16576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821673735b14bb79463307aacbed86daf3322b1e6226ab1480611b4957506001600160a01b03821630145b15611b80576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152602482018590528516906347e7ef24906044016020604051808303816000875af1158015611be8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0c9190614232565b611c42576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063c9028a3690611c8790849060040161404c565b600060405180830381600087803b158015611ca157600080fd5b505af1158015611cb5573d6000803e3d6000fd5b5050505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611d0c576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d14610736565b6001600160a01b0385161580611d3157506001600160a01b038316155b15611d4f5760405163d92e233d60e01b815260040160405180910390fd5b6040517f5bcfd6160000000000000000000000000000000000000000000000000000000081526001600160a01b03841690635bcfd61690611d9c90899089908990889088906004016140bc565b600060405180830381600087803b158015611db657600080fd5b505af1158015611dca573d6000803e3d6000fd5b50505050505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611e23576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e2b610736565b6001600160a01b0385161580611e4857506001600160a01b038316155b15611e665760405163d92e233d60e01b815260040160405180910390fd5b83600003611ea0576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480611ed357506001600160a01b03831630145b15611f0a576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015611f72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f969190614232565b611d4f576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546120068161293f565b6110658383612a36565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461205d576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612065610736565b6001600160a01b038316158061208257506001600160a01b038116155b156120a05760405163d92e233d60e01b815260040160405180910390fd5b816000036120da576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab148061210d57506001600160a01b03811630145b15612144576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af11580156121ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d09190614232565b6110b7576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01612281576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6000806000846001600160a01b031663fc5fecd5856040518263ffffffff1660e01b81526004016122ba91815260200190565b6040805180830381865afa1580156122d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122fa919061424f565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561237f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a39190614232565b6123d9576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018790526001600160a01b038616906323b872dd906064016020604051808303816000875af1158015612445573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124699190614232565b61249f576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018790526001600160a01b038616906342966c68906024016020604051808303816000875af11580156124ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125239190614232565b612559576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b85516000036125ac5760405163d92e233d60e01b815260040160405180910390fd5b81516040517ffc5fecd5000000000000000000000000000000000000000000000000000000008152600481019190915260009081906001600160a01b0388169063fc5fecd5906024016040805180830381865afa158015612611573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612635919061424f565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af11580156126ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126de9190614232565b612714576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b866001600160a01b0316336001600160a01b03167f306ee13f48319a123b222c69908e44dcf91abffc20cacc502e3cf5a4ff23e0e48a8989898960405161275f95949392919061427d565b60405180910390a35050505050505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af11580156127e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128059190614232565b61283b576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561289a57600080fd5b505af11580156128ae573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d80600081146128ff576040519150601f19603f3d011682016040523d82523d6000602084013e612904565b606091505b50509050806110b7576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61125f8133612efa565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16612a2c576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556129e23390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610827565b6000915050610827565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615612a2c576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610827565b612b02612f87565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b610792612fe2565b612b9a612fe2565b610792613049565b612baa612fe2565b61079261309a565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480612c4b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612c3f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610792576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006114b98161293f565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612d05575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612d0291810190613d75565b60015b612d4b576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114612da7576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401612d42565b6110b783836130a2565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610792576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061255d8383846001600160a01b031663091d27886040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e7c9190613d75565b612287565b612e89610736565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833612b6c565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166114b9576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401612d42565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610792576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610792576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613051612fe2565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b612564612fe2565b6130ab826130f8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156130f0576110b782826131a0565b6114b9613216565b806001600160a01b03163b600003613147576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401612d42565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516131bd9190614320565b600060405180830381855af49150503d80600081146131f8576040519150601f19603f3d011682016040523d82523d6000602084013e6131fd565b606091505b509150915061320d85838361324e565b95945050505050565b3415610792576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060826132635761325e826132c3565b61255d565b815115801561327a57506001600160a01b0384163b155b156132bc576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401612d42565b508061255d565b8051156132d35780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561331757600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461255d57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261338757600080fd5b813567ffffffffffffffff8111156133a1576133a1613347565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff811182821017156133ee576133ee613347565b60405281815283820160200185101561340657600080fd5b816020850160208301376000918101602001919091529392505050565b6001600160a01b038116811461125f57600080fd5b60008083601f84011261344a57600080fd5b50813567ffffffffffffffff81111561346257600080fd5b60208301915083602082850101111561347a57600080fd5b9250929050565b600060a0828403121561349357600080fd5b50919050565b600080600080600080600060c0888a0312156134b457600080fd5b873567ffffffffffffffff8111156134cb57600080fd5b6134d78a828b01613376565b9750506020880135955060408801356134ef81613423565b9450606088013567ffffffffffffffff81111561350b57600080fd5b6135178a828b01613438565b9095509350506080880135915060a088013567ffffffffffffffff81111561353e57600080fd5b61354a8a828b01613481565b91505092959891949750929550565b60006040828403121561349357600080fd5b60008060008060008060c0878903121561358457600080fd5b863567ffffffffffffffff81111561359b57600080fd5b6135a789828a01613376565b96505060208701356135b881613423565b9450604087013567ffffffffffffffff8111156135d457600080fd5b6135e089828a01613438565b90955093506135f490508860608901613559565b915060a087013567ffffffffffffffff81111561361057600080fd5b61361c89828a01613481565b9150509295509295509295565b60006080828403121561349357600080fd5b6000806040838503121561364e57600080fd5b823561365981613423565b9150602083013567ffffffffffffffff81111561367557600080fd5b61368185828601613629565b9150509250929050565b60008060008060008060a087890312156136a457600080fd5b863567ffffffffffffffff8111156136bb57600080fd5b6136c789828a01613376565b96505060208701356136d881613423565b9450604087013567ffffffffffffffff8111156136f457600080fd5b61370089828a01613438565b90955093505060608701359150608087013567ffffffffffffffff81111561361057600080fd5b60006060828403121561349357600080fd5b60008060008060006080868803121561375157600080fd5b853567ffffffffffffffff81111561376857600080fd5b61377488828901613727565b95505060208601359350604086013561378c81613423565b9250606086013567ffffffffffffffff8111156137a857600080fd5b6137b488828901613438565b969995985093965092949392505050565b6000602082840312156137d757600080fd5b5035919050565b600080600080600080600060e0888a0312156137f957600080fd5b873567ffffffffffffffff81111561381057600080fd5b61381c8a828b01613376565b9750506020880135955060408801359450606088013567ffffffffffffffff81111561384757600080fd5b6138538a828b01613438565b909550935061386790508960808a01613559565b915060c088013567ffffffffffffffff81111561353e57600080fd5b6000806040838503121561389657600080fd5b8235915060208301356138a881613423565b809150509250929050565b60008060008060008060a087890312156138cc57600080fd5b863567ffffffffffffffff8111156138e357600080fd5b6138ef89828a01613376565b9650506020870135945060408701359350606087013567ffffffffffffffff81111561391a57600080fd5b61392689828a01613438565b909450925050608087013567ffffffffffffffff81111561361057600080fd5b6000806040838503121561395957600080fd5b823561396481613423565b915060208301356138a881613423565b6000806040838503121561398757600080fd5b823561399281613423565b9150602083013567ffffffffffffffff8111156139ae57600080fd5b61368185828601613376565b600080600080600080600060e0888a0312156139d557600080fd5b873567ffffffffffffffff8111156139ec57600080fd5b6139f88a828b01613376565b975050602088013595506040880135613a1081613423565b9450606088013567ffffffffffffffff81111561384757600080fd5b60008060008060808587031215613a4257600080fd5b843567ffffffffffffffff811115613a5957600080fd5b613a6587828801613376565b945050602085013592506040850135613a7d81613423565b9150606085013567ffffffffffffffff811115613a9957600080fd5b613aa587828801613481565b91505092959194509250565b60008060008060808587031215613ac757600080fd5b843567ffffffffffffffff811115613ade57600080fd5b613aea87828801613376565b9450506020850135925060408501359150606085013567ffffffffffffffff811115613a9957600080fd5b60008060008060808587031215613b2b57600080fd5b8435613b3681613423565b9350602085013592506040850135613b4d81613423565b9150606085013567ffffffffffffffff811115613b6957600080fd5b613aa587828801613629565b60005b83811015613b90578181015183820152602001613b78565b50506000910152565b60008151808452613bb1816020860160208601613b75565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061255d6020830184613b99565b60008060008060008060a08789031215613c0f57600080fd5b863567ffffffffffffffff811115613c2657600080fd5b613c3289828a01613727565b9650506020870135613c4381613423565b9450604087013593506060870135613c5a81613423565b9250608087013567ffffffffffffffff811115613c7657600080fd5b613c8289828a01613438565b979a9699509497509295939492505050565b600080600060608486031215613ca957600080fd5b8335613cb481613423565b9250602084013591506040840135613ccb81613423565b809150509250925092565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613d0b57600080fd5b83018035915067ffffffffffffffff821115613d2657600080fd5b60200191503681900382131561347a57600080fd5b80820180821115610827577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060208284031215613d8757600080fd5b5051919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b801515811461125f57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613e1a57600080fd5b830160208101925035905067ffffffffffffffff811115613e3a57600080fd5b80360382131561347a57600080fd5b60008135613e5681613423565b6001600160a01b031683526020820135613e6f81613dd7565b151560208401526040820135613e8481613423565b6001600160a01b03166040840152613e9f6060830183613de5565b60a06060860152613eb460a086018284613d8e565b6080948501359590940194909452509092915050565b61012081526000613edf61012083018c613b99565b6001600160a01b038b16602084015289604084015288606084015287608084015282810360a0840152613f13818789613d8e565b855160c08501526020860151151560e085015290505b828103610100840152613f3c8185613e49565b9c9b505050505050505050505050565b60006040828403128015613f5f57600080fd5b506040805190810167ffffffffffffffff81118282101715613f8357613f83613347565b604052823581526020830135613f9881613dd7565b60208201529392505050565b600060a08236031215613fb657600080fd5b60405160a0810167ffffffffffffffff81118282101715613fd957613fd9613347565b6040528235613fe781613423565b81526020830135613ff781613dd7565b6020820152604083013561400a81613423565b6040820152606083013567ffffffffffffffff81111561402957600080fd5b61403536828601613376565b606083015250608092830135928101929092525090565b602081526000823561405d81613423565b6001600160a01b038116602084015250602083013561407b81613423565b6001600160a01b038116604084015250600060408401359050806060840152506140a86060840184613de5565b60808085015261320d60a085018284613d8e565b6080815260006140cc8788613de5565b606060808501526140e160e085018284613d8e565b91505060208801356140f281613423565b6001600160a01b0390811660a085015260408981013560c086015290881660208501528301869052828103606084015261412d818587613d8e565b98975050505050505050565b80358252602081013561414b81613dd7565b8015156020840152505050565b6101208152600061416d61012083018c613b99565b6001600160a01b038b16602084015289604084015288606084015287608084015282810360a08401526141a1818789613d8e565b9050613f2960c0840186614139565b610120815260006141c561012083018a613b99565b6001600160a01b03891660208401528760408401528660608401528560808401528281038060a08501526000825261420c60c0850187805182526020908101511515910152565b60208101610100850152506142246020820185613e49565b9a9950505050505050505050565b60006020828403121561424457600080fd5b815161255d81613dd7565b6000806040838503121561426257600080fd5b825161426d81613423565b6020939093015192949293505050565b60a08152600061429060a0830188613b99565b82810360208401526142a3818789613d8e565b85516040850152602086015115156060850152905082810360808401526001600160a01b0384511681526020840151151560208201526001600160a01b036040850151166040820152606084015160a0606083015261430560a0830182613b99565b90506080850151608083015280925050509695505050505050565b60008251614332818460208701613b75565b919091019291505056fea2646970667358221220f6c4ddc063827b005aa616e597205b7345e1dfac4c8e2fc886f60a6ec726f51764736f6c634300081a0033", + Bin: "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516143726100fd60003960008181612bbd01528181612be60152612dbc01526143726000f3fe6080604052600436106101e75760003560e01c806352d1902d116101025780639d4ba46511610095578063c39aca3711610064578063c39aca37146106a2578063d547741f146106c2578063e63ab1e9146106e2578063f45346dc1461071657600080fd5b80639d4ba465146105f7578063a217fddf14610617578063ad3cb1cc1461062c578063bcf7f32b1461068257600080fd5b80638456cb59116100d15780638456cb591461054757806391d148541461055c57806397a1cef1146105c157806397d340f5146105e157600080fd5b806352d1902d146104bb5780635c975abb146104d05780637b15118b146105075780637c0dcb5f1461052757600080fd5b80632722feee1161017a5780633b283933116101495780633b283933146104535780633f4ba83a14610473578063485cc955146104885780634f1ef286146104a857600080fd5b80632722feee146103cb5780632810ae63146103f35780632f2ff15d1461041357806336568abe1461043357600080fd5b80631cb5ea75116101b65780631cb5ea75146102f657806321501a951461031657806321e093b114610336578063248a9ca31461036e57600080fd5b806301ffc9a714610261578063048ae42c1461029657806306cb8983146102b6578063184b0793146102d657600080fd5b3661025c576101f4610736565b6000546001600160a01b0316331480159061022357503373735b14bb79463307aacbed86daf3322b1e6226ab14155b1561025a576040517fb3af013700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b34801561026d57600080fd5b5061028161027c366004613305565b610794565b60405190151581526020015b60405180910390f35b3480156102a257600080fd5b5061025a6102b1366004613499565b61082d565b3480156102c257600080fd5b5061025a6102d136600461356b565b610a2d565b3480156102e257600080fd5b5061025a6102f136600461363b565b610b20565b34801561030257600080fd5b5061025a61031136600461368b565b610c0f565b34801561032257600080fd5b5061025a610331366004613739565b610cd5565b34801561034257600080fd5b50600054610356906001600160a01b031681565b6040516001600160a01b03909116815260200161028d565b34801561037a57600080fd5b506103bd6103893660046137c5565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b60405190815260200161028d565b3480156103d757600080fd5b5061035673735b14bb79463307aacbed86daf3322b1e6226ab81565b3480156103ff57600080fd5b5061025a61040e3660046137de565b610e89565b34801561041f57600080fd5b5061025a61042e366004613883565b611021565b34801561043f57600080fd5b5061025a61044e366004613883565b61106b565b34801561045f57600080fd5b5061025a61046e3660046138b3565b6110bc565b34801561047f57600080fd5b5061025a61122d565b34801561049457600080fd5b5061025a6104a3366004613946565b611262565b61025a6104b6366004613974565b61149e565b3480156104c757600080fd5b506103bd6114bd565b3480156104dc57600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610281565b34801561051357600080fd5b5061025a6105223660046139ba565b6114ec565b34801561053357600080fd5b5061025a610542366004613a2c565b6116a2565b34801561055357600080fd5b5061025a6118b6565b34801561056857600080fd5b50610281610577366004613883565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156105cd57600080fd5b5061025a6105dc366004613ab1565b6118e8565b3480156105ed57600080fd5b506103bd61040081565b34801561060357600080fd5b5061025a610612366004613b15565b611a4c565b34801561062357600080fd5b506103bd600081565b34801561063857600080fd5b506106756040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161028d9190613be3565b34801561068e57600080fd5b5061025a61069d366004613bf6565b611cbf565b3480156106ae57600080fd5b5061025a6106bd366004613bf6565b611dd6565b3480156106ce57600080fd5b5061025a6106dd366004613883565b611fcc565b3480156106ee57600080fd5b506103bd7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b34801561072257600080fd5b5061025a610731366004613c94565b612010565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615610792576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061082757507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610835612206565b61083d610736565b865160000361085f5760405163d92e233d60e01b815260040160405180910390fd5b85600003610899576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816000036108d3576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006108e36060830183613cd6565b6108ee915085613d3b565b1115610926576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610933878785612287565b90506000336001600160a01b03167f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c8a898b868c6001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c89190613d75565b6040805180820182528c81526001602082015290516109f29695949392918f918f91908e90613eca565b60405180910390a350610a2460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050505050565b610a35612206565b610a3d610736565b8135600003610a78576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610400610a886060830183613cd6565b610a93915085613d3b565b1115610acb576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610aef86868686610ae136889003880188613f4c565b610aea87613fa4565b61258a565b610b1860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b6d576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b75610736565b6001600160a01b038216610b9c5760405163d92e233d60e01b815260040160405180910390fd5b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063c9028a3690610be190849060040161404c565b600060405180830381600087803b158015610bfb57600080fd5b505af1158015610b18573d6000803e3d6000fd5b610c17612206565b610c1f610736565b81600003610c59576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610400610c696060830183613cd6565b610c74915085613d3b565b1115610cac576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610aef8686868660405180604001604052808881526020016001151581525086610aea90613fa4565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d22576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d2a610736565b6001600160a01b038316610d515760405163d92e233d60e01b815260040160405180910390fd5b83600003610d8b576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dbe57506001600160a01b03831630145b15610df5576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610dff8484612771565b6000546040517f5bcfd6160000000000000000000000000000000000000000000000000000000081526001600160a01b0380861692635bcfd61692610e50928a9216908990889088906004016140bc565b600060405180830381600087803b158015610e6a57600080fd5b505af1158015610e7e573d6000803e3d6000fd5b505050505050505050565b610e91612206565b610e99610736565b8651600003610ebb5760405163d92e233d60e01b815260040160405180910390fd5b85600003610ef5576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8135600003610f30576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610400610f406060830183613cd6565b610f4b915085613d3b565b1115610f83576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fa18673735b14bb79463307aacbed86daf3322b1e6226ab612771565b60008054604051879233927f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c92610ff0928d926001600160a01b0316918d919081908d908d908d908d90614158565b60405180910390a3610a2460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461105b8161293f565b6110658383612949565b50505050565b6001600160a01b03811633146110ad576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110b78282612a36565b505050565b6110c4612206565b6110cc610736565b85516000036110ee5760405163d92e233d60e01b815260040160405180910390fd5b84600003611128576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006111386060830183613cd6565b611143915084613d3b565b111561117b576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111998573735b14bb79463307aacbed86daf3322b1e6226ab612771565b60008054604080518082018252838152600160208201529051879333937f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c936111fc938d936001600160a01b03909316928d92909182918d918d91908d90613eca565b60405180910390a3610b1860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6112578161293f565b61125f612afa565b50565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156112ad5750825b905060008267ffffffffffffffff1660011480156112ca5750303b155b9050811580156112d8575080155b1561130f576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156113705784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038716158061138d57506001600160a01b038616155b156113ab5760405163d92e233d60e01b815260040160405180910390fd5b6113b3612b8a565b6113bb612b8a565b6113c3612b92565b6113cb612ba2565b6113d6600087612949565b506114017f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87612949565b50600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0389161790558315610a245784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050505050565b6114a6612bb2565b6114af82612c82565b6114b98282612c8d565b5050565b60006114c7612db1565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b6114f4612206565b6114fc610736565b865160000361151e5760405163d92e233d60e01b815260040160405180910390fd5b85600003611558576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8135600003611593576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006115a36060830183613cd6565b6115ae915085613d3b565b11156115e6576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006115f487878535612287565b90506000336001600160a01b03167f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c8a898b868c6001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611665573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116899190613d75565b8c8c8c8c6040516109f299989796959493929190614158565b6116aa612206565b6116b2610736565b83516000036116d45760405163d92e233d60e01b815260040160405180910390fd5b8260000361170e576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61040061171e6060830183613cd6565b90501115611758576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006117648484612e13565b90506000336001600160a01b03167f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c87868886896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f99190613d75565b60405180604001604052808c6001600160a01b031663091d27886040518163ffffffff1660e01b8152600401602060405180830381865afa158015611842573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118669190613d75565b81526001602090910152604051611884969594939291908c906141b0565b60405180910390a35061106560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6118e08161293f565b61125f612e81565b6118f0612206565b6118f8610736565b835160000361191a5760405163d92e233d60e01b815260040160405180910390fd5b82600003611954576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006119646060830183613cd6565b9050111561199e576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119bc8373735b14bb79463307aacbed86daf3322b1e6226ab612771565b60008054604080518082018252838152600160208201529051859333937f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c93611a1b938b936001600160a01b03909316928b9290918291908b906141b0565b60405180910390a361106560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611a99576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611aa1610736565b6001600160a01b0384161580611abe57506001600160a01b038216155b15611adc5760405163d92e233d60e01b815260040160405180910390fd5b82600003611b16576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821673735b14bb79463307aacbed86daf3322b1e6226ab1480611b4957506001600160a01b03821630145b15611b80576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152602482018590528516906347e7ef24906044016020604051808303816000875af1158015611be8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0c9190614232565b611c42576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063c9028a3690611c8790849060040161404c565b600060405180830381600087803b158015611ca157600080fd5b505af1158015611cb5573d6000803e3d6000fd5b5050505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611d0c576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d14610736565b6001600160a01b0385161580611d3157506001600160a01b038316155b15611d4f5760405163d92e233d60e01b815260040160405180910390fd5b6040517f5bcfd6160000000000000000000000000000000000000000000000000000000081526001600160a01b03841690635bcfd61690611d9c90899089908990889088906004016140bc565b600060405180830381600087803b158015611db657600080fd5b505af1158015611dca573d6000803e3d6000fd5b50505050505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611e23576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e2b610736565b6001600160a01b0385161580611e4857506001600160a01b038316155b15611e665760405163d92e233d60e01b815260040160405180910390fd5b83600003611ea0576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480611ed357506001600160a01b03831630145b15611f0a576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015611f72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f969190614232565b611d4f576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546120068161293f565b6110658383612a36565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461205d576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612065610736565b6001600160a01b038316158061208257506001600160a01b038116155b156120a05760405163d92e233d60e01b815260040160405180910390fd5b816000036120da576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab148061210d57506001600160a01b03811630145b15612144576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af11580156121ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d09190614232565b6110b7576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01612281576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6000806000846001600160a01b031663fc5fecd5856040518263ffffffff1660e01b81526004016122ba91815260200190565b6040805180830381865afa1580156122d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122fa919061424f565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561237f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a39190614232565b6123d9576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018790526001600160a01b038616906323b872dd906064016020604051808303816000875af1158015612445573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124699190614232565b61249f576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018790526001600160a01b038616906342966c68906024016020604051808303816000875af11580156124ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125239190614232565b612559576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b85516000036125ac5760405163d92e233d60e01b815260040160405180910390fd5b81516040517ffc5fecd5000000000000000000000000000000000000000000000000000000008152600481019190915260009081906001600160a01b0388169063fc5fecd5906024016040805180830381865afa158015612611573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612635919061424f565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af11580156126ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126de9190614232565b612714576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b866001600160a01b0316336001600160a01b03167f306ee13f48319a123b222c69908e44dcf91abffc20cacc502e3cf5a4ff23e0e48a8989898960405161275f95949392919061427d565b60405180910390a35050505050505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af11580156127e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128059190614232565b61283b576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561289a57600080fd5b505af11580156128ae573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d80600081146128ff576040519150601f19603f3d011682016040523d82523d6000602084013e612904565b606091505b50509050806110b7576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61125f8133612efa565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16612a2c576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556129e23390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610827565b6000915050610827565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615612a2c576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610827565b612b02612f87565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b610792612fe2565b612b9a612fe2565b610792613049565b612baa612fe2565b61079261309a565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480612c4b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612c3f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610792576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006114b98161293f565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612d05575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612d0291810190613d75565b60015b612d4b576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114612da7576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401612d42565b6110b783836130a2565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610792576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061255d8383846001600160a01b031663091d27886040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e7c9190613d75565b612287565b612e89610736565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833612b6c565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166114b9576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401612d42565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610792576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610792576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613051612fe2565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b612564612fe2565b6130ab826130f8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156130f0576110b782826131a0565b6114b9613216565b806001600160a01b03163b600003613147576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401612d42565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516131bd9190614320565b600060405180830381855af49150503d80600081146131f8576040519150601f19603f3d011682016040523d82523d6000602084013e6131fd565b606091505b509150915061320d85838361324e565b95945050505050565b3415610792576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060826132635761325e826132c3565b61255d565b815115801561327a57506001600160a01b0384163b155b156132bc576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401612d42565b508061255d565b8051156132d35780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561331757600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461255d57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261338757600080fd5b813567ffffffffffffffff8111156133a1576133a1613347565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff811182821017156133ee576133ee613347565b60405281815283820160200185101561340657600080fd5b816020850160208301376000918101602001919091529392505050565b6001600160a01b038116811461125f57600080fd5b60008083601f84011261344a57600080fd5b50813567ffffffffffffffff81111561346257600080fd5b60208301915083602082850101111561347a57600080fd5b9250929050565b600060a0828403121561349357600080fd5b50919050565b600080600080600080600060c0888a0312156134b457600080fd5b873567ffffffffffffffff8111156134cb57600080fd5b6134d78a828b01613376565b9750506020880135955060408801356134ef81613423565b9450606088013567ffffffffffffffff81111561350b57600080fd5b6135178a828b01613438565b9095509350506080880135915060a088013567ffffffffffffffff81111561353e57600080fd5b61354a8a828b01613481565b91505092959891949750929550565b60006040828403121561349357600080fd5b60008060008060008060c0878903121561358457600080fd5b863567ffffffffffffffff81111561359b57600080fd5b6135a789828a01613376565b96505060208701356135b881613423565b9450604087013567ffffffffffffffff8111156135d457600080fd5b6135e089828a01613438565b90955093506135f490508860608901613559565b915060a087013567ffffffffffffffff81111561361057600080fd5b61361c89828a01613481565b9150509295509295509295565b60006080828403121561349357600080fd5b6000806040838503121561364e57600080fd5b823561365981613423565b9150602083013567ffffffffffffffff81111561367557600080fd5b61368185828601613629565b9150509250929050565b60008060008060008060a087890312156136a457600080fd5b863567ffffffffffffffff8111156136bb57600080fd5b6136c789828a01613376565b96505060208701356136d881613423565b9450604087013567ffffffffffffffff8111156136f457600080fd5b61370089828a01613438565b90955093505060608701359150608087013567ffffffffffffffff81111561361057600080fd5b60006060828403121561349357600080fd5b60008060008060006080868803121561375157600080fd5b853567ffffffffffffffff81111561376857600080fd5b61377488828901613727565b95505060208601359350604086013561378c81613423565b9250606086013567ffffffffffffffff8111156137a857600080fd5b6137b488828901613438565b969995985093965092949392505050565b6000602082840312156137d757600080fd5b5035919050565b600080600080600080600060e0888a0312156137f957600080fd5b873567ffffffffffffffff81111561381057600080fd5b61381c8a828b01613376565b9750506020880135955060408801359450606088013567ffffffffffffffff81111561384757600080fd5b6138538a828b01613438565b909550935061386790508960808a01613559565b915060c088013567ffffffffffffffff81111561353e57600080fd5b6000806040838503121561389657600080fd5b8235915060208301356138a881613423565b809150509250929050565b60008060008060008060a087890312156138cc57600080fd5b863567ffffffffffffffff8111156138e357600080fd5b6138ef89828a01613376565b9650506020870135945060408701359350606087013567ffffffffffffffff81111561391a57600080fd5b61392689828a01613438565b909450925050608087013567ffffffffffffffff81111561361057600080fd5b6000806040838503121561395957600080fd5b823561396481613423565b915060208301356138a881613423565b6000806040838503121561398757600080fd5b823561399281613423565b9150602083013567ffffffffffffffff8111156139ae57600080fd5b61368185828601613376565b600080600080600080600060e0888a0312156139d557600080fd5b873567ffffffffffffffff8111156139ec57600080fd5b6139f88a828b01613376565b975050602088013595506040880135613a1081613423565b9450606088013567ffffffffffffffff81111561384757600080fd5b60008060008060808587031215613a4257600080fd5b843567ffffffffffffffff811115613a5957600080fd5b613a6587828801613376565b945050602085013592506040850135613a7d81613423565b9150606085013567ffffffffffffffff811115613a9957600080fd5b613aa587828801613481565b91505092959194509250565b60008060008060808587031215613ac757600080fd5b843567ffffffffffffffff811115613ade57600080fd5b613aea87828801613376565b9450506020850135925060408501359150606085013567ffffffffffffffff811115613a9957600080fd5b60008060008060808587031215613b2b57600080fd5b8435613b3681613423565b9350602085013592506040850135613b4d81613423565b9150606085013567ffffffffffffffff811115613b6957600080fd5b613aa587828801613629565b60005b83811015613b90578181015183820152602001613b78565b50506000910152565b60008151808452613bb1816020860160208601613b75565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061255d6020830184613b99565b60008060008060008060a08789031215613c0f57600080fd5b863567ffffffffffffffff811115613c2657600080fd5b613c3289828a01613727565b9650506020870135613c4381613423565b9450604087013593506060870135613c5a81613423565b9250608087013567ffffffffffffffff811115613c7657600080fd5b613c8289828a01613438565b979a9699509497509295939492505050565b600080600060608486031215613ca957600080fd5b8335613cb481613423565b9250602084013591506040840135613ccb81613423565b809150509250925092565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613d0b57600080fd5b83018035915067ffffffffffffffff821115613d2657600080fd5b60200191503681900382131561347a57600080fd5b80820180821115610827577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060208284031215613d8757600080fd5b5051919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b801515811461125f57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613e1a57600080fd5b830160208101925035905067ffffffffffffffff811115613e3a57600080fd5b80360382131561347a57600080fd5b60008135613e5681613423565b6001600160a01b031683526020820135613e6f81613dd7565b151560208401526040820135613e8481613423565b6001600160a01b03166040840152613e9f6060830183613de5565b60a06060860152613eb460a086018284613d8e565b6080948501359590940194909452509092915050565b61012081526000613edf61012083018c613b99565b6001600160a01b038b16602084015289604084015288606084015287608084015282810360a0840152613f13818789613d8e565b855160c08501526020860151151560e085015290505b828103610100840152613f3c8185613e49565b9c9b505050505050505050505050565b60006040828403128015613f5f57600080fd5b506040805190810167ffffffffffffffff81118282101715613f8357613f83613347565b604052823581526020830135613f9881613dd7565b60208201529392505050565b600060a08236031215613fb657600080fd5b60405160a0810167ffffffffffffffff81118282101715613fd957613fd9613347565b6040528235613fe781613423565b81526020830135613ff781613dd7565b6020820152604083013561400a81613423565b6040820152606083013567ffffffffffffffff81111561402957600080fd5b61403536828601613376565b606083015250608092830135928101929092525090565b602081526000823561405d81613423565b6001600160a01b038116602084015250602083013561407b81613423565b6001600160a01b038116604084015250600060408401359050806060840152506140a86060840184613de5565b60808085015261320d60a085018284613d8e565b6080815260006140cc8788613de5565b606060808501526140e160e085018284613d8e565b91505060208801356140f281613423565b6001600160a01b0390811660a085015260408981013560c086015290881660208501528301869052828103606084015261412d818587613d8e565b98975050505050505050565b80358252602081013561414b81613dd7565b8015156020840152505050565b6101208152600061416d61012083018c613b99565b6001600160a01b038b16602084015289604084015288606084015287608084015282810360a08401526141a1818789613d8e565b9050613f2960c0840186614139565b610120815260006141c561012083018a613b99565b6001600160a01b03891660208401528760408401528660608401528560808401528281038060a08501526000825261420c60c0850187805182526020908101511515910152565b60208101610100850152506142246020820185613e49565b9a9950505050505050505050565b60006020828403121561424457600080fd5b815161255d81613dd7565b6000806040838503121561426257600080fd5b825161426d81613423565b6020939093015192949293505050565b60a08152600061429060a0830188613b99565b82810360208401526142a3818789613d8e565b85516040850152602086015115156060850152905082810360808401526001600160a01b0384511681526020840151151560208201526001600160a01b036040850151166040820152606084015160a0606083015261430560a0830182613b99565b90506080850151608083015280925050509695505050505050565b60008251614332818460208701613b75565b919091019291505056fea264697066735822122028dbbf2e883c128aa1386b54d8aadffb9136ad5807cb917aaf6b28ed2c099d8464736f6c634300081a0033", } // 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 1b78bb34d..8177ba96e 100644 --- a/v2/pkg/gatewayzevm.t.sol/gatewayzevminboundtest.go +++ b/v2/pkg/gatewayzevm.t.sol/gatewayzevminboundtest.go @@ -65,7 +65,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\":\"testCallFailsIfGasLimitIsZero\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testCallFailsIfMessageSizeExceeded\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testCallFailsIfReceiverIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testCallWithCallOpts\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testCallWithCallOptsFailsIfGasLimitIsZero\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testCallWithCallOptsFailsIfMessageSizeExceeded\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testCallWithCallOptsFailsIfReceiverIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpgradeAndWithdrawZRC20\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallZETAFailsIfAmountIsReceiverIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallZETAFailsIfAmountIsZero\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallZETAFailsIfMessageSizeExceeded\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallZETAWithCallOptsFailsIfAmountIsReceiverIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallZETAWithCallOptsFailsIfAmountIsZero\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallZETAWithCallOptsFailsIfMessageSizeExceeded\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallZRC20FailsIfAmountIsZero\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallZRC20FailsIfGasLimitIsZero\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallZRC20FailsIfMessageSizeExceeded\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallZRC20FailsIfReceiverIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallZRC20WithCallOptsFailsIfAmountIsZero\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallZRC20WithCallOptsFailsIfGasLimitIsZero\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallZRC20WithCallOptsFailsIfMessageSizeExceeded\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallZRC20WithCallOptsFailsIfReceiverIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETA\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAFailsIfAmountIsZero\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAFailsIfMessageSizeExceeded\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAFailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAFailsIfNoBalance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAFailsIfReceiverIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAWithCallOptsWithMessage\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAWithCallOptsWithMessageFailsIfGasLimitIsZero\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAWithCallOptsWithMessageFailsIfNoAllowance\",\"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\":\"testWithdrawZRC20FailsIfMessageSizeExceeded\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20FailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20FailsIfNoBalanceForGasFee\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20FailsIfNoBalanceForTransfer\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20FailsIfReceiverIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20FailsIsAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20WithCallOptsWithMessage\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20WithMessage\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20WithMessageFailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20WithMessageWithCallOptsFailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Called\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"callOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structCallOptions\",\"components\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"isArbitraryCall\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawn\",\"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\"},{\"name\":\"callOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structCallOptions\",\"components\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"isArbitraryCall\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawnV2\",\"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\"},{\"name\":\"callOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structCallOptions\",\"components\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"isArbitraryCall\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\":\"CallerIsNotProtocol\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedZetaSent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientGasLimit\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZetaAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LowBalance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"MessageSizeExceeded\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrProtocol\",\"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: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5062012224806200003e6000396000f3fe608060405234801561001057600080fd5b506004361061038e5760003560e01c80636dfcbc50116101de578063ba9adeef1161010f578063e20c9f71116100ad578063eb7a2fac1161007c578063eb7a2fac14610597578063fa7626d41461059f578063fbc611c8146105ac578063fdad0ad0146105b457600080fd5b8063e20c9f711461057f578063e51c638814610587578063e804a406146103cd578063ea37902f1461058f57600080fd5b8063ceccfab3116100e9578063ceccfab31461055f578063d5a4468914610567578063dc749dd71461056f578063dde7e9671461057757600080fd5b8063ba9adeef14610547578063bed3e8131461054f578063c946d7c01461055757600080fd5b8063ae9da0881161017c578063b5508aa911610156578063b5508aa914610517578063b7f058361461051f578063ba414fa614610527578063ba800c911461053f57600080fd5b8063ae9da088146104ff578063b0464fdc14610507578063b51ac0711461050f57600080fd5b806385226c81116101b857806385226c81146104c5578063916a17c6146104da578063a721b2d3146104ef578063a90f314b146104f757600080fd5b80636dfcbc50146104ad5780637ae69730146104b557806383ababa9146104bd57600080fd5b806339cbb457116102c35780635006fd80116102615780636221b509116102305780636221b5091461048057806364002a1f1461048857806366d9a9a0146104905780636d6ce0d0146104a557600080fd5b80635006fd80146104605780635d72228f146104685780635efe72a9146104705780636198fb191461047857600080fd5b8063423a58741161029d578063423a58741461044057806342752d411461044857806343181437146104505780634ffab9de1461045857600080fd5b806339cbb457146104285780633e5e3c23146104305780633f7286f41461043857600080fd5b80631e63d2b91161033057806321aeb18c1161030a57806321aeb18c146103fb578063264b524c146104035780632ade38801461040b57806336431b3f1461042057600080fd5b80631e63d2b9146103cd5780631ed7831c146103d557806320dee15f146103f357600080fd5b80631238212c1161036c5780631238212c146103ad57806314759766146103b557806318a4cfdc146103bd5780631b9641bf146103c557600080fd5b806304019fba146103935780630a9254e41461039d5780630b5ad28d146103a5575b600080fd5b61039b6105bc565b005b61039b61070c565b61039b61128c565b61039b6113f5565b61039b61179c565b61039b611bf3565b61039b611eed565b61039b61204f565b6103dd61243e565b6040516103ea919061c217565b60405180910390f35b61039b6124a0565b61039b61288e565b61039b6129ae565b610413612b89565b6040516103ea919061c2b3565b61039b612ccb565b61039b612e0e565b6103dd612f51565b6103dd612fb1565b61039b613011565b61039b61314b565b61039b613288565b61039b6133a6565b61039b6135f8565b61039b613a81565b61039b613dd3565b61039b613f3b565b61039b6140ec565b61039b614311565b6104986146a0565b6040516103ea919061c419565b61039b61480d565b61039b614afd565b61039b614ce4565b61039b614e99565b6104cd614f7d565b6040516103ea919061c4b7565b6104e261504d565b6040516103ea919061c52e565b61039b615133565b61039b61531a565b61039b61556c565b6104e26156cd565b61039b6157b3565b6104cd61589d565b61039b61596d565b61052f615b1e565b60405190151581526020016103ea565b61039b615bf2565b61039b615d08565b61039b615e6a565b61039b615fcc565b61039b61621e565b61039b61656a565b61039b6167bc565b61039b61685f565b6103dd616c9e565b61039b616cfe565b61039b617040565b61039b617435565b601f5461052f9060ff1681565b61039b61751f565b61039b6178ac565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180516001600160e01b0316630427d73b60e51b17905251630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561066f57600080fd5b505af1158015610683573d6000803e3d6000fd5b5050602080546040516001600160a01b039091169350633b2839339250015b6040516020818303038152906040526001808560286040518663ffffffff1660e01b81526004016106d795949392919061c701565b600060405180830381600087803b1580156106f157600080fd5b505af1158015610705573d6000803e3d6000fd5b5050505050565b602580547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602680549091166112341790556040516107529061c126565b604051809103906000f08015801561076e573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600f81527f476174657761795a45564d2e736f6c00000000000000000000000000000000006020820152602554915160248101939093529216604482015261083d919060640160408051601f198184030181529190526020810180516001600160e01b03167f485cc95500000000000000000000000000000000000000000000000000000000179052617a22565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b039384168102919091179182905560208054919092049092167fffffffffffffffffffffffff000000000000000000000000000000000000000090921682178155604080517f2722feee0000000000000000000000000000000000000000000000000000000081529051632722feee926004808401939192918290030181865afa1580156108ff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610923919061c752565b602780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516109679061c134565b604051809103906000f080158015610983573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161781556027546040517f06447d5600000000000000000000000000000000000000000000000000000000815292166004830152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d569101600060405180830381600087803b158015610a1f57600080fd5b505af1158015610a33573d6000803e3d6000fd5b505050506000806000604051610a489061c142565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610a84573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602054604051601293600193849360009391921690610ada9061c150565b610ae99695949392919061c77b565b604051809103906000f080158015610b05573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556023546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b158015610b9c57600080fd5b505af1158015610bb0573d6000803e3d6000fd5b50506023546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b158015610c1a57600080fd5b505af1158015610c2e573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610cae57600080fd5b505af1158015610cc2573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610d1757600080fd5b505af1158015610d2b573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610d9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc3919061c870565b506021546025546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116906347e7ef24906044016020604051808303816000875af1158015610e34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e58919061c870565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610eb757600080fd5b505af1158015610ecb573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610f4157600080fd5b505af1158015610f55573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116925063095ea7b391506044016020604051808303816000875af1158015610fc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fed919061c870565b50602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b15801561103f57600080fd5b505af1158015611053573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af11580156110c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110eb919061c870565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561114a57600080fd5b505af115801561115e573d6000803e3d6000fd5b50506040805160a08101825261032180825260016020808401918252838501928352845190810190945260008085526060840185905260808401528251602880549251151574010000000000000000000000000000000000000000027fffffffffffffffffffffff0000000000000000000000000000000000000000009093166001600160a01b0392831617929092178255915160298054919093167fffffffffffffffffffffffff000000000000000000000000000000000000000091909116179091559093509150602a90611235908261c908565b50608091909101516003909101556040805180820190915260018082526020909101819052602c819055602d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180516001600160e01b0316630427d73b60e51b1790526000602c5551630618f58760e51b81527f60ee1247000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015b600060405180830381600087803b15801561134557600080fd5b505af1158015611359573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637b15118b91506034015b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526106d7926001916001600160a01b0316908790602c9060289060040161c9c7565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611446573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146a919061ca38565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156114df57600080fd5b505af11580156114f3573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015611565573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611589919061c870565b506026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180516001600160e01b0316630427d73b60e51b17905280517ff48448140000000000000000000000000000000000000000000000000000000081529051919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f48448149160048082019260009290919082900301818387803b15801561163757600080fd5b505af115801561164b573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b0316925063048ae42c915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526116e59288916001600160a01b031690879060019060289060040161ca51565b600060405180830381600087803b1580156116ff57600080fd5b505af1158015611713573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611766573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061178a919061ca38565b90506117968382617a41565b50505050565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa1580156117ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611811919061ca38565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015611863573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611887919061ca38565b6027546026546040516001600160a01b03918216602482015292935016319060009060440160408051601f19818403018152918152602080830180516001600160e01b0316630427d73b60e51b1790525490517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482018190526001600160a01b03909216608482015291925090737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561196857600080fd5b505af115801561197c573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff191660208201528493506001600160a01b0390911691507f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c9060340160408051601f1981840301815290829052602254611a0e926001600160a01b03909116908c9060009081908b90602c9060289061caa5565b60405180910390a3602080546026546040516001600160a01b0392831693632810ae6393611a569316910160609190911b6bffffffffffffffffffffffff1916815260140190565b604051602081830303815290604052888486602c60286040518763ffffffff1660e01b8152600401611a8d9695949392919061cb19565b600060405180830381600087803b158015611aa757600080fd5b505af1158015611abb573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b32919061ca38565b9050611b48611b4260018861cb79565b82617a41565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611b99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bbd919061ca38565b9050611bc98682617a41565b611be9611bd786600161cb8c565b6027546001600160a01b031631617a41565b5050505050505050565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611c44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c68919061ca38565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015611cba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cde919061ca38565b6027546026546040516001600160a01b03918216602482015292935016319060009060440160408051601f19818403018152918152602080830180516001600160e01b0316630427d73b60e51b1790525490517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482018190526001600160a01b03909216608482015291925090737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611dbf57600080fd5b505af1158015611dd3573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff191660208201528493506001600160a01b0390911691507f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c9060340160408051601f1981840301815260225483830183526000808552600160208601529251611e719492936001600160a01b03909216928e929182918c9160289061cb9f565b60405180910390a3602080546026546040516001600160a01b0392831693633b28393393611eb99316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60405160208183030381529060405288848660286040518663ffffffff1660e01b8152600401611a8d95949392919061c701565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180516001600160e01b0316630427d73b60e51b17905251630618f58760e51b81527f5d67094f000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015611fa057600080fd5b505af1158015611fb4573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637b15118b915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526106d7926000916001600160a01b0316908790602c9060289060040161c9c7565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa1580156120a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c4919061ca38565b6026546040516001600160a01b03909116602482015290915060009060440160408051601f19818403018152918152602080830180516001600160e01b0316630427d73b60e51b1790525490517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482018190526001600160a01b039092166084820152919250908190737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156121a157600080fd5b505af11580156121b5573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff19166020820152600093506001600160a01b0390911691507f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c9060340160408051601f198184030181528282526021547f4d8943bb000000000000000000000000000000000000000000000000000000008452915190926001600160a01b03909216918b9189918491634d8943bb916004808201926020929091908290030181865afa158015612287573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ab919061ca38565b6040805180820182528a81526001602082015290516122d39695949392918d9160289061cb9f565b60405180910390a3602080546026546040516001600160a01b039283169363048ae42c9361231b9316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168352612377928a916001600160a01b0316908990889060289060040161ca51565b600060405180830381600087803b15801561239157600080fd5b505af11580156123a5573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156123f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061241c919061ca38565b90506124368361242c888861cb79565b611b42919061cb79565b505050505050565b6060601680548060200260200160405190810160405280929190818152602001828054801561249657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612478575b5050505050905090565b601f54604080518082018252601a81527f476174657761795a45564d55706772616465546573742e736f6c000000000000602080830191909152825190810190925260008252602554612505936001600160a01b036101009091048116939116617ac0565b601f546021546025546040516370a0823160e01b81526001600160a01b03918216600482015261010090930481169260019260009216906370a0823190602401602060405180830381865afa158015612562573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612586919061ca38565b6040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b0385166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561261357600080fd5b505af1158015612627573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff19166020820152600093506001600160a01b0390911691507f5d7cd8ae449a6b25de63f10534ddd17d8dd3e79c7aa5f28964b7a7c760258d979060340160408051601f198184030181528282526021547f4d8943bb000000000000000000000000000000000000000000000000000000008452915190926001600160a01b039092169188916000918491634d8943bb916004808201926020929091908290030181865afa1580156126fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061271e919061ca38565b604080518082018252600081526001602082015290516127469695949392919060289061cc01565b60405180910390a360265460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b03841690637c0dcb5f9060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526127da9287916001600160a01b03169060289060040161cc83565b600060405180830381600087803b1580156127f457600080fd5b505af1158015612808573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa15801561285b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061287f919061ca38565b9050611796611b42848461cb79565b604051630618f58760e51b81527f19c08f49000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156128fa57600080fd5b505af115801561290e573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b031692506397a1cef191506034015b6040516020818303038152906040526000600160286040518563ffffffff1660e01b8152600401612980949392919061ccbd565b600060405180830381600087803b15801561299a57600080fd5b505af1158015611796573d6000803e3d6000fd5b60208054604080516397d340f560e01b815290516001600160a01b03909216926397d340f5926004808401938290030181865afa1580156129f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a17919061ca38565b612a2290600161cb8c565b67ffffffffffffffff811115612a3a57612a3a61c892565b6040519080825280601f01601f191660200182016040528015612a64576020820181803683370190505b50602a90612a72908261c908565b50604051630618f58760e51b81527f9507fb3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015612adf57600080fd5b505af1158015612af3573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637c0dcb5f915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168352612980926002916001600160a01b03169060289060040161cc83565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015612cc257600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015612cab578382906000526020600020018054612c1e9061c5c5565b80601f0160208091040260200160405190810160405280929190818152602001828054612c4a9061c5c5565b8015612c975780601f10612c6c57610100808354040283529160200191612c97565b820191906000526020600020905b815481529060010190602001808311612c7a57829003601f168201915b505050505081526020019060010190612bff565b505050508152505081526020019060010190612bad565b50505050905090565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180516001600160e01b0316630427d73b60e51b17905251630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015612d7e57600080fd5b505af1158015612d92573d6000803e3d6000fd5b5050602080546040516001600160a01b03909116935063048ae42c9250015b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526106d7926001916001600160a01b0316908790839060289060040161ca51565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180516001600160e01b0316630427d73b60e51b17905251630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015612ec157600080fd5b505af1158015612ed5573d6000803e3d6000fd5b5050602080546040516001600160a01b039091169350631cb5ea759250015b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526106d7926001600160a01b0390911690869060019060289060040161ccee565b60606018805480602002602001604051908101604052809291908181526020018280548015612496576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311612478575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015612496576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311612478575050505050905090565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180516001600160e01b0316630427d73b60e51b17905251630618f58760e51b81527f19c08f49000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156130c457600080fd5b505af11580156130d8573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250633b2839339150603401604051602081830303815290604052600060018560286040518663ffffffff1660e01b81526004016106d795949392919061c701565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180516001600160e01b0316630427d73b60e51b17905251630618f58760e51b81527f19c08f49000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156131fe57600080fd5b505af1158015613212573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250632810ae6391506034016040516020818303038152906040526000600185602c60286040518763ffffffff1660e01b81526004016106d79695949392919061cb19565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180516001600160e01b0316630427d73b60e51b17905251630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561333b57600080fd5b505af115801561334f573d6000803e3d6000fd5b5050602080546040516001600160a01b039091169350632810ae639250015b60405160208183030381529060405260018085602c60286040518763ffffffff1660e01b81526004016106d79695949392919061cb19565b60208054604080516397d340f560e01b815290516000936002936001600160a01b0316926397d340f592600480830193928290030181865afa1580156133f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613414919061ca38565b61341e919061cd3c565b67ffffffffffffffff8111156134365761343661c892565b6040519080825280601f01601f191660200182016040528015613460576020820181803683370190505b5060208054604080516397d340f560e01b815290519394506002936001600160a01b03909216926397d340f5926004808401938290030181865afa1580156134ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134d0919061ca38565b6134da919061cd3c565b6134e590600161cb8c565b67ffffffffffffffff8111156134fd576134fd61c892565b6040519080825280601f01601f191660200182016040528015613527576020820181803683370190505b50602a90613535908261c908565b50604051630618f58760e51b81527f9507fb3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156135a257600080fd5b505af11580156135b6573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b0316925063048ae42c9150603401612db1565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015613649573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061366d919061ca38565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa1580156136bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136e3919061ca38565b6027546026546040516001600160a01b03918216602482015292935016319060009060440160408051601f198184030181529181526020820180516001600160e01b0316630427d73b60e51b17905260255490517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156137a957600080fd5b505af11580156137bd573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af115801561382f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613853919061c870565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156138b257600080fd5b505af11580156138c6573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250633b283933915060340160405160208183030381529060405288848660286040518663ffffffff1660e01b815260040161393795949392919061c701565b600060405180830381600087803b15801561395157600080fd5b505af1158015613965573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156139b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139dc919061ca38565b90506139e88682617a41565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015613a39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a5d919061ca38565b9050613a698682617a41565b602754611be99086906001600160a01b031631617a41565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015613ad2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613af6919061ca38565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613b6b57600080fd5b505af1158015613b7f573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015613bf1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c15919061c870565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613c7457600080fd5b505af1158015613c88573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637c0dcb5f915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168352613d1d9287916001600160a01b03169060289060040161cc83565b600060405180830381600087803b158015613d3757600080fd5b505af1158015613d4b573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015613d9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dc2919061ca38565b9050613dce8282617a41565b505050565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180516001600160e01b0316630427d73b60e51b1790526000602c5551630618f58760e51b81527f60ee1247000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015b600060405180830381600087803b158015613e8c57600080fd5b505af1158015613ea0573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b031692506306cb898391506034015b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526106d7926001600160a01b03909116908690602c9060289060040161cd77565b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180516001600160e01b0316630427d73b60e51b1790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561401057600080fd5b505af1158015614024573d6000803e3d6000fd5b505060215460255460265460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039283169450911691507f306ee13f48319a123b222c69908e44dcf91abffc20cacc502e3cf5a4ff23e0e49060340160408051601f19818403018152908290526140a4918690602c9060289061cdd5565b60405180910390a3602080546026546040516001600160a01b03928316936306cb898393613ede9316910160609190911b6bffffffffffffffffffffffff1916815260140190565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa15801561413d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614161919061ca38565b6022546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526101236004820152602481018390529192506001600160a01b03169063a9059cbb906044016020604051808303816000875af11580156141ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141f2919061c870565b506000600190507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561425757600080fd5b505af115801561426b573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b031692506397a1cef19150603401604051602081830303815290604052858460286040518563ffffffff1660e01b81526004016142da949392919061ccbd565b600060405180830381600087803b1580156142f457600080fd5b505af1158015614308573d6000803e3d6000fd5b50505050505050565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015614362573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614386919061ca38565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa1580156143d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143fc919061ca38565b6027546026546040516001600160a01b03918216602482015292935016319060009060440160408051601f198184030181529181526020820180516001600160e01b0316630427d73b60e51b17905260255490517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156144c257600080fd5b505af11580156144d6573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015614548573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061456c919061c870565b506000602c55604051630618f58760e51b81527f60ee1247000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156145de57600080fd5b505af11580156145f2573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250632810ae639150603401604051602081830303815290604052888486602c60286040518763ffffffff1660e01b81526004016146669695949392919061cb19565b600060405180830381600087803b15801561468057600080fd5b505af1158015614694573d6000803e3d6000fd5b50505050505050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015612cc257838290600052602060002090600202016040518060400160405290816000820180546146f79061c5c5565b80601f01602080910402602001604051908101604052809291908181526020018280546147239061c5c5565b80156147705780601f1061474557610100808354040283529160200191614770565b820191906000526020600020905b81548152906001019060200180831161475357829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156147f557602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116147b75790505b505050505081525050815260200190600101906146c4565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa15801561485e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614882919061ca38565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156148f757600080fd5b505af115801561490b573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af115801561497d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906149a1919061c870565b506026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180516001600160e01b0316630427d73b60e51b17905280517ff48448140000000000000000000000000000000000000000000000000000000081529051919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f48448149160048082019260009290919082900301818387803b158015614a4f57600080fd5b505af1158015614a63573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637b15118b915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526116e59288916001600160a01b0316908790602c9060289060040161c9c7565b60208054604080516397d340f560e01b815290516000936002936001600160a01b0316926397d340f592600480830193928290030181865afa158015614b47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614b6b919061ca38565b614b75919061cd3c565b67ffffffffffffffff811115614b8d57614b8d61c892565b6040519080825280601f01601f191660200182016040528015614bb7576020820181803683370190505b5060208054604080516397d340f560e01b815290519394506002936001600160a01b03909216926397d340f5926004808401938290030181865afa158015614c03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614c27919061ca38565b614c31919061cd3c565b614c3c90600161cb8c565b67ffffffffffffffff811115614c5457614c5461c892565b6040519080825280601f01601f191660200182016040528015614c7e576020820181803683370190505b50602a90614c8c908261c908565b50604051630618f58760e51b81527f9507fb3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401613e72565b60208054604080516397d340f560e01b815290516001600160a01b03909216926397d340f5926004808401938290030181865afa158015614d29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614d4d919061ca38565b614d5890600161cb8c565b67ffffffffffffffff811115614d7057614d7061c892565b6040519080825280601f01601f191660200182016040528015614d9a576020820181803683370190505b50602a90614da8908261c908565b50604051630618f58760e51b81527f9507fb3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015614e1557600080fd5b505af1158015614e29573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b031692506397a1cef1915060340160405160208183030381529060405260018060286040518563ffffffff1660e01b8152600401612980949392919061ccbd565b604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015614f0557600080fd5b505af1158015614f19573d6000803e3d6000fd5b5050602080546040805160008152928301908190526021547f7c0dcb5f000000000000000000000000000000000000000000000000000000009091526001600160a01b039182169450637c0dcb5f935061298092916001911660286024840161cc83565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015612cc2578382906000526020600020018054614fc09061c5c5565b80601f0160208091040260200160405190810160405280929190818152602001828054614fec9061c5c5565b80156150395780601f1061500e57610100808354040283529160200191615039565b820191906000526020600020905b81548152906001019060200180831161501c57829003601f168201915b505050505081526020019060010190614fa1565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015612cc25760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561511b57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116150dd5790505b50505050508152505081526020019060010190615071565b60208054604080516397d340f560e01b815290516000936002936001600160a01b0316926397d340f592600480830193928290030181865afa15801561517d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906151a1919061ca38565b6151ab919061cd3c565b67ffffffffffffffff8111156151c3576151c361c892565b6040519080825280601f01601f1916602001820160405280156151ed576020820181803683370190505b5060208054604080516397d340f560e01b815290519394506002936001600160a01b03909216926397d340f5926004808401938290030181865afa158015615239573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061525d919061ca38565b615267919061cd3c565b61527290600161cb8c565b67ffffffffffffffff81111561528a5761528a61c892565b6040519080825280601f01601f1916602001820160405280156152b4576020820181803683370190505b50602a906152c2908261c908565b50604051630618f58760e51b81527f9507fb3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e09060240161132b565b60208054604080516397d340f560e01b815290516000936002936001600160a01b0316926397d340f592600480830193928290030181865afa158015615364573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615388919061ca38565b615392919061cd3c565b67ffffffffffffffff8111156153aa576153aa61c892565b6040519080825280601f01601f1916602001820160405280156153d4576020820181803683370190505b5060208054604080516397d340f560e01b815290519394506002936001600160a01b03909216926397d340f5926004808401938290030181865afa158015615420573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615444919061ca38565b61544e919061cd3c565b61545990600161cb8c565b67ffffffffffffffff8111156154715761547161c892565b6040519080825280601f01601f19166020018201604052801561549b576020820181803683370190505b50602a906154a9908261c908565b50604051630618f58760e51b81527f9507fb3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561551657600080fd5b505af115801561552a573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250633b28393391506034016106a2565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180516001600160e01b0316630427d73b60e51b17905251630618f58760e51b81527f60ee1247000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561561f57600080fd5b505af1158015615633573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250631cb5ea75915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526106d7926001600160a01b0390911690869060009060289060040161ccee565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015612cc25760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561579b57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161575d5790505b505050505081525050815260200190600101906156f1565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180516001600160e01b0316630427d73b60e51b17905251630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561586657600080fd5b505af115801561587a573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911693506306cb8983925001613ede565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015612cc25783829060005260206000200180546158e09061c5c5565b80601f016020809104026020016040519081016040528092919081815260200182805461590c9061c5c5565b80156159595780601f1061592e57610100808354040283529160200191615959565b820191906000526020600020905b81548152906001019060200180831161593c57829003601f168201915b5050505050815260200190600101906158c1565b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180516001600160e01b0316630427d73b60e51b1790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015615a4257600080fd5b505af1158015615a56573d6000803e3d6000fd5b505060215460255460265460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039283169450911691507f306ee13f48319a123b222c69908e44dcf91abffc20cacc502e3cf5a4ff23e0e49060340160408051601f1981840301815290829052615ad6918690602c9060289061cdd5565b60405180910390a3602080546026546040516001600160a01b0392831693631cb5ea7593612ef49316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60085460009060ff1615615b36575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015615bc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615beb919061ca38565b1415905090565b604051630618f58760e51b81527f5d67094f000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015615c5e57600080fd5b505af1158015615c72573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637c0dcb5f915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168352612980926000916001600160a01b03169060289060040161cc83565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180516001600160e01b0316630427d73b60e51b17905251630618f58760e51b81527f5d67094f000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015615dbb57600080fd5b505af1158015615dcf573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b0316925063048ae42c915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526106d7926000916001600160a01b031690879060019060289060040161ca51565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180516001600160e01b0316630427d73b60e51b17905251630618f58760e51b81527f60ee1247000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015615f1d57600080fd5b505af1158015615f31573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b0316925063048ae42c915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526106d7926001916001600160a01b031690879060009060289060040161ca51565b60208054604080516397d340f560e01b815290516000936002936001600160a01b0316926397d340f592600480830193928290030181865afa158015616016573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061603a919061ca38565b616044919061cd3c565b67ffffffffffffffff81111561605c5761605c61c892565b6040519080825280601f01601f191660200182016040528015616086576020820181803683370190505b5060208054604080516397d340f560e01b815290519394506002936001600160a01b03909216926397d340f5926004808401938290030181865afa1580156160d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906160f6919061ca38565b616100919061cd3c565b61610b90600161cb8c565b67ffffffffffffffff8111156161235761612361c892565b6040519080825280601f01601f19166020018201604052801561614d576020820181803683370190505b50602a9061615b908261c908565b50604051630618f58760e51b81527f9507fb3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156161c857600080fd5b505af11580156161dc573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250632810ae63915060340161336e565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa15801561626f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616293919061ca38565b6021546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526101236004820152602481018390529192506001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015616300573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616324919061c870565b506027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561639757600080fd5b505af11580156163ab573d6000803e3d6000fd5b50506021546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a60048201526001600160a01b03909116925063f687d12a9150602401600060405180830381600087803b15801561640e57600080fd5b505af1158015616422573d6000803e3d6000fd5b5050604051630618f58760e51b81527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b15801561649357600080fd5b505af11580156164a7573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637c0dcb5f915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261653c9287916001600160a01b03169060289060040161cc83565b600060405180830381600087803b15801561655657600080fd5b505af1158015612436573d6000803e3d6000fd5b60208054604080516397d340f560e01b815290516000936002936001600160a01b0316926397d340f592600480830193928290030181865afa1580156165b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906165d8919061ca38565b6165e2919061cd3c565b67ffffffffffffffff8111156165fa576165fa61c892565b6040519080825280601f01601f191660200182016040528015616624576020820181803683370190505b5060208054604080516397d340f560e01b815290519394506002936001600160a01b03909216926397d340f5926004808401938290030181865afa158015616670573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616694919061ca38565b61669e919061cd3c565b6166a990600161cb8c565b67ffffffffffffffff8111156166c1576166c161c892565b6040519080825280601f01601f1916602001820160405280156166eb576020820181803683370190505b50602a906166f9908261c908565b50604051630618f58760e51b81527f9507fb3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561676657600080fd5b505af115801561677a573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250631cb5ea759150603401612ef4565b604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561682857600080fd5b505af115801561683c573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911693506397a1cef192500161294c565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa1580156168b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906168d4919061ca38565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015616926573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061694a919061ca38565b6027546025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152929350163190600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156169c857600080fd5b505af11580156169dc573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015616a4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616a72919061c870565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015616ad157600080fd5b505af1158015616ae5573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b031692506397a1cef19150603401604051602081830303815290604052878460286040518563ffffffff1660e01b8152600401616b54949392919061ccbd565b600060405180830381600087803b158015616b6e57600080fd5b505af1158015616b82573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015616bd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616bf9919061ca38565b9050616c058582617a41565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015616c56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616c7a919061ca38565b9050616c868582617a41565b6027546143089085906001600160a01b031631617a41565b60606015805480602002602001604051908101604052809291908181526020018280548015612496576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311612478575050505050905090565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015616d4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616d73919061ca38565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015616dc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616de9919061ca38565b6027546026546040516001600160a01b03918216602482015292935016319060009060440160408051601f198184030181529181526020820180516001600160e01b0316630427d73b60e51b17905260255490517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015616eaf57600080fd5b505af1158015616ec3573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015616f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616f59919061c870565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015616fb857600080fd5b505af1158015616fcc573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250632810ae639150603401604051602081830303815290604052888486602c60286040518763ffffffff1660e01b81526004016139379695949392919061cb19565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015617091573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906170b5919061ca38565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015617107573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061712b919061ca38565b6027546020546040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482018190526001600160a01b0392831660848301529394509116319190737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156171c657600080fd5b505af11580156171da573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff191660208201528493506001600160a01b0390911691507f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c9060340160408051601f19818403018152602254838301835260008085526001602086015292516172779492936001600160a01b03909216928d929182919060289061cc01565b60405180910390a3602080546026546040516001600160a01b03928316936397a1cef1936172bf9316910160609190911b6bffffffffffffffffffffffff1916815260140190565b604051602081830303815290604052878460286040518563ffffffff1660e01b81526004016172f1949392919061ccbd565b600060405180830381600087803b15801561730b57600080fd5b505af115801561731f573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015617372573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190617396919061ca38565b90506173a6611b4260018761cb79565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156173f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061741b919061ca38565b90506174278582617a41565b614308611bd785600161cb8c565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180516001600160e01b0316630427d73b60e51b17905251630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156174e857600080fd5b505af11580156174fc573d6000803e3d6000fd5b5050602080546040516001600160a01b039091169350637b15118b925001611397565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015617570573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190617594919061ca38565b6020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561762557600080fd5b505af1158015617639573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff19166020820152600093506001600160a01b0390911691507f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c9060340160408051601f198184030181528282526021547f4d8943bb000000000000000000000000000000000000000000000000000000008452915190926001600160a01b039092169188916000918491634d8943bb916004808201926020929091908290030181865afa15801561770c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190617730919061ca38565b604080518082018252600081526001602082015290516177589695949392919060289061cc01565b60405180910390a3602080546026546040516001600160a01b0392831693637c0dcb5f936177a09316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526177f89287916001600160a01b03169060289060040161cc83565b600060405180830381600087803b15801561781257600080fd5b505af1158015617826573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015617879573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061789d919061ca38565b9050613dce611b42848461cb79565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260029260009216906370a0823190602401602060405180830381865afa1580156178fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190617921919061ca38565b6021549091506001600160a01b031663a9059cbb61012361794360018561cb79565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156179a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906179ca919061c870565b50604051630618f58760e51b81527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401616479565b6000617a2c61c15e565b617a37848483617ad5565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b158015617aac57600080fd5b505afa158015612436573d6000803e3d6000fd5b617ac861c15e565b6107058585858486617b50565b600080617ae28584617c50565b9050617b456040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001617b3092919061ce24565b60405160208183030381529060405285617c5c565b9150505b9392505050565b6040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201528190737109709ecfa91a80626ff3989d68f67f5b1dd12d9081906306447d5690602401600060405180830381600087803b158015617bc257600080fd5b505af1925050508015617bd3575060015b617be857617be387878787617c8a565b614308565b617bf487878787617c8a565b806001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015617c2f57600080fd5b505af1158015617c43573d6000803e3d6000fd5b5050505050505050505050565b6000617b498383617ca3565b60c08101515160009015617c8057617c7984848460c00151617cbe565b9050617b49565b617c798484617e64565b6000617c968483617f4f565b9050610705858285617f5b565b6000617caf8383618325565b617b4983836020015184617c5c565b600080617cc9618335565b90506000617cd78683618408565b90506000617cee82606001518360200151856188ae565b90506000617cfe83838989618ac0565b90506000617d0b8261993d565b602081015181519192509060030b15617d7e57898260400151604051602001617d3592919061ce46565b60408051601f19818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252617d759160040161cec7565b60405180910390fd5b6000617dc16040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001619b0c565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90617e1490849060040161cec7565b602060405180830381865afa158015617e31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190617e55919061c752565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590617eb990879060040161cec7565b600060405180830381865afa158015617ed6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617efe919081019061cf93565b90506000617f2c8285604051602001617f1892919061cfc8565b604051602081830303815290604052619d0c565b90506001600160a01b038116617a37578484604051602001617d3592919061cff7565b6000617caf8383619d1f565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201527fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61036024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90600090829063667f9d7090604401602060405180830381865afa158015617ff7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061801b919061ca38565b9050806181c257600061802d86619d2b565b604080518082018252600581527f352e302e30000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506180b8905b60408051808201825260008082526020918201528151808301909252845182528085019082015290619e0e565b806180c4575060008451115b15618147576040517f4f1ef2860000000000000000000000000000000000000000000000000000000081526001600160a01b03871690634f1ef28690618110908890889060040161ce24565b600060405180830381600087803b15801561812a57600080fd5b505af115801561813e573d6000803e3d6000fd5b505050506181bc565b6040517f3659cfe60000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152871690633659cfe690602401600060405180830381600087803b1580156181a357600080fd5b505af11580156181b7573d6000803e3d6000fd5b505050505b50610705565b8060006181ce82619d2b565b604080518082018252600581527f352e302e30000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506182309061808b565b8061823c575060008551115b156182c1576040517f9623609d0000000000000000000000000000000000000000000000000000000081526001600160a01b03831690639623609d9061828a908a908a908a9060040161d0a2565b600060405180830381600087803b1580156182a457600080fd5b505af11580156182b8573d6000803e3d6000fd5b50505050614308565b6040517f99a88ec40000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015287811660248301528316906399a88ec490604401600060405180830381600087803b158015617c2f57600080fd5b61833182826000619e22565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c906183bc90849060040161d0d3565b600060405180830381865afa1580156183d9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052618401919081019061d11a565b9250505090565b61843a6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d90506184856040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b61848e85619f25565b6020820152600061849e8661a30a565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa1580156184e0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052618508919081019061d11a565b86838560200151604051602001618522949392919061d163565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb119061857a90859060040161cec7565b600060405180830381865afa158015618597573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526185bf919081019061d11a565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f69061860790849060040161d267565b602060405180830381865afa158015618624573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190618648919061c870565b61865d5781604051602001617d35919061d2b9565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906186a290849060040161d34b565b600060405180830381865afa1580156186bf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526186e7919081019061d11a565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f69061872e90849060040161d39d565b602060405180830381865afa15801561874b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061876f919061c870565b15618804576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906187b990849060040161d39d565b600060405180830381865afa1580156187d6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526187fe919081019061d11a565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001618829919061d3ef565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161885592919061d45b565b600060405180830381865afa158015618872573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261889a919081019061d11a565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816188ca5790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061892a5761892a61d480565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061897e5761897e61d480565b60200260200101819052508460405160200161899a919061d4af565b604051602081830303815290604052816002815181106189bc576189bc61d480565b6020026020010181905250826040516020016189d8919061d51b565b604051602081830303815290604052816003815181106189fa576189fa61d480565b60200260200101819052506000618a108261993d565b602080820151604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000008185019081528251808401845260008082529086015282518084019093529051825292810192909252919250618aa1906040805180820182526000808252602091820152815180830190925284518252808501908201529061a58d565b618ab65785604051602001617d35919061d55c565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015618b10565b511590565b618c8457826020015115618bcc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401617d75565b8260c0015115618c84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401617d75565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081618c9d57905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280618cf89061d5ed565b935060ff1681518110618d0d57618d0d61d480565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001618d5e919061d60c565b604051602081830303815290604052828280618d799061d5ed565b935060ff1681518110618d8e57618d8e61d480565b60200260200101819052506040518060400160405280600681526020017f6465706c6f790000000000000000000000000000000000000000000000000000815250828280618ddb9061d5ed565b935060ff1681518110618df057618df061d480565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d65000000000000000000000000000000000000815250828280618e3d9061d5ed565b935060ff1681518110618e5257618e5261d480565b60200260200101819052508760200151828280618e6e9061d5ed565b935060ff1681518110618e8357618e8361d480565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e747261637450617468000000000000000000000000000000000000815250828280618ed09061d5ed565b935060ff1681518110618ee557618ee561d480565b602090810291909101015287518282618efd8161d5ed565b935060ff1681518110618f1257618f1261d480565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280618f5f9061d5ed565b935060ff1681518110618f7457618f7461d480565b6020026020010181905250618f884661a5ee565b8282618f938161d5ed565b935060ff1681518110618fa857618fa861d480565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280618ff59061d5ed565b935060ff168151811061900a5761900a61d480565b6020026020010181905250868282806190229061d5ed565b935060ff16815181106190375761903761d480565b602090810291909101015285511561915e5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826190888161d5ed565b935060ff168151811061909d5761909d61d480565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d906190ed90899060040161cec7565b600060405180830381865afa15801561910a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052619132919081019061d11a565b828261913d8161d5ed565b935060ff16815181106191525761915261d480565b60200260200101819052505b84602001511561922e5760408051808201909152601281527f2d2d766572696679536f75726365436f64650000000000000000000000000000602082015282826191a78161d5ed565b935060ff16815181106191bc576191bc61d480565b60200260200101819052506040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152508282806192099061d5ed565b935060ff168151811061921e5761921e61d480565b60200260200101819052506193f5565b619266618b0b8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6192f95760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826192a98161d5ed565b935060ff16815181106192be576192be61d480565b60200260200101819052508460a001516040516020016192de919061d4af565b6040516020818303038152906040528282806192099061d5ed565b8460c0015115801561933c57506040808901518151808301835260008082526020918201528251808401909352815183529081019082015261933a90511590565b155b156193f55760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826193808161d5ed565b935060ff16815181106193955761939561d480565b60200260200101819052506193a98861a68e565b6040516020016193b9919061d4af565b6040516020818303038152906040528282806193d49061d5ed565b935060ff16815181106193e9576193e961d480565b60200260200101819052505b6040808601518151808301835260008082526020918201528251808401909352815183529081019082015261942990511590565b6194be5760408051808201909152600b81527f2d2d72656c6179657249640000000000000000000000000000000000000000006020820152828261946c8161d5ed565b935060ff16815181106194815761948161d480565b6020026020010181905250846040015182828061949d9061d5ed565b935060ff16815181106194b2576194b261d480565b60200260200101819052505b6060850151156195df5760408051808201909152600681527f2d2d73616c740000000000000000000000000000000000000000000000000000602082015282826195078161d5ed565b935060ff168151811061951c5761951c61d480565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa15801561958b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526195b3919081019061d11a565b82826195be8161d5ed565b935060ff16815181106195d3576195d361d480565b60200260200101819052505b60e085015151156196865760408051808201909152600a81527f2d2d6761734c696d697400000000000000000000000000000000000000000000602082015282826196298161d5ed565b935060ff168151811061963e5761963e61d480565b602002602001018190525061965a8560e001516000015161a5ee565b82826196658161d5ed565b935060ff168151811061967a5761967a61d480565b60200260200101819052505b60e085015160200151156197305760408051808201909152600a81527f2d2d676173507269636500000000000000000000000000000000000000000000602082015282826196d38161d5ed565b935060ff16815181106196e8576196e861d480565b60200260200101819052506197048560e001516020015161a5ee565b828261970f8161d5ed565b935060ff16815181106197245761972461d480565b60200260200101819052505b60e085015160400151156197da5760408051808201909152600e81527f2d2d6d61784665655065724761730000000000000000000000000000000000006020820152828261977d8161d5ed565b935060ff16815181106197925761979261d480565b60200260200101819052506197ae8560e001516040015161a5ee565b82826197b98161d5ed565b935060ff16815181106197ce576197ce61d480565b60200260200101819052505b60e085015160600151156198845760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826198278161d5ed565b935060ff168151811061983c5761983c61d480565b60200260200101819052506198588560e001516060015161a5ee565b82826198638161d5ed565b935060ff16815181106198785761987861d480565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156198a2576198a261c892565b6040519080825280602002602001820160405280156198d557816020015b60608152602001906001900390816198c05790505b50905060005b8260ff168160ff16101561992e57838160ff16815181106198fe576198fe61d480565b6020026020010151828260ff168151811061991b5761991b61d480565b60209081029190910101526001016198db565b5093505050505b949350505050565b6199646040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916199ea9186910161d677565b600060405180830381865afa158015619a07573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052619a2f919081019061d11a565b90506000619a3d868361b17d565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401619a6d919061c4b7565b6000604051808303816000875af1158015619a8c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052619ab4919081019061d6be565b805190915060030b15801590619acd5750602081015151155b8015619adc5750604081015151155b15618ab65781600081518110619af457619af461d480565b6020026020010151604051602001617d35919061d774565b60606000619b418560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150619b789082905b9061b2d2565b15619cd5576000619bf582619bef84619be9619bbb8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b9061b2f9565b9061b35b565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150619c5990829061b2d2565b15619cc357604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152619cc0905b829061b3e0565b90505b619ccc8161b406565b92505050617b49565b8215619cee578484604051602001617d3592919061d960565b5050604080516020810190915260008152617b49565b509392505050565b6000808251602084016000f09392505050565b61833182826001619e22565b60408051600481526024810182526020810180516001600160e01b03167fad3cb1cc00000000000000000000000000000000000000000000000000000000179052905160609160009182916001600160a01b03861691619d8b919061da07565b600060405180830381855afa9150503d8060008114619dc6576040519150601f19603f3d011682016040523d82523d6000602084013e619dcb565b606091505b5091509150818015619dde575060208151115b15619df75780806020019051810190619935919061d11a565b505060408051602081019091526000815292915050565b6000619e1a838361b46f565b159392505050565b8160a0015115619e3157505050565b6000619e3e84848461b54a565b90506000619e4b8261993d565b602081015181519192509060030b158015619ee75750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152619ee790604080518082018252600080825260209182015281518083019092528451825280850190820152619b72565b15619ef457505050505050565b60408201515115619f14578160400151604051602001617d35919061da23565b80604051602001617d35919061da81565b60606000619f5a8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150619fbf905b829061a58d565b1561a02e57604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617b499061a02990839061bae5565b61b406565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261a090905b829061bb6f565b60010361a15d57604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261a0f690619cb9565b50604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617b499061a029905b839061b3e0565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261a1bc90619fb8565b1561a2f357604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061a22490839061bc09565b90506000816001835161a237919061cb79565b8151811061a2475761a24761d480565b6020026020010151905061a2ea61a02961a2bd6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529061bae5565b95945050505050565b82604051602001617d35919061daec565b50919050565b6060600061a33f8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061a3a190619fb8565b1561a3af57617b498161b406565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261a40e9061a089565b60010361a47857604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617b499061a0299061a156565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261a4d790619fb8565b1561a2f357604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061a53f90839061bc09565b905060018151111561a57b57806002825161a55a919061cb79565b8151811061a56a5761a56a61d480565b602002602001015192505050919050565b5082604051602001617d35919061daec565b80518251600091111561a5a257506000617a3b565b8151835160208501516000929161a5b89161cb8c565b61a5c2919061cb79565b90508260200151810361a5d9576001915050617a3b565b82516020840151819020912014905092915050565b6060600061a5fb8361bcae565b600101905060008167ffffffffffffffff81111561a61b5761a61b61c892565b6040519080825280601f01601f19166020018201604052801561a645576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461a64f57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e534544000000000000000000000000000000000000000000008184019081528551808701875283815284019290925284518086019095525184529083015260609161a71a905b8290619e0e565b1561a75a57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261a7b99061a713565b1561a7f957505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d495400000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261a8589061a713565b1561a89857505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261a8f79061a713565b8061a95c5750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261a95c9061a713565b1561a99c57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261a9fb9061a713565b8061aa605750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261aa609061a713565b1561aaa057505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261aaff9061a713565b8061ab645750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261ab649061a713565b1561aba457505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261ac039061a713565b8061ac685750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261ac689061a713565b1561aca857505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261ad079061a713565b1561ad4757505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261ada69061a713565b1561ade657505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261ae459061a713565b1561ae8557505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261aee49061a713565b1561af2457505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261af839061a713565b1561afc357505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261b0229061a713565b8061b0875750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261b0879061a713565b1561b0c757505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261b1269061a713565b1561b16657505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151617d35929060200161dbca565b60608060005b845181101561b208578185828151811061b19f5761b19f61d480565b602002602001015160405160200161b1b892919061cfc8565b60405160208183030381529060405291506001855161b1d7919061cb79565b811461b200578160405160200161b1ee919061dd33565b60405160208183030381529060405291505b60010161b183565b5060408051600380825260808201909252600091816020015b606081526020019060019003908161b221579050509050838160008151811061b24c5761b24c61d480565b60200260200101819052506040518060400160405280600281526020017f2d630000000000000000000000000000000000000000000000000000000000008152508160018151811061b2a05761b2a061d480565b6020026020010181905250818160028151811061b2bf5761b2bf61d480565b6020908102919091010152949350505050565b602080830151835183519284015160009361b2f0929184919061bd90565b14159392505050565b6040805180820190915260008082526020820152600061b32b846000015185602001518560000151866020015161bea1565b905083602001518161b33d919061cb79565b8451859061b34c90839061cb79565b90525060208401525090919050565b604080518082019091526000808252602082015281518351101561b380575081617a3b565b602080830151908401516001911461b3a75750815160208481015190840151829020919020145b801561b3d85782518451859061b3be90839061cb79565b905250825160208501805161b3d490839061cb8c565b9052505b509192915050565b604080518082019091526000808252602082015261b3ff83838361bfc1565b5092915050565b60606000826000015167ffffffffffffffff81111561b4275761b42761c892565b6040519080825280601f01601f19166020018201604052801561b451576020820181803683370190505b509050600060208201905061b3ff818560200151866000015161c06c565b815181516000919081111561b482575081515b6020808501519084015160005b8381101561b53b578251825180821461b50b57600019602087101561b4ea5760018461b4bc89602061cb79565b61b4c6919061cb8c565b61b4d190600861dd74565b61b4dc90600261de72565b61b4e6919061cb79565b1990505b818116838216818103911461b508579750617a3b9650505050505050565b50505b61b51660208661cb8c565b945061b52360208561cb8c565b9350505060208161b534919061cb8c565b905061b48f565b5084518651618ab6919061de7e565b6060600061b556618335565b6040805160ff808252612000820190925291925060009190816020015b606081526020019060019003908161b57357905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061b5ce9061d5ed565b935060ff168151811061b5e35761b5e361d480565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e330000000000000000000000000000000000000000000000000081525060405160200161b634919061de9e565b60405160208183030381529060405282828061b64f9061d5ed565b935060ff168151811061b6645761b66461d480565b60200260200101819052506040518060400160405280600881526020017f76616c696461746500000000000000000000000000000000000000000000000081525082828061b6b19061d5ed565b935060ff168151811061b6c65761b6c661d480565b60200260200101819052508260405160200161b6e2919061d51b565b60405160208183030381529060405282828061b6fd9061d5ed565b935060ff168151811061b7125761b71261d480565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e74726163740000000000000000000000000000000000000000000081525082828061b75f9061d5ed565b935060ff168151811061b7745761b77461d480565b602002602001018190525061b789878461c0e6565b828261b7948161d5ed565b935060ff168151811061b7a95761b7a961d480565b60209081029190910101528551511561b8555760408051808201909152600b81527f2d2d7265666572656e63650000000000000000000000000000000000000000006020820152828261b7fb8161d5ed565b935060ff168151811061b8105761b81061d480565b602002602001018190525061b82986600001518461c0e6565b828261b8348161d5ed565b935060ff168151811061b8495761b84961d480565b60200260200101819052505b85608001511561b8c35760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261b89e8161d5ed565b935060ff168151811061b8b35761b8b361d480565b602002602001018190525061b929565b841561b9295760408051808201909152601281527f2d2d726571756972655265666572656e636500000000000000000000000000006020820152828261b9088161d5ed565b935060ff168151811061b91d5761b91d61d480565b60200260200101819052505b6040860151511561b9c55760408051808201909152600d81527f2d2d756e73616665416c6c6f77000000000000000000000000000000000000006020820152828261b9738161d5ed565b935060ff168151811061b9885761b98861d480565b6020026020010181905250856040015182828061b9a49061d5ed565b935060ff168151811061b9b95761b9b961d480565b60200260200101819052505b85606001511561ba2f5760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261ba0e8161d5ed565b935060ff168151811061ba235761ba2361d480565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561ba4d5761ba4d61c892565b60405190808252806020026020018201604052801561ba8057816020015b606081526020019060019003908161ba6b5790505b50905060005b8260ff168160ff16101561bad957838160ff168151811061baa95761baa961d480565b6020026020010151828260ff168151811061bac65761bac661d480565b602090810291909101015260010161ba86565b50979650505050505050565b604080518082019091526000808252602082015281518351101561bb0a575081617a3b565b8151835160208501516000929161bb209161cb8c565b61bb2a919061cb79565b6020840151909150600190821461bb4b575082516020840151819020908220145b801561bb665783518551869061bb6290839061cb79565b9052505b50929392505050565b600080826000015161bb93856000015186602001518660000151876020015161bea1565b61bb9d919061cb8c565b90505b8351602085015161bbb1919061cb8c565b811161b3ff578161bbc18161dee3565b925050826000015161bbf885602001518361bbdc919061cb79565b865161bbe8919061cb79565b838660000151876020015161bea1565b61bc02919061cb8c565b905061bba0565b6060600061bc17848461bb6f565b61bc2290600161cb8c565b67ffffffffffffffff81111561bc3a5761bc3a61c892565b60405190808252806020026020018201604052801561bc6d57816020015b606081526020019060019003908161bc585790505b50905060005b8151811015619d045761bc8961a029868661b3e0565b82828151811061bc9b5761bc9b61d480565b602090810291909101015260010161bc73565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061bcf7577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831061bd23576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061bd4157662386f26fc10000830492506010015b6305f5e100831061bd59576305f5e100830492506008015b612710831061bd6d57612710830492506004015b6064831061bd7f576064830492506002015b600a8310617a3b5760010192915050565b60008085841161be97576020841161be43576000841561bddb57600161bdb786602061cb79565b61bdc290600861dd74565b61bdcd90600261de72565b61bdd7919061cb79565b1990505b835181168561bdea898961cb8c565b61bdf4919061cb79565b805190935082165b81811461be2e5787841161be165787945050505050619935565b8361be208161defd565b94505082845116905061bdfc565b61be38878561cb8c565b945050505050619935565b83832061be50858861cb79565b61be5a908761cb8c565b91505b85821061be955784822080820361be825761be78868461cb8c565b9350505050619935565b61be8d60018461cb79565b92505061be5d565b505b5092949350505050565b6000838186851161bfac576020851161bf5b576000851561beed57600161bec987602061cb79565b61bed490600861dd74565b61bedf90600261de72565b61bee9919061cb79565b1990505b8451811660008761befe8b8b61cb8c565b61bf08919061cb79565b855190915083165b82811461bf4d5781861061bf355761bf288b8b61cb8c565b9650505050505050619935565b8561bf3f8161dee3565b96505083865116905061bf10565b859650505050505050619935565b508383206000905b61bf6d868961cb79565b821161bfaa5785832080820361bf895783945050505050619935565b61bf9460018561cb8c565b935050818061bfa29061dee3565b92505061bf63565b505b61bfb6878761cb8c565b979650505050505050565b6040805180820190915260008082526020820152600061bff3856000015186602001518660000151876020015161bea1565b60208087018051918601919091525190915061c00f908261cb79565b83528451602086015161c022919061cb8c565b810361c031576000855261c063565b8351835161c03f919061cb8c565b8551869061c04e90839061cb79565b905250835161c05d908261cb8c565b60208601525b50909392505050565b6020811061c0a4578151835261c08360208461cb8c565b925061c09060208361cb8c565b915061c09d60208261cb79565b905061c06c565b600019811561c0d357600161c0ba83602061cb79565b61c0c69061010061de72565b61c0d0919061cb79565b90505b9151835183169219169190911790915250565b6060600061c0f48484618408565b805160208083015160405193945061c10e9390910161df14565b60405160208183030381529060405291505092915050565b610b67806200df6d83390190565b61063a806200ead483390190565b61106f806200f10e83390190565b612072806201017d83390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161c1a161c1a6565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161c1a16040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b8181101561c2585783516001600160a01b031683526020938401939092019160010161c231565b509095945050505050565b60005b8381101561c27e57818101518382015260200161c266565b50506000910152565b6000815180845261c29f81602086016020860161c263565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561c3af577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b8181101561c395577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261c37f84865161c287565b602095860195909450929092019160010161c345565b50919750505060209485019492909201915060010161c2db565b50929695505050505050565b600081518084526020840193506020830160005b8281101561c40f5781517fffffffff000000000000000000000000000000000000000000000000000000001686526020958601959091019060010161c3cf565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561c3af577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516040875261c485604088018261c287565b905060208201519150868103602088015261c4a0818361c3bb565b96505050602093840193919091019060010161c441565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561c3af577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845261c51985835161c287565b9450602093840193919091019060010161c4df565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561c3af577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b038151168652602081015190506040602087015261c5af604087018261c3bb565b955050602093840193919091019060010161c556565b600181811c9082168061c5d957607f821691505b60208210810361a304577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600081546001600160a01b038116845260ff8160a01c1615156020850152506001600160a01b0360018301541660408401526002820160a060608501526000815461c65c8161c5c5565b8060a0880152600182166000811461c67b576001811461c6b55761c6e9565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831660c089015260c082151560051b890101935061c6e9565b84600052602060002060005b8381101561c6e05781548a820160c0015260019091019060200161c6c1565b890160c0019450505b50505060038401546080860152809250505092915050565b60a08152600061c71460a083018861c287565b866020840152856040840152828103606084015261c732818661c287565b9050828103608084015261c746818561c612565b98975050505050505050565b60006020828403121561c76457600080fd5b81516001600160a01b0381168114617b4957600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff881660408301528660608301526003861061c835577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a083015261c85660c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b60006020828403121561c88257600080fd5b81518015158114617b4957600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b601f821115613dce57806000526020600020601f840160051c8101602085101561c8e85750805b601f840160051c820191505b81811015610705576000815560010161c8f4565b815167ffffffffffffffff81111561c9225761c92261c892565b61c9368161c930845461c5c5565b8461c8c1565b6020601f82116001811461c96a576000831561c9525750848201515b600019600385901b1c1916600184901b178455610705565b600084815260208120601f198516915b8281101561c99a578785015182556020948501946001909201910161c97a565b508482101561c9b85786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b60e08152600061c9da60e083018961c287565b8760208401526001600160a01b0387166040840152828103606084015261ca01818761c287565b85546080850152600186015460ff16151560a0850152905082810360c084015261ca2b818561c612565b9998505050505050505050565b60006020828403121561ca4a57600080fd5b5051919050565b60c08152600061ca6460c083018961c287565b8760208401526001600160a01b0387166040840152828103606084015261ca8b818761c287565b905084608084015282810360a084015261ca2b818561c612565b6101208152600061caba61012083018b61c287565b6001600160a01b038a16602084015288604084015287606084015286608084015282810360a084015261caed818761c287565b855460c0850152600186015460ff16151560e085015290505b828103610100840152617e55818561c612565b60e08152600061cb2c60e083018961c287565b876020840152866040840152828103606084015261ca01818761c287565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115617a3b57617a3b61cb4a565b80820180821115617a3b57617a3b61cb4a565b6101208152600061cbb461012083018b61c287565b6001600160a01b038a16602084015288604084015287606084015286608084015282810360a084015261cbe7818761c287565b855160c08501526020860151151560e0850152905061cb06565b6101208152600061cc1661012083018a61c287565b6001600160a01b03891660208401528760408401528660608401528560808401528281038060a08501526000825261cc5d60c0850187805182526020908101511515910152565b602081016101008501525061cc75602082018561c612565b9a9950505050505050505050565b60808152600061cc96608083018761c287565b8560208401526001600160a01b0385166040840152828103606084015261bfb6818561c612565b60808152600061ccd0608083018761c287565b856020840152846040840152828103606084015261bfb6818561c612565b60a08152600061cd0160a083018861c287565b6001600160a01b0387166020840152828103604084015261cd22818761c287565b9050846060840152828103608084015261c746818561c612565b60008261cd72577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60c08152600061cd8a60c083018861c287565b6001600160a01b0387166020840152828103604084015261cdab818761c287565b85546060850152600186015460ff1615156080850152905082810360a084015261c746818561c612565b60a08152600061cde860a083018761c287565b828103602084015261cdfa818761c287565b85546040850152600186015460ff16151560608501529050828103608084015261bfb6818561c612565b6001600160a01b0383168152604060208201526000619935604083018461c287565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161ce7e81601a85016020880161c263565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161cebb81601c84016020880161c263565b01601c01949350505050565b602081526000617b49602083018461c287565b6040516060810167ffffffffffffffff8111828210171561cefd5761cefd61c892565b60405290565b60008067ffffffffffffffff84111561cf1e5761cf1e61c892565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561cf4d5761cf4d61c892565b60405283815290508082840185101561cf6557600080fd5b619d0484602083018561c263565b600082601f83011261cf8457600080fd5b617b498383516020850161cf03565b60006020828403121561cfa557600080fd5b815167ffffffffffffffff81111561cfbc57600080fd5b617a378482850161cf73565b6000835161cfda81846020880161c263565b83519083019061cfee81836020880161c263565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161d02f81601a85016020880161c263565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161d06c81603384016020880161c263565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b6001600160a01b03841681526001600160a01b038316602082015260606040820152600061a2ea606083018461c287565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000617b49608083018461c287565b60006020828403121561d12c57600080fd5b815167ffffffffffffffff81111561d14357600080fd5b8201601f8101841361d15457600080fd5b617a378482516020840161cf03565b6000855161d175818460208a0161c263565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161d1af816001840160208a0161c263565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161d1ed81600284016020890161c263565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161d22f81600284016020880161c263565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061d27a604083018461c287565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161d2f181601f85016020870161c263565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061d35e604083018461c287565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061d3b0604083018461c287565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161d42781601485016020870161c263565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061d46e604083018561c287565b8281036020840152617b45818561c287565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161d4e781600185016020870161c263565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161d52d81846020870161c263565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161d5e081604b85016020870161c263565b91909101604b0192915050565b600060ff821660ff810361d6035761d60361cb4a565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161d66a81602985016020870161c263565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000617b49608083018461c287565b60006020828403121561d6d057600080fd5b815167ffffffffffffffff81111561d6e757600080fd5b82016060818503121561d6f957600080fd5b61d70161ceda565b81518060030b811461d71257600080fd5b8152602082015167ffffffffffffffff81111561d72e57600080fd5b61d73a8682850161cf73565b602083015250604082015167ffffffffffffffff81111561d75a57600080fd5b61d7668682850161cf73565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161d7d281602185016020870161c263565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161d9be81602185016020880161c263565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161d9fb81602e84016020880161c263565b01602e01949350505050565b6000825161da1981846020870161c263565b9190910192915050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161d66a81602985016020870161c263565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161dadf81602285016020870161c263565b9190910160220192915050565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161db2481600e85016020870161c263565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161dc0281601885016020880161c263565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161dc3f81601c84016020880161c263565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161dd4581846020870161c263565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b8082028115828204841417617a3b57617a3b61cb4a565b6001815b600184111561ddc65780850481111561ddaa5761ddaa61cb4a565b600184161561ddb857908102905b60019390931c92800261dd8f565b935093915050565b60008261dddd57506001617a3b565b8161ddea57506000617a3b565b816001811461de00576002811461de0a5761de26565b6001915050617a3b565b60ff84111561de1b5761de1b61cb4a565b50506001821b617a3b565b5060208310610133831016604e8410600b841016171561de49575081810a617a3b565b61de56600019848461dd8b565b806000190482111561de6a5761de6a61cb4a565b029392505050565b6000617b49838361ddce565b818103600083128015838313168383128216171561b3ff5761b3ff61cb4a565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161ded681601c85016020870161c263565b91909101601c0192915050565b6000600019820361def65761def661cb4a565b5060010190565b60008161df0c5761df0c61cb4a565b506000190190565b6000835161df2681846020880161c263565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161df6081600184016020880161c263565b0160010194935050505056fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea2646970667358221220b09c98b42d894b1b92a74ecc691587bcc17012fff7ef3bcfa6fe755f9b6255a564736f6c634300081a00336080604052348015600f57600080fd5b5061061b8061001f6000396000f3fe60806040526004361061002a5760003560e01c80635bcfd61614610033578063c9028a361461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e366004610151565b610073565b34801561005f57600080fd5b5061003161006e36600461020e565b6100ee565b6060811561008a576100878284018461027f565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610375565b6100c560408a0160208b016103e1565b896040013533866040516100de96959493929190610445565b60405180910390a1505050505050565b7fd75bb509c8f32a725aac99ac5c4541060dbfb889a3aca8314d6f00395618c4c48160405161011d9190610507565b60405180910390a150565b803573ffffffffffffffffffffffffffffffffffffffff8116811461014c57600080fd5b919050565b60008060008060006080868803121561016957600080fd5b853567ffffffffffffffff81111561018057600080fd5b86016060818903121561019257600080fd5b94506101a060208701610128565b935060408601359250606086013567ffffffffffffffff8111156101c357600080fd5b8601601f810188136101d457600080fd5b803567ffffffffffffffff8111156101eb57600080fd5b8860208284010111156101fd57600080fd5b959894975092955050506020019190565b60006020828403121561022057600080fd5b813567ffffffffffffffff81111561023757600080fd5b82016080818503121561024957600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561029157600080fd5b813567ffffffffffffffff8111156102a857600080fd5b8201601f810184136102b957600080fd5b803567ffffffffffffffff8111156102d3576102d3610250565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033f5761033f610250565b60405281815282820160200186101561035757600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126103aa57600080fd5b83018035915067ffffffffffffffff8211156103c557600080fd5b6020019150368190038213156103da57600080fd5b9250929050565b6000602082840312156103f357600080fd5b61024982610128565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60a08152600061045960a08301888a6103fc565b73ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff851660608401528281036080840152835180825260005b818110156104c3576020818701810151848301820152016104a7565b5060006020828401015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011683010192505050979650505050505050565b6020815273ffffffffffffffffffffffffffffffffffffffff61052983610128565b16602082015273ffffffffffffffffffffffffffffffffffffffff61055060208401610128565b166040820152600080604084013590508060608401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261059c57600080fd5b830160208101903567ffffffffffffffff8111156105b957600080fd5b8036038213156105c857600080fd5b6080808501526105dc60a0850182846103fc565b9594505050505056fea264697066735822122061cdfae648cbae7594990dcb3c026ac50f91568f9bdbabb7185e35e94b64bb7d64736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea2646970667358221220b13ccf97234dc9b7f658234f9bf37a57d08f465bb99c431b865174e7a399a30764736f6c634300081a003360c060405234801561001057600080fd5b5060405161207238038061207283398101604081905261002f916101f0565b6001600160a01b038216158061004c57506001600160a01b038116155b1561006a5760405163d92e233d60e01b815260040160405180910390fd5b60066100768982610342565b5060076100838882610342565b506008805460ff191660ff881617905560808590528360028111156100aa576100aa610400565b60a08160028111156100be576100be610400565b905250600192909255600080546001600160a01b039283166001600160a01b0319909116179055600880549190921661010002610100600160a81b0319909116179055506104169350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261013357600080fd5b81516001600160401b0381111561014c5761014c61010c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561017a5761017a61010c565b60405281815283820160200185101561019257600080fd5b60005b828110156101b157602081860181015183830182015201610195565b506000918101602001919091529392505050565b8051600381106101d457600080fd5b919050565b80516001600160a01b03811681146101d457600080fd5b600080600080600080600080610100898b03121561020d57600080fd5b88516001600160401b0381111561022357600080fd5b61022f8b828c01610122565b60208b015190995090506001600160401b0381111561024d57600080fd5b6102598b828c01610122565b975050604089015160ff8116811461027057600080fd5b60608a0151909650945061028660808a016101c5565b60a08a0151909450925061029c60c08a016101d9565b91506102aa60e08a016101d9565b90509295985092959890939650565b600181811c908216806102cd57607f821691505b6020821081036102ed57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561033d57806000526020600020601f840160051c8101602085101561031a5750805b601f840160051c820191505b8181101561033a5760008155600101610326565b50505b505050565b81516001600160401b0381111561035b5761035b61010c565b61036f8161036984546102b9565b846102f3565b6020601f8211600181146103a3576000831561038b5750848201515b600019600385901b1c1916600184901b17845561033a565b600084815260208120601f198516915b828110156103d357878501518255602094850194600190920191016103b3565b50848210156103f15786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a051611c1b61045760003960006103440152600081816102f001528181610bdc01528181610ce201528181610efe01526110040152611c1b6000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c806395d89b41116100f9578063ccc7759911610097578063eddeb12311610071578063eddeb12314610461578063f2441b3214610474578063f687d12a14610494578063fc5fecd5146104a757600080fd5b8063ccc77599146103d4578063d9eeebed146103e7578063dd62ed3e1461041b57600080fd5b8063b84c8246116100d3578063b84c824614610386578063c47f00271461039b578063c7012626146103ae578063c835d7cc146103c157600080fd5b806395d89b4114610337578063a3413d031461033f578063a9059cbb1461037357600080fd5b80633ce4a5bc116101665780634d8943bb116101405780634d8943bb146102ac57806370a08231146102b557806385e1f4d0146102eb5780638b851b951461031257600080fd5b80633ce4a5bc1461024657806342966c681461028657806347e7ef241461029957600080fd5b806318160ddd1161019757806318160ddd1461021657806323b872dd1461021e578063313ce5671461023157600080fd5b806306fdde03146101be578063091d2788146101dc578063095ea7b3146101f3575b600080fd5b6101c66104ba565b6040516101d39190611648565b60405180910390f35b6101e560015481565b6040519081526020016101d3565b610206610201366004611687565b61054c565b60405190151581526020016101d3565b6005546101e5565b61020661022c3660046116b3565b610563565b60085460405160ff90911681526020016101d3565b61026173735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d3565b6102066102943660046116f4565b6105fa565b6102066102a7366004611687565b61060e565b6101e560025481565b6101e56102c336600461170d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6101e57f000000000000000000000000000000000000000000000000000000000000000081565b60085461026190610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6101c6610767565b6103667f000000000000000000000000000000000000000000000000000000000000000081565b6040516101d3919061172a565b610206610381366004611687565b610776565b610399610394366004611832565b610783565b005b6103996103a9366004611832565b6107e0565b6102066103bc366004611883565b610839565b6103996103cf36600461170d565b610988565b6103996103e236600461170d565b610a9c565b6103ef610bb0565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101d3565b6101e56104293660046118dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205490565b61039961046f3660046116f4565b610dce565b6000546102619073ffffffffffffffffffffffffffffffffffffffff1681565b6103996104a23660046116f4565b610e50565b6103ef6104b53660046116f4565b610ed2565b6060600680546104c990611915565b80601f01602080910402602001604051908101604052809291908181526020018280546104f590611915565b80156105425780601f1061051757610100808354040283529160200191610542565b820191906000526020600020905b81548152906001019060200180831161052557829003601f168201915b5050505050905090565b60006105593384846110ee565b5060015b92915050565b60006105708484846111f7565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460209081526040808320338452909152902054828110156105db576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105ef85336105ea8685611997565b6110ee565b506001949350505050565b600061060633836113b2565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab1480159061064c575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156106755750600854610100900473ffffffffffffffffffffffffffffffffffffffff163314155b156106ac576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106b683836114f4565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526107569186906119aa565b60405180910390a250600192915050565b6060600780546104c990611915565b60006105593384846111f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab146107d0576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60076107dc8282611a1b565b5050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461082d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60066107dc8282611a1b565b6000806000610846610bb0565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156108d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fc9190611b34565b610932576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61093c33856113b2565b60025460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161097591899189918791611b56565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146109d5576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a22576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610ae9576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610b36576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c679190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610cb6576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d699190611ba2565b905080600003610da5576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060025460015483610db89190611bbb565b610dc29190611bd2565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e1b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610a91565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e9d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610f65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f899190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610fd8576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015611067573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108b9190611ba2565b9050806000036110c7576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000906110d78784611bbb565b6110e19190611bd2565b9296929550919350505050565b73ffffffffffffffffffffffffffffffffffffffff831661113b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611188576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611244576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611291576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040902054818110156112f1576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112fb8282611997565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260036020526040808220939093559085168152908120805484929061133e908490611bd2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113a491815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff82166113ff576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260409020548181101561145f576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114698282611997565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260036020526040812091909155600580548492906114a4908490611997565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016111ea565b73ffffffffffffffffffffffffffffffffffffffff8216611541576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008282546115539190611bd2565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805483929061158d908490611bd2565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561160a576020818501810151868301820152016115ee565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061165b60208301846115e4565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461168457600080fd5b50565b6000806040838503121561169a57600080fd5b82356116a581611662565b946020939093013593505050565b6000806000606084860312156116c857600080fd5b83356116d381611662565b925060208401356116e381611662565b929592945050506040919091013590565b60006020828403121561170657600080fd5b5035919050565b60006020828403121561171f57600080fd5b813561165b81611662565b6020810160038310611765577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff8411156117b5576117b561176b565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff821117156118025761180261176b565b60405283815290508082840185101561181a57600080fd5b83836020830137600060208583010152509392505050565b60006020828403121561184457600080fd5b813567ffffffffffffffff81111561185b57600080fd5b8201601f8101841361186c57600080fd5b61187b8482356020840161179a565b949350505050565b6000806040838503121561189657600080fd5b823567ffffffffffffffff8111156118ad57600080fd5b8301601f810185136118be57600080fd5b6118cd8582356020840161179a565b95602094909401359450505050565b600080604083850312156118ef57600080fd5b82356118fa81611662565b9150602083013561190a81611662565b809150509250929050565b600181811c9082168061192957607f821691505b602082108103611962577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561055d5761055d611968565b6040815260006119bd60408301856115e4565b90508260208301529392505050565b601f821115611a1657806000526020600020601f840160051c810160208510156119f35750805b601f840160051c820191505b81811015611a1357600081556001016119ff565b50505b505050565b815167ffffffffffffffff811115611a3557611a3561176b565b611a4981611a438454611915565b846119cc565b6020601f821160018114611a9b5760008315611a655750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611a13565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015611ae95787850151825560209485019460019092019101611ac9565b5084821015611b2557868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b600060208284031215611b4657600080fd5b8151801515811461165b57600080fd5b608081526000611b6960808301876115e4565b6020830195909552506040810192909252606090910152919050565b600060208284031215611b9757600080fd5b815161165b81611662565b600060208284031215611bb457600080fd5b5051919050565b808202811582820484141761055d5761055d611968565b8082018082111561055d5761055d61196856fea2646970667358221220d6ba834f25782689ed13bffb6ac9ff2c8d3b5342c94a515aea8197a76070ad3f64736f6c634300081a0033a2646970667358221220c58243603bbf8091e3c49016332d3a5117812184b4cb35a8002b894e8cce6d8b64736f6c634300081a0033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b50620120f9806200003e6000396000f3fe608060405234801561001057600080fd5b506004361061038e5760003560e01c80636dfcbc50116101de578063ba9adeef1161010f578063e20c9f71116100ad578063eb7a2fac1161007c578063eb7a2fac14610597578063fa7626d41461059f578063fbc611c8146105ac578063fdad0ad0146105b457600080fd5b8063e20c9f711461057f578063e51c638814610587578063e804a406146103cd578063ea37902f1461058f57600080fd5b8063ceccfab3116100e9578063ceccfab31461055f578063d5a4468914610567578063dc749dd71461056f578063dde7e9671461057757600080fd5b8063ba9adeef14610547578063bed3e8131461054f578063c946d7c01461055757600080fd5b8063ae9da0881161017c578063b5508aa911610156578063b5508aa914610517578063b7f058361461051f578063ba414fa614610527578063ba800c911461053f57600080fd5b8063ae9da088146104ff578063b0464fdc14610507578063b51ac0711461050f57600080fd5b806385226c81116101b857806385226c81146104c5578063916a17c6146104da578063a721b2d3146104ef578063a90f314b146104f757600080fd5b80636dfcbc50146104ad5780637ae69730146104b557806383ababa9146104bd57600080fd5b806339cbb457116102c35780635006fd80116102615780636221b509116102305780636221b5091461048057806364002a1f1461048857806366d9a9a0146104905780636d6ce0d0146104a557600080fd5b80635006fd80146104605780635d72228f146104685780635efe72a9146104705780636198fb191461047857600080fd5b8063423a58741161029d578063423a58741461044057806342752d411461044857806343181437146104505780634ffab9de1461045857600080fd5b806339cbb457146104285780633e5e3c23146104305780633f7286f41461043857600080fd5b80631e63d2b91161033057806321aeb18c1161030a57806321aeb18c146103fb578063264b524c146104035780632ade38801461040b57806336431b3f1461042057600080fd5b80631e63d2b9146103cd5780631ed7831c146103d557806320dee15f146103f357600080fd5b80631238212c1161036c5780631238212c146103ad57806314759766146103b557806318a4cfdc146103bd5780631b9641bf146103c557600080fd5b806304019fba146103935780630a9254e41461039d5780630b5ad28d146103a5575b600080fd5b61039b6105bc565b005b61039b61070c565b61039b61128c565b61039b6113f5565b61039b61179c565b61039b611bf3565b61039b611eed565b61039b61204f565b6103dd61243e565b6040516103ea919061c0ec565b60405180910390f35b61039b6124a0565b61039b61288e565b61039b6129ae565b610413612b89565b6040516103ea919061c188565b61039b612ccb565b61039b612e0e565b6103dd612f51565b6103dd612fb1565b61039b613011565b61039b61314b565b61039b613288565b61039b6133a6565b61039b6135f8565b61039b613a81565b61039b613dd3565b61039b613f3b565b61039b6140ec565b61039b614311565b610498614575565b6040516103ea919061c2ee565b61039b6146e2565b61039b6149d2565b61039b614bb9565b61039b614d6e565b6104cd614e52565b6040516103ea919061c38c565b6104e2614f22565b6040516103ea919061c403565b61039b615008565b61039b6151ef565b61039b615441565b6104e26155a2565b61039b615688565b6104cd615772565b61039b615842565b61052f6159f3565b60405190151581526020016103ea565b61039b615ac7565b61039b615bdd565b61039b615d3f565b61039b615ea1565b61039b6160f3565b61039b61643f565b61039b616691565b61039b616734565b6103dd616b73565b61039b616bd3565b61039b616f15565b61039b61730a565b601f5461052f9060ff1681565b61039b6173f4565b61039b617781565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180516001600160e01b0316630427d73b60e51b17905251630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561066f57600080fd5b505af1158015610683573d6000803e3d6000fd5b5050602080546040516001600160a01b039091169350633b2839339250015b6040516020818303038152906040526001808560286040518663ffffffff1660e01b81526004016106d795949392919061c5d6565b600060405180830381600087803b1580156106f157600080fd5b505af1158015610705573d6000803e3d6000fd5b5050505050565b602580547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602680549091166112341790556040516107529061bffb565b604051809103906000f08015801561076e573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600f81527f476174657761795a45564d2e736f6c00000000000000000000000000000000006020820152602554915160248101939093529216604482015261083d919060640160408051601f198184030181529190526020810180516001600160e01b03167f485cc955000000000000000000000000000000000000000000000000000000001790526178f7565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b039384168102919091179182905560208054919092049092167fffffffffffffffffffffffff000000000000000000000000000000000000000090921682178155604080517f2722feee0000000000000000000000000000000000000000000000000000000081529051632722feee926004808401939192918290030181865afa1580156108ff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610923919061c627565b602780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516109679061c009565b604051809103906000f080158015610983573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161781556027546040517f06447d5600000000000000000000000000000000000000000000000000000000815292166004830152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d569101600060405180830381600087803b158015610a1f57600080fd5b505af1158015610a33573d6000803e3d6000fd5b505050506000806000604051610a489061c017565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610a84573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602054604051601293600193849360009391921690610ada9061c025565b610ae99695949392919061c650565b604051809103906000f080158015610b05573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556023546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b158015610b9c57600080fd5b505af1158015610bb0573d6000803e3d6000fd5b50506023546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b158015610c1a57600080fd5b505af1158015610c2e573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610cae57600080fd5b505af1158015610cc2573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610d1757600080fd5b505af1158015610d2b573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610d9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc3919061c745565b506021546025546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116906347e7ef24906044016020604051808303816000875af1158015610e34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e58919061c745565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610eb757600080fd5b505af1158015610ecb573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610f4157600080fd5b505af1158015610f55573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116925063095ea7b391506044016020604051808303816000875af1158015610fc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fed919061c745565b50602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b15801561103f57600080fd5b505af1158015611053573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af11580156110c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110eb919061c745565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561114a57600080fd5b505af115801561115e573d6000803e3d6000fd5b50506040805160a08101825261032180825260016020808401918252838501928352845190810190945260008085526060840185905260808401528251602880549251151574010000000000000000000000000000000000000000027fffffffffffffffffffffff0000000000000000000000000000000000000000009093166001600160a01b0392831617929092178255915160298054919093167fffffffffffffffffffffffff000000000000000000000000000000000000000091909116179091559093509150602a90611235908261c7dd565b50608091909101516003909101556040805180820190915260018082526020909101819052602c819055602d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180516001600160e01b0316630427d73b60e51b1790526000602c5551630618f58760e51b81527f60ee1247000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015b600060405180830381600087803b15801561134557600080fd5b505af1158015611359573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637b15118b91506034015b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526106d7926001916001600160a01b0316908790602c9060289060040161c89c565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611446573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146a919061c90d565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156114df57600080fd5b505af11580156114f3573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015611565573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611589919061c745565b506026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180516001600160e01b0316630427d73b60e51b17905280517ff48448140000000000000000000000000000000000000000000000000000000081529051919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f48448149160048082019260009290919082900301818387803b15801561163757600080fd5b505af115801561164b573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b0316925063048ae42c915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526116e59288916001600160a01b031690879060019060289060040161c926565b600060405180830381600087803b1580156116ff57600080fd5b505af1158015611713573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611766573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061178a919061c90d565b90506117968382617916565b50505050565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa1580156117ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611811919061c90d565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015611863573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611887919061c90d565b6027546026546040516001600160a01b03918216602482015292935016319060009060440160408051601f19818403018152918152602080830180516001600160e01b0316630427d73b60e51b1790525490517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482018190526001600160a01b03909216608482015291925090737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561196857600080fd5b505af115801561197c573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff191660208201528493506001600160a01b0390911691507f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c9060340160408051601f1981840301815290829052602254611a0e926001600160a01b03909116908c9060009081908b90602c9060289061c97a565b60405180910390a3602080546026546040516001600160a01b0392831693632810ae6393611a569316910160609190911b6bffffffffffffffffffffffff1916815260140190565b604051602081830303815290604052888486602c60286040518763ffffffff1660e01b8152600401611a8d9695949392919061c9ee565b600060405180830381600087803b158015611aa757600080fd5b505af1158015611abb573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b32919061c90d565b9050611b48611b4260018861ca4e565b82617916565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611b99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bbd919061c90d565b9050611bc98682617916565b611be9611bd786600161ca61565b6027546001600160a01b031631617916565b5050505050505050565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611c44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c68919061c90d565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015611cba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cde919061c90d565b6027546026546040516001600160a01b03918216602482015292935016319060009060440160408051601f19818403018152918152602080830180516001600160e01b0316630427d73b60e51b1790525490517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482018190526001600160a01b03909216608482015291925090737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611dbf57600080fd5b505af1158015611dd3573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff191660208201528493506001600160a01b0390911691507f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c9060340160408051601f1981840301815260225483830183526000808552600160208601529251611e719492936001600160a01b03909216928e929182918c9160289061ca74565b60405180910390a3602080546026546040516001600160a01b0392831693633b28393393611eb99316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60405160208183030381529060405288848660286040518663ffffffff1660e01b8152600401611a8d95949392919061c5d6565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180516001600160e01b0316630427d73b60e51b17905251630618f58760e51b81527f5d67094f000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015611fa057600080fd5b505af1158015611fb4573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637b15118b915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526106d7926000916001600160a01b0316908790602c9060289060040161c89c565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa1580156120a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c4919061c90d565b6026546040516001600160a01b03909116602482015290915060009060440160408051601f19818403018152918152602080830180516001600160e01b0316630427d73b60e51b1790525490517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482018190526001600160a01b039092166084820152919250908190737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156121a157600080fd5b505af11580156121b5573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff19166020820152600093506001600160a01b0390911691507f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c9060340160408051601f198184030181528282526021547f4d8943bb000000000000000000000000000000000000000000000000000000008452915190926001600160a01b03909216918b9189918491634d8943bb916004808201926020929091908290030181865afa158015612287573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ab919061c90d565b6040805180820182528a81526001602082015290516122d39695949392918d9160289061ca74565b60405180910390a3602080546026546040516001600160a01b039283169363048ae42c9361231b9316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168352612377928a916001600160a01b0316908990889060289060040161c926565b600060405180830381600087803b15801561239157600080fd5b505af11580156123a5573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156123f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061241c919061c90d565b90506124368361242c888861ca4e565b611b42919061ca4e565b505050505050565b6060601680548060200260200160405190810160405280929190818152602001828054801561249657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612478575b5050505050905090565b601f54604080518082018252601a81527f476174657761795a45564d55706772616465546573742e736f6c000000000000602080830191909152825190810190925260008252602554612505936001600160a01b036101009091048116939116617995565b601f546021546025546040516370a0823160e01b81526001600160a01b03918216600482015261010090930481169260019260009216906370a0823190602401602060405180830381865afa158015612562573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612586919061c90d565b6040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b0385166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561261357600080fd5b505af1158015612627573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff19166020820152600093506001600160a01b0390911691507f5d7cd8ae449a6b25de63f10534ddd17d8dd3e79c7aa5f28964b7a7c760258d979060340160408051601f198184030181528282526021547f4d8943bb000000000000000000000000000000000000000000000000000000008452915190926001600160a01b039092169188916000918491634d8943bb916004808201926020929091908290030181865afa1580156126fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061271e919061c90d565b604080518082018252600081526001602082015290516127469695949392919060289061cad6565b60405180910390a360265460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b03841690637c0dcb5f9060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526127da9287916001600160a01b03169060289060040161cb58565b600060405180830381600087803b1580156127f457600080fd5b505af1158015612808573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa15801561285b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061287f919061c90d565b9050611796611b42848461ca4e565b604051630618f58760e51b81527f19c08f49000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156128fa57600080fd5b505af115801561290e573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b031692506397a1cef191506034015b6040516020818303038152906040526000600160286040518563ffffffff1660e01b8152600401612980949392919061cb92565b600060405180830381600087803b15801561299a57600080fd5b505af1158015611796573d6000803e3d6000fd5b60208054604080516397d340f560e01b815290516001600160a01b03909216926397d340f5926004808401938290030181865afa1580156129f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a17919061c90d565b612a2290600161ca61565b67ffffffffffffffff811115612a3a57612a3a61c767565b6040519080825280601f01601f191660200182016040528015612a64576020820181803683370190505b50602a90612a72908261c7dd565b50604051630618f58760e51b81527f9507fb3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015612adf57600080fd5b505af1158015612af3573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637c0dcb5f915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168352612980926002916001600160a01b03169060289060040161cb58565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015612cc257600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015612cab578382906000526020600020018054612c1e9061c49a565b80601f0160208091040260200160405190810160405280929190818152602001828054612c4a9061c49a565b8015612c975780601f10612c6c57610100808354040283529160200191612c97565b820191906000526020600020905b815481529060010190602001808311612c7a57829003601f168201915b505050505081526020019060010190612bff565b505050508152505081526020019060010190612bad565b50505050905090565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180516001600160e01b0316630427d73b60e51b17905251630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015612d7e57600080fd5b505af1158015612d92573d6000803e3d6000fd5b5050602080546040516001600160a01b03909116935063048ae42c9250015b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526106d7926001916001600160a01b0316908790839060289060040161c926565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180516001600160e01b0316630427d73b60e51b17905251630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015612ec157600080fd5b505af1158015612ed5573d6000803e3d6000fd5b5050602080546040516001600160a01b039091169350631cb5ea759250015b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526106d7926001600160a01b0390911690869060019060289060040161cbc3565b60606018805480602002602001604051908101604052809291908181526020018280548015612496576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311612478575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015612496576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311612478575050505050905090565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180516001600160e01b0316630427d73b60e51b17905251630618f58760e51b81527f19c08f49000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156130c457600080fd5b505af11580156130d8573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250633b2839339150603401604051602081830303815290604052600060018560286040518663ffffffff1660e01b81526004016106d795949392919061c5d6565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180516001600160e01b0316630427d73b60e51b17905251630618f58760e51b81527f19c08f49000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156131fe57600080fd5b505af1158015613212573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250632810ae6391506034016040516020818303038152906040526000600185602c60286040518763ffffffff1660e01b81526004016106d79695949392919061c9ee565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180516001600160e01b0316630427d73b60e51b17905251630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561333b57600080fd5b505af115801561334f573d6000803e3d6000fd5b5050602080546040516001600160a01b039091169350632810ae639250015b60405160208183030381529060405260018085602c60286040518763ffffffff1660e01b81526004016106d79695949392919061c9ee565b60208054604080516397d340f560e01b815290516000936002936001600160a01b0316926397d340f592600480830193928290030181865afa1580156133f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613414919061c90d565b61341e919061cc11565b67ffffffffffffffff8111156134365761343661c767565b6040519080825280601f01601f191660200182016040528015613460576020820181803683370190505b5060208054604080516397d340f560e01b815290519394506002936001600160a01b03909216926397d340f5926004808401938290030181865afa1580156134ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134d0919061c90d565b6134da919061cc11565b6134e590600161ca61565b67ffffffffffffffff8111156134fd576134fd61c767565b6040519080825280601f01601f191660200182016040528015613527576020820181803683370190505b50602a90613535908261c7dd565b50604051630618f58760e51b81527f9507fb3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156135a257600080fd5b505af11580156135b6573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b0316925063048ae42c9150603401612db1565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015613649573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061366d919061c90d565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa1580156136bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136e3919061c90d565b6027546026546040516001600160a01b03918216602482015292935016319060009060440160408051601f198184030181529181526020820180516001600160e01b0316630427d73b60e51b17905260255490517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156137a957600080fd5b505af11580156137bd573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af115801561382f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613853919061c745565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156138b257600080fd5b505af11580156138c6573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250633b283933915060340160405160208183030381529060405288848660286040518663ffffffff1660e01b815260040161393795949392919061c5d6565b600060405180830381600087803b15801561395157600080fd5b505af1158015613965573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156139b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139dc919061c90d565b90506139e88682617916565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015613a39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a5d919061c90d565b9050613a698682617916565b602754611be99086906001600160a01b031631617916565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015613ad2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613af6919061c90d565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613b6b57600080fd5b505af1158015613b7f573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015613bf1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c15919061c745565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613c7457600080fd5b505af1158015613c88573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637c0dcb5f915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168352613d1d9287916001600160a01b03169060289060040161cb58565b600060405180830381600087803b158015613d3757600080fd5b505af1158015613d4b573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015613d9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dc2919061c90d565b9050613dce8282617916565b505050565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180516001600160e01b0316630427d73b60e51b1790526000602c5551630618f58760e51b81527f60ee1247000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015b600060405180830381600087803b158015613e8c57600080fd5b505af1158015613ea0573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b031692506306cb898391506034015b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526106d7926001600160a01b03909116908690602c9060289060040161cc4c565b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180516001600160e01b0316630427d73b60e51b1790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561401057600080fd5b505af1158015614024573d6000803e3d6000fd5b505060215460255460265460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039283169450911691507f306ee13f48319a123b222c69908e44dcf91abffc20cacc502e3cf5a4ff23e0e49060340160408051601f19818403018152908290526140a4918690602c9060289061ccaa565b60405180910390a3602080546026546040516001600160a01b03928316936306cb898393613ede9316910160609190911b6bffffffffffffffffffffffff1916815260140190565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa15801561413d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614161919061c90d565b6022546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526101236004820152602481018390529192506001600160a01b03169063a9059cbb906044016020604051808303816000875af11580156141ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141f2919061c745565b506000600190507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561425757600080fd5b505af115801561426b573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b031692506397a1cef19150603401604051602081830303815290604052858460286040518563ffffffff1660e01b81526004016142da949392919061cb92565b600060405180830381600087803b1580156142f457600080fd5b505af1158015614308573d6000803e3d6000fd5b50505050505050565b6026546040516001600160a01b03909116602482015260019060009060440160408051601f198184030181529181526020820180516001600160e01b0316630427d73b60e51b17905260255490517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156143d157600080fd5b505af11580156143e5573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015614457573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061447b919061c745565b506000602c55604051630618f58760e51b81527f60ee1247000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156144ed57600080fd5b505af1158015614501573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250632810ae639150603401604051602081830303815290604052858486602c60286040518763ffffffff1660e01b81526004016142da9695949392919061c9ee565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015612cc257838290600052602060002090600202016040518060400160405290816000820180546145cc9061c49a565b80601f01602080910402602001604051908101604052809291908181526020018280546145f89061c49a565b80156146455780601f1061461a57610100808354040283529160200191614645565b820191906000526020600020905b81548152906001019060200180831161462857829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156146ca57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161468c5790505b50505050508152505081526020019060010190614599565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015614733573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614757919061c90d565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156147cc57600080fd5b505af11580156147e0573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015614852573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614876919061c745565b506026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180516001600160e01b0316630427d73b60e51b17905280517ff48448140000000000000000000000000000000000000000000000000000000081529051919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f48448149160048082019260009290919082900301818387803b15801561492457600080fd5b505af1158015614938573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637b15118b915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526116e59288916001600160a01b0316908790602c9060289060040161c89c565b60208054604080516397d340f560e01b815290516000936002936001600160a01b0316926397d340f592600480830193928290030181865afa158015614a1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a40919061c90d565b614a4a919061cc11565b67ffffffffffffffff811115614a6257614a6261c767565b6040519080825280601f01601f191660200182016040528015614a8c576020820181803683370190505b5060208054604080516397d340f560e01b815290519394506002936001600160a01b03909216926397d340f5926004808401938290030181865afa158015614ad8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614afc919061c90d565b614b06919061cc11565b614b1190600161ca61565b67ffffffffffffffff811115614b2957614b2961c767565b6040519080825280601f01601f191660200182016040528015614b53576020820181803683370190505b50602a90614b61908261c7dd565b50604051630618f58760e51b81527f9507fb3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401613e72565b60208054604080516397d340f560e01b815290516001600160a01b03909216926397d340f5926004808401938290030181865afa158015614bfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614c22919061c90d565b614c2d90600161ca61565b67ffffffffffffffff811115614c4557614c4561c767565b6040519080825280601f01601f191660200182016040528015614c6f576020820181803683370190505b50602a90614c7d908261c7dd565b50604051630618f58760e51b81527f9507fb3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015614cea57600080fd5b505af1158015614cfe573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b031692506397a1cef1915060340160405160208183030381529060405260018060286040518563ffffffff1660e01b8152600401612980949392919061cb92565b604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015614dda57600080fd5b505af1158015614dee573d6000803e3d6000fd5b5050602080546040805160008152928301908190526021547f7c0dcb5f000000000000000000000000000000000000000000000000000000009091526001600160a01b039182169450637c0dcb5f935061298092916001911660286024840161cb58565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015612cc2578382906000526020600020018054614e959061c49a565b80601f0160208091040260200160405190810160405280929190818152602001828054614ec19061c49a565b8015614f0e5780601f10614ee357610100808354040283529160200191614f0e565b820191906000526020600020905b815481529060010190602001808311614ef157829003601f168201915b505050505081526020019060010190614e76565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015612cc25760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015614ff057602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411614fb25790505b50505050508152505081526020019060010190614f46565b60208054604080516397d340f560e01b815290516000936002936001600160a01b0316926397d340f592600480830193928290030181865afa158015615052573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615076919061c90d565b615080919061cc11565b67ffffffffffffffff8111156150985761509861c767565b6040519080825280601f01601f1916602001820160405280156150c2576020820181803683370190505b5060208054604080516397d340f560e01b815290519394506002936001600160a01b03909216926397d340f5926004808401938290030181865afa15801561510e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615132919061c90d565b61513c919061cc11565b61514790600161ca61565b67ffffffffffffffff81111561515f5761515f61c767565b6040519080825280601f01601f191660200182016040528015615189576020820181803683370190505b50602a90615197908261c7dd565b50604051630618f58760e51b81527f9507fb3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e09060240161132b565b60208054604080516397d340f560e01b815290516000936002936001600160a01b0316926397d340f592600480830193928290030181865afa158015615239573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061525d919061c90d565b615267919061cc11565b67ffffffffffffffff81111561527f5761527f61c767565b6040519080825280601f01601f1916602001820160405280156152a9576020820181803683370190505b5060208054604080516397d340f560e01b815290519394506002936001600160a01b03909216926397d340f5926004808401938290030181865afa1580156152f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615319919061c90d565b615323919061cc11565b61532e90600161ca61565b67ffffffffffffffff8111156153465761534661c767565b6040519080825280601f01601f191660200182016040528015615370576020820181803683370190505b50602a9061537e908261c7dd565b50604051630618f58760e51b81527f9507fb3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156153eb57600080fd5b505af11580156153ff573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250633b28393391506034016106a2565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180516001600160e01b0316630427d73b60e51b17905251630618f58760e51b81527f60ee1247000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156154f457600080fd5b505af1158015615508573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250631cb5ea75915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526106d7926001600160a01b0390911690869060009060289060040161cbc3565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015612cc25760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561567057602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116156325790505b505050505081525050815260200190600101906155c6565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180516001600160e01b0316630427d73b60e51b17905251630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561573b57600080fd5b505af115801561574f573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911693506306cb8983925001613ede565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015612cc25783829060005260206000200180546157b59061c49a565b80601f01602080910402602001604051908101604052809291908181526020018280546157e19061c49a565b801561582e5780601f106158035761010080835404028352916020019161582e565b820191906000526020600020905b81548152906001019060200180831161581157829003601f168201915b505050505081526020019060010190615796565b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180516001600160e01b0316630427d73b60e51b1790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561591757600080fd5b505af115801561592b573d6000803e3d6000fd5b505060215460255460265460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039283169450911691507f306ee13f48319a123b222c69908e44dcf91abffc20cacc502e3cf5a4ff23e0e49060340160408051601f19818403018152908290526159ab918690602c9060289061ccaa565b60405180910390a3602080546026546040516001600160a01b0392831693631cb5ea7593612ef49316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60085460009060ff1615615a0b575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015615a9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615ac0919061c90d565b1415905090565b604051630618f58760e51b81527f5d67094f000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015615b3357600080fd5b505af1158015615b47573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637c0dcb5f915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168352612980926000916001600160a01b03169060289060040161cb58565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180516001600160e01b0316630427d73b60e51b17905251630618f58760e51b81527f5d67094f000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015615c9057600080fd5b505af1158015615ca4573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b0316925063048ae42c915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526106d7926000916001600160a01b031690879060019060289060040161c926565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180516001600160e01b0316630427d73b60e51b17905251630618f58760e51b81527f60ee1247000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015615df257600080fd5b505af1158015615e06573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b0316925063048ae42c915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526106d7926001916001600160a01b031690879060009060289060040161c926565b60208054604080516397d340f560e01b815290516000936002936001600160a01b0316926397d340f592600480830193928290030181865afa158015615eeb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615f0f919061c90d565b615f19919061cc11565b67ffffffffffffffff811115615f3157615f3161c767565b6040519080825280601f01601f191660200182016040528015615f5b576020820181803683370190505b5060208054604080516397d340f560e01b815290519394506002936001600160a01b03909216926397d340f5926004808401938290030181865afa158015615fa7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615fcb919061c90d565b615fd5919061cc11565b615fe090600161ca61565b67ffffffffffffffff811115615ff857615ff861c767565b6040519080825280601f01601f191660200182016040528015616022576020820181803683370190505b50602a90616030908261c7dd565b50604051630618f58760e51b81527f9507fb3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561609d57600080fd5b505af11580156160b1573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250632810ae63915060340161336e565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015616144573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616168919061c90d565b6021546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526101236004820152602481018390529192506001600160a01b03169063a9059cbb906044016020604051808303816000875af11580156161d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906161f9919061c745565b506027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561626c57600080fd5b505af1158015616280573d6000803e3d6000fd5b50506021546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a60048201526001600160a01b03909116925063f687d12a9150602401600060405180830381600087803b1580156162e357600080fd5b505af11580156162f7573d6000803e3d6000fd5b5050604051630618f58760e51b81527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b15801561636857600080fd5b505af115801561637c573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637c0dcb5f915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526164119287916001600160a01b03169060289060040161cb58565b600060405180830381600087803b15801561642b57600080fd5b505af1158015612436573d6000803e3d6000fd5b60208054604080516397d340f560e01b815290516000936002936001600160a01b0316926397d340f592600480830193928290030181865afa158015616489573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906164ad919061c90d565b6164b7919061cc11565b67ffffffffffffffff8111156164cf576164cf61c767565b6040519080825280601f01601f1916602001820160405280156164f9576020820181803683370190505b5060208054604080516397d340f560e01b815290519394506002936001600160a01b03909216926397d340f5926004808401938290030181865afa158015616545573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616569919061c90d565b616573919061cc11565b61657e90600161ca61565b67ffffffffffffffff8111156165965761659661c767565b6040519080825280601f01601f1916602001820160405280156165c0576020820181803683370190505b50602a906165ce908261c7dd565b50604051630618f58760e51b81527f9507fb3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561663b57600080fd5b505af115801561664f573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250631cb5ea759150603401612ef4565b604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156166fd57600080fd5b505af1158015616711573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911693506397a1cef192500161294c565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015616785573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906167a9919061c90d565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa1580156167fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061681f919061c90d565b6027546025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152929350163190600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561689d57600080fd5b505af11580156168b1573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015616923573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616947919061c745565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156169a657600080fd5b505af11580156169ba573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b031692506397a1cef19150603401604051602081830303815290604052878460286040518563ffffffff1660e01b8152600401616a29949392919061cb92565b600060405180830381600087803b158015616a4357600080fd5b505af1158015616a57573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015616aaa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616ace919061c90d565b9050616ada8582617916565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015616b2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616b4f919061c90d565b9050616b5b8582617916565b6027546143089085906001600160a01b031631617916565b60606015805480602002602001604051908101604052809291908181526020018280548015612496576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311612478575050505050905090565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015616c24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616c48919061c90d565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015616c9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616cbe919061c90d565b6027546026546040516001600160a01b03918216602482015292935016319060009060440160408051601f198184030181529181526020820180516001600160e01b0316630427d73b60e51b17905260255490517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015616d8457600080fd5b505af1158015616d98573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015616e0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616e2e919061c745565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015616e8d57600080fd5b505af1158015616ea1573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250632810ae639150603401604051602081830303815290604052888486602c60286040518763ffffffff1660e01b81526004016139379695949392919061c9ee565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015616f66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616f8a919061c90d565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015616fdc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190617000919061c90d565b6027546020546040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482018190526001600160a01b0392831660848301529394509116319190737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561709b57600080fd5b505af11580156170af573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff191660208201528493506001600160a01b0390911691507f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c9060340160408051601f198184030181526022548383018352600080855260016020860152925161714c9492936001600160a01b03909216928d929182919060289061cad6565b60405180910390a3602080546026546040516001600160a01b03928316936397a1cef1936171949316910160609190911b6bffffffffffffffffffffffff1916815260140190565b604051602081830303815290604052878460286040518563ffffffff1660e01b81526004016171c6949392919061cb92565b600060405180830381600087803b1580156171e057600080fd5b505af11580156171f4573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015617247573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061726b919061c90d565b905061727b611b4260018761ca4e565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156172cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906172f0919061c90d565b90506172fc8582617916565b614308611bd785600161ca61565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180516001600160e01b0316630427d73b60e51b17905251630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156173bd57600080fd5b505af11580156173d1573d6000803e3d6000fd5b5050602080546040516001600160a01b039091169350637b15118b925001611397565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015617445573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190617469919061c90d565b6020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156174fa57600080fd5b505af115801561750e573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff19166020820152600093506001600160a01b0390911691507f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c9060340160408051601f198184030181528282526021547f4d8943bb000000000000000000000000000000000000000000000000000000008452915190926001600160a01b039092169188916000918491634d8943bb916004808201926020929091908290030181865afa1580156175e1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190617605919061c90d565b6040805180820182526000815260016020820152905161762d9695949392919060289061cad6565b60405180910390a3602080546026546040516001600160a01b0392831693637c0dcb5f936176759316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526176cd9287916001600160a01b03169060289060040161cb58565b600060405180830381600087803b1580156176e757600080fd5b505af11580156176fb573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa15801561774e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190617772919061c90d565b9050613dce611b42848461ca4e565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260029260009216906370a0823190602401602060405180830381865afa1580156177d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906177f6919061c90d565b6021549091506001600160a01b031663a9059cbb61012361781860018561ca4e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af115801561787b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061789f919061c745565b50604051630618f58760e51b81527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e09060240161634e565b600061790161c033565b61790c8484836179aa565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b15801561798157600080fd5b505afa158015612436573d6000803e3d6000fd5b61799d61c033565b6107058585858486617a25565b6000806179b78584617b25565b9050617a1a6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001617a0592919061ccf9565b60405160208183030381529060405285617b31565b9150505b9392505050565b6040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201528190737109709ecfa91a80626ff3989d68f67f5b1dd12d9081906306447d5690602401600060405180830381600087803b158015617a9757600080fd5b505af1925050508015617aa8575060015b617abd57617ab887878787617b5f565b614308565b617ac987878787617b5f565b806001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015617b0457600080fd5b505af1158015617b18573d6000803e3d6000fd5b5050505050505050505050565b6000617a1e8383617b78565b60c08101515160009015617b5557617b4e84848460c00151617b93565b9050617a1e565b617b4e8484617d39565b6000617b6b8483617e24565b9050610705858285617e30565b6000617b8483836181fa565b617a1e83836020015184617b31565b600080617b9e61820a565b90506000617bac86836182dd565b90506000617bc38260600151836020015185618783565b90506000617bd383838989618995565b90506000617be082619812565b602081015181519192509060030b15617c5357898260400151604051602001617c0a92919061cd1b565b60408051601f19818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252617c4a9160040161cd9c565b60405180910390fd5b6000617c966040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a2000000000000000000000008152508360016199e1565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90617ce990849060040161cd9c565b602060405180830381865afa158015617d06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190617d2a919061c627565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590617d8e90879060040161cd9c565b600060405180830381865afa158015617dab573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617dd3919081019061ce68565b90506000617e018285604051602001617ded92919061ce9d565b604051602081830303815290604052619be1565b90506001600160a01b03811661790c578484604051602001617c0a92919061cecc565b6000617b848383619bf4565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201527fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61036024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90600090829063667f9d7090604401602060405180830381865afa158015617ecc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190617ef0919061c90d565b905080618097576000617f0286619c00565b604080518082018252600581527f352e302e3000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150617f8d905b60408051808201825260008082526020918201528151808301909252845182528085019082015290619ce3565b80617f99575060008451115b1561801c576040517f4f1ef2860000000000000000000000000000000000000000000000000000000081526001600160a01b03871690634f1ef28690617fe5908890889060040161ccf9565b600060405180830381600087803b158015617fff57600080fd5b505af1158015618013573d6000803e3d6000fd5b50505050618091565b6040517f3659cfe60000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152871690633659cfe690602401600060405180830381600087803b15801561807857600080fd5b505af115801561808c573d6000803e3d6000fd5b505050505b50610705565b8060006180a382619c00565b604080518082018252600581527f352e302e300000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061810590617f60565b80618111575060008551115b15618196576040517f9623609d0000000000000000000000000000000000000000000000000000000081526001600160a01b03831690639623609d9061815f908a908a908a9060040161cf77565b600060405180830381600087803b15801561817957600080fd5b505af115801561818d573d6000803e3d6000fd5b50505050614308565b6040517f99a88ec40000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015287811660248301528316906399a88ec490604401600060405180830381600087803b158015617b0457600080fd5b61820682826000619cf7565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c9061829190849060040161cfa8565b600060405180830381865afa1580156182ae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526182d6919081019061cfef565b9250505090565b61830f6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d905061835a6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b61836385619dfa565b602082015260006183738661a1df565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa1580156183b5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526183dd919081019061cfef565b868385602001516040516020016183f7949392919061d038565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb119061844f90859060040161cd9c565b600060405180830381865afa15801561846c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052618494919081019061cfef565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f6906184dc90849060040161d13c565b602060405180830381865afa1580156184f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061851d919061c745565b6185325781604051602001617c0a919061d18e565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061857790849060040161d220565b600060405180830381865afa158015618594573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526185bc919081019061cfef565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f69061860390849060040161d272565b602060405180830381865afa158015618620573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190618644919061c745565b156186d9576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061868e90849060040161d272565b600060405180830381865afa1580156186ab573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526186d3919081019061cfef565b60408501525b846001600160a01b03166349c4fac88286600001516040516020016186fe919061d2c4565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161872a92919061d330565b600060405180830381865afa158015618747573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261876f919081019061cfef565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b606081526020019060019003908161879f5790505090506040518060400160405280600481526020017f6772657000000000000000000000000000000000000000000000000000000000815250816000815181106187ff576187ff61d355565b60200260200101819052506040518060400160405280600381526020017f2d726c0000000000000000000000000000000000000000000000000000000000815250816001815181106188535761885361d355565b60200260200101819052508460405160200161886f919061d384565b604051602081830303815290604052816002815181106188915761889161d355565b6020026020010181905250826040516020016188ad919061d3f0565b604051602081830303815290604052816003815181106188cf576188cf61d355565b602002602001018190525060006188e582619812565b602080820151604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000008185019081528251808401845260008082529086015282518084019093529051825292810192909252919250618976906040805180820182526000808252602091820152815180830190925284518252808501908201529061a462565b61898b5785604051602001617c0a919061d431565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d90156189e5565b511590565b618b5957826020015115618aa1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401617c4a565b8260c0015115618b59576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401617c4a565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081618b7257905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280618bcd9061d4c2565b935060ff1681518110618be257618be261d355565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001618c33919061d4e1565b604051602081830303815290604052828280618c4e9061d4c2565b935060ff1681518110618c6357618c6361d355565b60200260200101819052506040518060400160405280600681526020017f6465706c6f790000000000000000000000000000000000000000000000000000815250828280618cb09061d4c2565b935060ff1681518110618cc557618cc561d355565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d65000000000000000000000000000000000000815250828280618d129061d4c2565b935060ff1681518110618d2757618d2761d355565b60200260200101819052508760200151828280618d439061d4c2565b935060ff1681518110618d5857618d5861d355565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e747261637450617468000000000000000000000000000000000000815250828280618da59061d4c2565b935060ff1681518110618dba57618dba61d355565b602090810291909101015287518282618dd28161d4c2565b935060ff1681518110618de757618de761d355565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280618e349061d4c2565b935060ff1681518110618e4957618e4961d355565b6020026020010181905250618e5d4661a4c3565b8282618e688161d4c2565b935060ff1681518110618e7d57618e7d61d355565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280618eca9061d4c2565b935060ff1681518110618edf57618edf61d355565b602002602001018190525086828280618ef79061d4c2565b935060ff1681518110618f0c57618f0c61d355565b60209081029190910101528551156190335760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f6465000000000000000000000060208201528282618f5d8161d4c2565b935060ff1681518110618f7257618f7261d355565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90618fc290899060040161cd9c565b600060405180830381865afa158015618fdf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052619007919081019061cfef565b82826190128161d4c2565b935060ff16815181106190275761902761d355565b60200260200101819052505b8460200151156191035760408051808201909152601281527f2d2d766572696679536f75726365436f646500000000000000000000000000006020820152828261907c8161d4c2565b935060ff16815181106190915761909161d355565b60200260200101819052506040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152508282806190de9061d4c2565b935060ff16815181106190f3576190f361d355565b60200260200101819052506192ca565b61913b6189e08660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6191ce5760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828261917e8161d4c2565b935060ff16815181106191935761919361d355565b60200260200101819052508460a001516040516020016191b3919061d384565b6040516020818303038152906040528282806190de9061d4c2565b8460c0015115801561921157506040808901518151808301835260008082526020918201528251808401909352815183529081019082015261920f90511590565b155b156192ca5760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826192558161d4c2565b935060ff168151811061926a5761926a61d355565b602002602001018190525061927e8861a563565b60405160200161928e919061d384565b6040516020818303038152906040528282806192a99061d4c2565b935060ff16815181106192be576192be61d355565b60200260200101819052505b604080860151815180830183526000808252602091820152825180840190935281518352908101908201526192fe90511590565b6193935760408051808201909152600b81527f2d2d72656c617965724964000000000000000000000000000000000000000000602082015282826193418161d4c2565b935060ff16815181106193565761935661d355565b602002602001018190525084604001518282806193729061d4c2565b935060ff16815181106193875761938761d355565b60200260200101819052505b6060850151156194b45760408051808201909152600681527f2d2d73616c740000000000000000000000000000000000000000000000000000602082015282826193dc8161d4c2565b935060ff16815181106193f1576193f161d355565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015619460573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052619488919081019061cfef565b82826194938161d4c2565b935060ff16815181106194a8576194a861d355565b60200260200101819052505b60e0850151511561955b5760408051808201909152600a81527f2d2d6761734c696d697400000000000000000000000000000000000000000000602082015282826194fe8161d4c2565b935060ff16815181106195135761951361d355565b602002602001018190525061952f8560e001516000015161a4c3565b828261953a8161d4c2565b935060ff168151811061954f5761954f61d355565b60200260200101819052505b60e085015160200151156196055760408051808201909152600a81527f2d2d676173507269636500000000000000000000000000000000000000000000602082015282826195a88161d4c2565b935060ff16815181106195bd576195bd61d355565b60200260200101819052506195d98560e001516020015161a4c3565b82826195e48161d4c2565b935060ff16815181106195f9576195f961d355565b60200260200101819052505b60e085015160400151156196af5760408051808201909152600e81527f2d2d6d6178466565506572476173000000000000000000000000000000000000602082015282826196528161d4c2565b935060ff16815181106196675761966761d355565b60200260200101819052506196838560e001516040015161a4c3565b828261968e8161d4c2565b935060ff16815181106196a3576196a361d355565b60200260200101819052505b60e085015160600151156197595760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826196fc8161d4c2565b935060ff16815181106197115761971161d355565b602002602001018190525061972d8560e001516060015161a4c3565b82826197388161d4c2565b935060ff168151811061974d5761974d61d355565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156197775761977761c767565b6040519080825280602002602001820160405280156197aa57816020015b60608152602001906001900390816197955790505b50905060005b8260ff168160ff16101561980357838160ff16815181106197d3576197d361d355565b6020026020010151828260ff16815181106197f0576197f061d355565b60209081029190910101526001016197b0565b5093505050505b949350505050565b6198396040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916198bf9186910161d54c565b600060405180830381865afa1580156198dc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052619904919081019061cfef565b90506000619912868361b052565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401619942919061c38c565b6000604051808303816000875af1158015619961573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052619989919081019061d593565b805190915060030b158015906199a25750602081015151155b80156199b15750604081015151155b1561898b57816000815181106199c9576199c961d355565b6020026020010151604051602001617c0a919061d649565b60606000619a168560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150619a4d9082905b9061b1a7565b15619baa576000619aca82619ac484619abe619a908a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b9061b1ce565b9061b230565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150619b2e90829061b1a7565b15619b9857604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152619b95905b829061b2b5565b90505b619ba18161b2db565b92505050617a1e565b8215619bc3578484604051602001617c0a92919061d835565b5050604080516020810190915260008152617a1e565b509392505050565b6000808251602084016000f09392505050565b61820682826001619cf7565b60408051600481526024810182526020810180516001600160e01b03167fad3cb1cc00000000000000000000000000000000000000000000000000000000179052905160609160009182916001600160a01b03861691619c60919061d8dc565b600060405180830381855afa9150503d8060008114619c9b576040519150601f19603f3d011682016040523d82523d6000602084013e619ca0565b606091505b5091509150818015619cb3575060208151115b15619ccc578080602001905181019061980a919061cfef565b505060408051602081019091526000815292915050565b6000619cef838361b344565b159392505050565b8160a0015115619d0657505050565b6000619d1384848461b41f565b90506000619d2082619812565b602081015181519192509060030b158015619dbc5750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152619dbc90604080518082018252600080825260209182015281518083019092528451825280850190820152619a47565b15619dc957505050505050565b60408201515115619de9578160400151604051602001617c0a919061d8f8565b80604051602001617c0a919061d956565b60606000619e2f8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150619e94905b829061a462565b15619f0357604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617a1e90619efe90839061b9ba565b61b2db565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152619f65905b829061ba44565b60010361a03257604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152619fcb90619b8e565b50604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617a1e90619efe905b839061b2b5565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261a09190619e8d565b1561a1c857604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061a0f990839061bade565b90506000816001835161a10c919061ca4e565b8151811061a11c5761a11c61d355565b6020026020010151905061a1bf619efe61a1926040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529061b9ba565b95945050505050565b82604051602001617c0a919061d9c1565b50919050565b6060600061a2148360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061a27690619e8d565b1561a28457617a1e8161b2db565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261a2e390619f5e565b60010361a34d57604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617a1e90619efe9061a02b565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261a3ac90619e8d565b1561a1c857604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061a41490839061bade565b905060018151111561a45057806002825161a42f919061ca4e565b8151811061a43f5761a43f61d355565b602002602001015192505050919050565b5082604051602001617c0a919061d9c1565b80518251600091111561a47757506000617910565b8151835160208501516000929161a48d9161ca61565b61a497919061ca4e565b90508260200151810361a4ae576001915050617910565b82516020840151819020912014905092915050565b6060600061a4d08361bb83565b600101905060008167ffffffffffffffff81111561a4f05761a4f061c767565b6040519080825280601f01601f19166020018201604052801561a51a576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461a52457509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e534544000000000000000000000000000000000000000000008184019081528551808701875283815284019290925284518086019095525184529083015260609161a5ef905b8290619ce3565b1561a62f57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261a68e9061a5e8565b1561a6ce57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d495400000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261a72d9061a5e8565b1561a76d57505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261a7cc9061a5e8565b8061a8315750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261a8319061a5e8565b1561a87157505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261a8d09061a5e8565b8061a9355750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261a9359061a5e8565b1561a97557505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261a9d49061a5e8565b8061aa395750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261aa399061a5e8565b1561aa7957505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261aad89061a5e8565b8061ab3d5750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261ab3d9061a5e8565b1561ab7d57505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261abdc9061a5e8565b1561ac1c57505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261ac7b9061a5e8565b1561acbb57505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261ad1a9061a5e8565b1561ad5a57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261adb99061a5e8565b1561adf957505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261ae589061a5e8565b1561ae9857505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261aef79061a5e8565b8061af5c5750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261af5c9061a5e8565b1561af9c57505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261affb9061a5e8565b1561b03b57505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151617c0a929060200161da9f565b60608060005b845181101561b0dd578185828151811061b0745761b07461d355565b602002602001015160405160200161b08d92919061ce9d565b60405160208183030381529060405291506001855161b0ac919061ca4e565b811461b0d5578160405160200161b0c3919061dc08565b60405160208183030381529060405291505b60010161b058565b5060408051600380825260808201909252600091816020015b606081526020019060019003908161b0f6579050509050838160008151811061b1215761b12161d355565b60200260200101819052506040518060400160405280600281526020017f2d630000000000000000000000000000000000000000000000000000000000008152508160018151811061b1755761b17561d355565b6020026020010181905250818160028151811061b1945761b19461d355565b6020908102919091010152949350505050565b602080830151835183519284015160009361b1c5929184919061bc65565b14159392505050565b6040805180820190915260008082526020820152600061b200846000015185602001518560000151866020015161bd76565b905083602001518161b212919061ca4e565b8451859061b22190839061ca4e565b90525060208401525090919050565b604080518082019091526000808252602082015281518351101561b255575081617910565b602080830151908401516001911461b27c5750815160208481015190840151829020919020145b801561b2ad5782518451859061b29390839061ca4e565b905250825160208501805161b2a990839061ca61565b9052505b509192915050565b604080518082019091526000808252602082015261b2d483838361be96565b5092915050565b60606000826000015167ffffffffffffffff81111561b2fc5761b2fc61c767565b6040519080825280601f01601f19166020018201604052801561b326576020820181803683370190505b509050600060208201905061b2d4818560200151866000015161bf41565b815181516000919081111561b357575081515b6020808501519084015160005b8381101561b410578251825180821461b3e057600019602087101561b3bf5760018461b39189602061ca4e565b61b39b919061ca61565b61b3a690600861dc49565b61b3b190600261dd47565b61b3bb919061ca4e565b1990505b818116838216818103911461b3dd5797506179109650505050505050565b50505b61b3eb60208661ca61565b945061b3f860208561ca61565b9350505060208161b409919061ca61565b905061b364565b508451865161898b919061dd53565b6060600061b42b61820a565b6040805160ff808252612000820190925291925060009190816020015b606081526020019060019003908161b44857905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061b4a39061d4c2565b935060ff168151811061b4b85761b4b861d355565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e330000000000000000000000000000000000000000000000000081525060405160200161b509919061dd73565b60405160208183030381529060405282828061b5249061d4c2565b935060ff168151811061b5395761b53961d355565b60200260200101819052506040518060400160405280600881526020017f76616c696461746500000000000000000000000000000000000000000000000081525082828061b5869061d4c2565b935060ff168151811061b59b5761b59b61d355565b60200260200101819052508260405160200161b5b7919061d3f0565b60405160208183030381529060405282828061b5d29061d4c2565b935060ff168151811061b5e75761b5e761d355565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e74726163740000000000000000000000000000000000000000000081525082828061b6349061d4c2565b935060ff168151811061b6495761b64961d355565b602002602001018190525061b65e878461bfbb565b828261b6698161d4c2565b935060ff168151811061b67e5761b67e61d355565b60209081029190910101528551511561b72a5760408051808201909152600b81527f2d2d7265666572656e63650000000000000000000000000000000000000000006020820152828261b6d08161d4c2565b935060ff168151811061b6e55761b6e561d355565b602002602001018190525061b6fe86600001518461bfbb565b828261b7098161d4c2565b935060ff168151811061b71e5761b71e61d355565b60200260200101819052505b85608001511561b7985760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261b7738161d4c2565b935060ff168151811061b7885761b78861d355565b602002602001018190525061b7fe565b841561b7fe5760408051808201909152601281527f2d2d726571756972655265666572656e636500000000000000000000000000006020820152828261b7dd8161d4c2565b935060ff168151811061b7f25761b7f261d355565b60200260200101819052505b6040860151511561b89a5760408051808201909152600d81527f2d2d756e73616665416c6c6f77000000000000000000000000000000000000006020820152828261b8488161d4c2565b935060ff168151811061b85d5761b85d61d355565b6020026020010181905250856040015182828061b8799061d4c2565b935060ff168151811061b88e5761b88e61d355565b60200260200101819052505b85606001511561b9045760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261b8e38161d4c2565b935060ff168151811061b8f85761b8f861d355565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561b9225761b92261c767565b60405190808252806020026020018201604052801561b95557816020015b606081526020019060019003908161b9405790505b50905060005b8260ff168160ff16101561b9ae57838160ff168151811061b97e5761b97e61d355565b6020026020010151828260ff168151811061b99b5761b99b61d355565b602090810291909101015260010161b95b565b50979650505050505050565b604080518082019091526000808252602082015281518351101561b9df575081617910565b8151835160208501516000929161b9f59161ca61565b61b9ff919061ca4e565b6020840151909150600190821461ba20575082516020840151819020908220145b801561ba3b5783518551869061ba3790839061ca4e565b9052505b50929392505050565b600080826000015161ba68856000015186602001518660000151876020015161bd76565b61ba72919061ca61565b90505b8351602085015161ba86919061ca61565b811161b2d4578161ba968161ddb8565b925050826000015161bacd85602001518361bab1919061ca4e565b865161babd919061ca4e565b838660000151876020015161bd76565b61bad7919061ca61565b905061ba75565b6060600061baec848461ba44565b61baf790600161ca61565b67ffffffffffffffff81111561bb0f5761bb0f61c767565b60405190808252806020026020018201604052801561bb4257816020015b606081526020019060019003908161bb2d5790505b50905060005b8151811015619bd95761bb5e619efe868661b2b5565b82828151811061bb705761bb7061d355565b602090810291909101015260010161bb48565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061bbcc577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831061bbf8576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061bc1657662386f26fc10000830492506010015b6305f5e100831061bc2e576305f5e100830492506008015b612710831061bc4257612710830492506004015b6064831061bc54576064830492506002015b600a83106179105760010192915050565b60008085841161bd6c576020841161bd18576000841561bcb057600161bc8c86602061ca4e565b61bc9790600861dc49565b61bca290600261dd47565b61bcac919061ca4e565b1990505b835181168561bcbf898961ca61565b61bcc9919061ca4e565b805190935082165b81811461bd035787841161bceb578794505050505061980a565b8361bcf58161ddd2565b94505082845116905061bcd1565b61bd0d878561ca61565b94505050505061980a565b83832061bd25858861ca4e565b61bd2f908761ca61565b91505b85821061bd6a5784822080820361bd575761bd4d868461ca61565b935050505061980a565b61bd6260018461ca4e565b92505061bd32565b505b5092949350505050565b6000838186851161be81576020851161be30576000851561bdc257600161bd9e87602061ca4e565b61bda990600861dc49565b61bdb490600261dd47565b61bdbe919061ca4e565b1990505b8451811660008761bdd38b8b61ca61565b61bddd919061ca4e565b855190915083165b82811461be225781861061be0a5761bdfd8b8b61ca61565b965050505050505061980a565b8561be148161ddb8565b96505083865116905061bde5565b85965050505050505061980a565b508383206000905b61be42868961ca4e565b821161be7f5785832080820361be5e578394505050505061980a565b61be6960018561ca61565b935050818061be779061ddb8565b92505061be38565b505b61be8b878761ca61565b979650505050505050565b6040805180820190915260008082526020820152600061bec8856000015186602001518660000151876020015161bd76565b60208087018051918601919091525190915061bee4908261ca4e565b83528451602086015161bef7919061ca61565b810361bf06576000855261bf38565b8351835161bf14919061ca61565b8551869061bf2390839061ca4e565b905250835161bf32908261ca61565b60208601525b50909392505050565b6020811061bf79578151835261bf5860208461ca61565b925061bf6560208361ca61565b915061bf7260208261ca4e565b905061bf41565b600019811561bfa857600161bf8f83602061ca4e565b61bf9b9061010061dd47565b61bfa5919061ca4e565b90505b9151835183169219169190911790915250565b6060600061bfc984846182dd565b805160208083015160405193945061bfe39390910161dde9565b60405160208183030381529060405291505092915050565b610b67806200de4283390190565b61063a806200e9a983390190565b61106f806200efe383390190565b612072806201005283390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161c07661c07b565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161c0766040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b8181101561c12d5783516001600160a01b031683526020938401939092019160010161c106565b509095945050505050565b60005b8381101561c15357818101518382015260200161c13b565b50506000910152565b6000815180845261c17481602086016020860161c138565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561c284577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b8181101561c26a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261c25484865161c15c565b602095860195909450929092019160010161c21a565b50919750505060209485019492909201915060010161c1b0565b50929695505050505050565b600081518084526020840193506020830160005b8281101561c2e45781517fffffffff000000000000000000000000000000000000000000000000000000001686526020958601959091019060010161c2a4565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561c284577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516040875261c35a604088018261c15c565b905060208201519150868103602088015261c375818361c290565b96505050602093840193919091019060010161c316565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561c284577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845261c3ee85835161c15c565b9450602093840193919091019060010161c3b4565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561c284577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b038151168652602081015190506040602087015261c484604087018261c290565b955050602093840193919091019060010161c42b565b600181811c9082168061c4ae57607f821691505b60208210810361a1d9577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600081546001600160a01b038116845260ff8160a01c1615156020850152506001600160a01b0360018301541660408401526002820160a060608501526000815461c5318161c49a565b8060a0880152600182166000811461c550576001811461c58a5761c5be565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831660c089015260c082151560051b890101935061c5be565b84600052602060002060005b8381101561c5b55781548a820160c0015260019091019060200161c596565b890160c0019450505b50505060038401546080860152809250505092915050565b60a08152600061c5e960a083018861c15c565b866020840152856040840152828103606084015261c607818661c15c565b9050828103608084015261c61b818561c4e7565b98975050505050505050565b60006020828403121561c63957600080fd5b81516001600160a01b0381168114617a1e57600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff881660408301528660608301526003861061c70a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a083015261c72b60c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b60006020828403121561c75757600080fd5b81518015158114617a1e57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b601f821115613dce57806000526020600020601f840160051c8101602085101561c7bd5750805b601f840160051c820191505b81811015610705576000815560010161c7c9565b815167ffffffffffffffff81111561c7f75761c7f761c767565b61c80b8161c805845461c49a565b8461c796565b6020601f82116001811461c83f576000831561c8275750848201515b600019600385901b1c1916600184901b178455610705565b600084815260208120601f198516915b8281101561c86f578785015182556020948501946001909201910161c84f565b508482101561c88d5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b60e08152600061c8af60e083018961c15c565b8760208401526001600160a01b0387166040840152828103606084015261c8d6818761c15c565b85546080850152600186015460ff16151560a0850152905082810360c084015261c900818561c4e7565b9998505050505050505050565b60006020828403121561c91f57600080fd5b5051919050565b60c08152600061c93960c083018961c15c565b8760208401526001600160a01b0387166040840152828103606084015261c960818761c15c565b905084608084015282810360a084015261c900818561c4e7565b6101208152600061c98f61012083018b61c15c565b6001600160a01b038a16602084015288604084015287606084015286608084015282810360a084015261c9c2818761c15c565b855460c0850152600186015460ff16151560e085015290505b828103610100840152617d2a818561c4e7565b60e08152600061ca0160e083018961c15c565b876020840152866040840152828103606084015261c8d6818761c15c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156179105761791061ca1f565b808201808211156179105761791061ca1f565b6101208152600061ca8961012083018b61c15c565b6001600160a01b038a16602084015288604084015287606084015286608084015282810360a084015261cabc818761c15c565b855160c08501526020860151151560e0850152905061c9db565b6101208152600061caeb61012083018a61c15c565b6001600160a01b03891660208401528760408401528660608401528560808401528281038060a08501526000825261cb3260c0850187805182526020908101511515910152565b602081016101008501525061cb4a602082018561c4e7565b9a9950505050505050505050565b60808152600061cb6b608083018761c15c565b8560208401526001600160a01b0385166040840152828103606084015261be8b818561c4e7565b60808152600061cba5608083018761c15c565b856020840152846040840152828103606084015261be8b818561c4e7565b60a08152600061cbd660a083018861c15c565b6001600160a01b0387166020840152828103604084015261cbf7818761c15c565b9050846060840152828103608084015261c61b818561c4e7565b60008261cc47577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60c08152600061cc5f60c083018861c15c565b6001600160a01b0387166020840152828103604084015261cc80818761c15c565b85546060850152600186015460ff1615156080850152905082810360a084015261c61b818561c4e7565b60a08152600061ccbd60a083018761c15c565b828103602084015261cccf818761c15c565b85546040850152600186015460ff16151560608501529050828103608084015261be8b818561c4e7565b6001600160a01b038316815260406020820152600061980a604083018461c15c565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161cd5381601a85016020880161c138565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161cd9081601c84016020880161c138565b01601c01949350505050565b602081526000617a1e602083018461c15c565b6040516060810167ffffffffffffffff8111828210171561cdd25761cdd261c767565b60405290565b60008067ffffffffffffffff84111561cdf35761cdf361c767565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561ce225761ce2261c767565b60405283815290508082840185101561ce3a57600080fd5b619bd984602083018561c138565b600082601f83011261ce5957600080fd5b617a1e8383516020850161cdd8565b60006020828403121561ce7a57600080fd5b815167ffffffffffffffff81111561ce9157600080fd5b61790c8482850161ce48565b6000835161ceaf81846020880161c138565b83519083019061cec381836020880161c138565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161cf0481601a85016020880161c138565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161cf4181603384016020880161c138565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b6001600160a01b03841681526001600160a01b038316602082015260606040820152600061a1bf606083018461c15c565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000617a1e608083018461c15c565b60006020828403121561d00157600080fd5b815167ffffffffffffffff81111561d01857600080fd5b8201601f8101841361d02957600080fd5b61790c8482516020840161cdd8565b6000855161d04a818460208a0161c138565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161d084816001840160208a0161c138565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161d0c281600284016020890161c138565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161d10481600284016020880161c138565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061d14f604083018461c15c565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161d1c681601f85016020870161c138565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061d233604083018461c15c565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061d285604083018461c15c565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161d2fc81601485016020870161c138565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061d343604083018561c15c565b8281036020840152617a1a818561c15c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161d3bc81600185016020870161c138565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161d40281846020870161c138565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161d4b581604b85016020870161c138565b91909101604b0192915050565b600060ff821660ff810361d4d85761d4d861ca1f565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161d53f81602985016020870161c138565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000617a1e608083018461c15c565b60006020828403121561d5a557600080fd5b815167ffffffffffffffff81111561d5bc57600080fd5b82016060818503121561d5ce57600080fd5b61d5d661cdaf565b81518060030b811461d5e757600080fd5b8152602082015167ffffffffffffffff81111561d60357600080fd5b61d60f8682850161ce48565b602083015250604082015167ffffffffffffffff81111561d62f57600080fd5b61d63b8682850161ce48565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161d6a781602185016020870161c138565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161d89381602185016020880161c138565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161d8d081602e84016020880161c138565b01602e01949350505050565b6000825161d8ee81846020870161c138565b9190910192915050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161d53f81602985016020870161c138565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161d9b481602285016020870161c138565b9190910160220192915050565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161d9f981600e85016020870161c138565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161dad781601885016020880161c138565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161db1481601c84016020880161c138565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161dc1a81846020870161c138565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b80820281158282048414176179105761791061ca1f565b6001815b600184111561dc9b5780850481111561dc7f5761dc7f61ca1f565b600184161561dc8d57908102905b60019390931c92800261dc64565b935093915050565b60008261dcb257506001617910565b8161dcbf57506000617910565b816001811461dcd5576002811461dcdf5761dcfb565b6001915050617910565b60ff84111561dcf05761dcf061ca1f565b50506001821b617910565b5060208310610133831016604e8410600b841016171561dd1e575081810a617910565b61dd2b600019848461dc60565b806000190482111561dd3f5761dd3f61ca1f565b029392505050565b6000617a1e838361dca3565b818103600083128015838313168383128216171561b2d45761b2d461ca1f565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161ddab81601c85016020870161c138565b91909101601c0192915050565b6000600019820361ddcb5761ddcb61ca1f565b5060010190565b60008161dde15761dde161ca1f565b506000190190565b6000835161ddfb81846020880161c138565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161de3581600184016020880161c138565b0160010194935050505056fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea2646970667358221220c069e4cb3e16bcddc5b07d6ba4019a062fbae92d695877ad19f66fc9ac6047fd64736f6c634300081a00336080604052348015600f57600080fd5b5061061b8061001f6000396000f3fe60806040526004361061002a5760003560e01c80635bcfd61614610033578063c9028a361461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e366004610151565b610073565b34801561005f57600080fd5b5061003161006e36600461020e565b6100ee565b6060811561008a576100878284018461027f565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610375565b6100c560408a0160208b016103e1565b896040013533866040516100de96959493929190610445565b60405180910390a1505050505050565b7fd75bb509c8f32a725aac99ac5c4541060dbfb889a3aca8314d6f00395618c4c48160405161011d9190610507565b60405180910390a150565b803573ffffffffffffffffffffffffffffffffffffffff8116811461014c57600080fd5b919050565b60008060008060006080868803121561016957600080fd5b853567ffffffffffffffff81111561018057600080fd5b86016060818903121561019257600080fd5b94506101a060208701610128565b935060408601359250606086013567ffffffffffffffff8111156101c357600080fd5b8601601f810188136101d457600080fd5b803567ffffffffffffffff8111156101eb57600080fd5b8860208284010111156101fd57600080fd5b959894975092955050506020019190565b60006020828403121561022057600080fd5b813567ffffffffffffffff81111561023757600080fd5b82016080818503121561024957600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561029157600080fd5b813567ffffffffffffffff8111156102a857600080fd5b8201601f810184136102b957600080fd5b803567ffffffffffffffff8111156102d3576102d3610250565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033f5761033f610250565b60405281815282820160200186101561035757600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126103aa57600080fd5b83018035915067ffffffffffffffff8211156103c557600080fd5b6020019150368190038213156103da57600080fd5b9250929050565b6000602082840312156103f357600080fd5b61024982610128565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60a08152600061045960a08301888a6103fc565b73ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff851660608401528281036080840152835180825260005b818110156104c3576020818701810151848301820152016104a7565b5060006020828401015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011683010192505050979650505050505050565b6020815273ffffffffffffffffffffffffffffffffffffffff61052983610128565b16602082015273ffffffffffffffffffffffffffffffffffffffff61055060208401610128565b166040820152600080604084013590508060608401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261059c57600080fd5b830160208101903567ffffffffffffffff8111156105b957600080fd5b8036038213156105c857600080fd5b6080808501526105dc60a0850182846103fc565b9594505050505056fea2646970667358221220dc7a523df5134796579649d41e8953ef32547ff135f22140d4bed3844993809c64736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea2646970667358221220eaa287ea22d82335c1d97ef661cb17f1296902daa41cca34de107966248e954364736f6c634300081a003360c060405234801561001057600080fd5b5060405161207238038061207283398101604081905261002f916101f0565b6001600160a01b038216158061004c57506001600160a01b038116155b1561006a5760405163d92e233d60e01b815260040160405180910390fd5b60066100768982610342565b5060076100838882610342565b506008805460ff191660ff881617905560808590528360028111156100aa576100aa610400565b60a08160028111156100be576100be610400565b905250600192909255600080546001600160a01b039283166001600160a01b0319909116179055600880549190921661010002610100600160a81b0319909116179055506104169350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261013357600080fd5b81516001600160401b0381111561014c5761014c61010c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561017a5761017a61010c565b60405281815283820160200185101561019257600080fd5b60005b828110156101b157602081860181015183830182015201610195565b506000918101602001919091529392505050565b8051600381106101d457600080fd5b919050565b80516001600160a01b03811681146101d457600080fd5b600080600080600080600080610100898b03121561020d57600080fd5b88516001600160401b0381111561022357600080fd5b61022f8b828c01610122565b60208b015190995090506001600160401b0381111561024d57600080fd5b6102598b828c01610122565b975050604089015160ff8116811461027057600080fd5b60608a0151909650945061028660808a016101c5565b60a08a0151909450925061029c60c08a016101d9565b91506102aa60e08a016101d9565b90509295985092959890939650565b600181811c908216806102cd57607f821691505b6020821081036102ed57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561033d57806000526020600020601f840160051c8101602085101561031a5750805b601f840160051c820191505b8181101561033a5760008155600101610326565b50505b505050565b81516001600160401b0381111561035b5761035b61010c565b61036f8161036984546102b9565b846102f3565b6020601f8211600181146103a3576000831561038b5750848201515b600019600385901b1c1916600184901b17845561033a565b600084815260208120601f198516915b828110156103d357878501518255602094850194600190920191016103b3565b50848210156103f15786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a051611c1b61045760003960006103440152600081816102f001528181610bdc01528181610ce201528181610efe01526110040152611c1b6000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c806395d89b41116100f9578063ccc7759911610097578063eddeb12311610071578063eddeb12314610461578063f2441b3214610474578063f687d12a14610494578063fc5fecd5146104a757600080fd5b8063ccc77599146103d4578063d9eeebed146103e7578063dd62ed3e1461041b57600080fd5b8063b84c8246116100d3578063b84c824614610386578063c47f00271461039b578063c7012626146103ae578063c835d7cc146103c157600080fd5b806395d89b4114610337578063a3413d031461033f578063a9059cbb1461037357600080fd5b80633ce4a5bc116101665780634d8943bb116101405780634d8943bb146102ac57806370a08231146102b557806385e1f4d0146102eb5780638b851b951461031257600080fd5b80633ce4a5bc1461024657806342966c681461028657806347e7ef241461029957600080fd5b806318160ddd1161019757806318160ddd1461021657806323b872dd1461021e578063313ce5671461023157600080fd5b806306fdde03146101be578063091d2788146101dc578063095ea7b3146101f3575b600080fd5b6101c66104ba565b6040516101d39190611648565b60405180910390f35b6101e560015481565b6040519081526020016101d3565b610206610201366004611687565b61054c565b60405190151581526020016101d3565b6005546101e5565b61020661022c3660046116b3565b610563565b60085460405160ff90911681526020016101d3565b61026173735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d3565b6102066102943660046116f4565b6105fa565b6102066102a7366004611687565b61060e565b6101e560025481565b6101e56102c336600461170d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6101e57f000000000000000000000000000000000000000000000000000000000000000081565b60085461026190610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6101c6610767565b6103667f000000000000000000000000000000000000000000000000000000000000000081565b6040516101d3919061172a565b610206610381366004611687565b610776565b610399610394366004611832565b610783565b005b6103996103a9366004611832565b6107e0565b6102066103bc366004611883565b610839565b6103996103cf36600461170d565b610988565b6103996103e236600461170d565b610a9c565b6103ef610bb0565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101d3565b6101e56104293660046118dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205490565b61039961046f3660046116f4565b610dce565b6000546102619073ffffffffffffffffffffffffffffffffffffffff1681565b6103996104a23660046116f4565b610e50565b6103ef6104b53660046116f4565b610ed2565b6060600680546104c990611915565b80601f01602080910402602001604051908101604052809291908181526020018280546104f590611915565b80156105425780601f1061051757610100808354040283529160200191610542565b820191906000526020600020905b81548152906001019060200180831161052557829003601f168201915b5050505050905090565b60006105593384846110ee565b5060015b92915050565b60006105708484846111f7565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460209081526040808320338452909152902054828110156105db576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105ef85336105ea8685611997565b6110ee565b506001949350505050565b600061060633836113b2565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab1480159061064c575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156106755750600854610100900473ffffffffffffffffffffffffffffffffffffffff163314155b156106ac576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106b683836114f4565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526107569186906119aa565b60405180910390a250600192915050565b6060600780546104c990611915565b60006105593384846111f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab146107d0576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60076107dc8282611a1b565b5050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461082d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60066107dc8282611a1b565b6000806000610846610bb0565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156108d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fc9190611b34565b610932576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61093c33856113b2565b60025460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161097591899189918791611b56565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146109d5576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a22576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610ae9576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610b36576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c679190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610cb6576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d699190611ba2565b905080600003610da5576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060025460015483610db89190611bbb565b610dc29190611bd2565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e1b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610a91565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e9d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610f65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f899190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610fd8576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015611067573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108b9190611ba2565b9050806000036110c7576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000906110d78784611bbb565b6110e19190611bd2565b9296929550919350505050565b73ffffffffffffffffffffffffffffffffffffffff831661113b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611188576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611244576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611291576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040902054818110156112f1576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112fb8282611997565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260036020526040808220939093559085168152908120805484929061133e908490611bd2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113a491815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff82166113ff576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260409020548181101561145f576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114698282611997565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260036020526040812091909155600580548492906114a4908490611997565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016111ea565b73ffffffffffffffffffffffffffffffffffffffff8216611541576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008282546115539190611bd2565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805483929061158d908490611bd2565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561160a576020818501810151868301820152016115ee565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061165b60208301846115e4565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461168457600080fd5b50565b6000806040838503121561169a57600080fd5b82356116a581611662565b946020939093013593505050565b6000806000606084860312156116c857600080fd5b83356116d381611662565b925060208401356116e381611662565b929592945050506040919091013590565b60006020828403121561170657600080fd5b5035919050565b60006020828403121561171f57600080fd5b813561165b81611662565b6020810160038310611765577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff8411156117b5576117b561176b565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff821117156118025761180261176b565b60405283815290508082840185101561181a57600080fd5b83836020830137600060208583010152509392505050565b60006020828403121561184457600080fd5b813567ffffffffffffffff81111561185b57600080fd5b8201601f8101841361186c57600080fd5b61187b8482356020840161179a565b949350505050565b6000806040838503121561189657600080fd5b823567ffffffffffffffff8111156118ad57600080fd5b8301601f810185136118be57600080fd5b6118cd8582356020840161179a565b95602094909401359450505050565b600080604083850312156118ef57600080fd5b82356118fa81611662565b9150602083013561190a81611662565b809150509250929050565b600181811c9082168061192957607f821691505b602082108103611962577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561055d5761055d611968565b6040815260006119bd60408301856115e4565b90508260208301529392505050565b601f821115611a1657806000526020600020601f840160051c810160208510156119f35750805b601f840160051c820191505b81811015611a1357600081556001016119ff565b50505b505050565b815167ffffffffffffffff811115611a3557611a3561176b565b611a4981611a438454611915565b846119cc565b6020601f821160018114611a9b5760008315611a655750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611a13565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015611ae95787850151825560209485019460019092019101611ac9565b5084821015611b2557868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b600060208284031215611b4657600080fd5b8151801515811461165b57600080fd5b608081526000611b6960808301876115e4565b6020830195909552506040810192909252606090910152919050565b600060208284031215611b9757600080fd5b815161165b81611662565b600060208284031215611bb457600080fd5b5051919050565b808202811582820484141761055d5761055d611968565b8082018082111561055d5761055d61196856fea26469706673582212202a06c5d72036d88c206ff2bfdd016b3ce8555bc0090e8bb5487bc61ea043732b64736f6c634300081a0033a2646970667358221220b32b7cc8086478c4ccfcd65134047c5a506ae7c486bcba308a8e0d74bb9364db64736f6c634300081a0033", } // 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 2c51d7af3..e42d51da3 100644 --- a/v2/pkg/gatewayzevm.t.sol/gatewayzevmoutboundtest.go +++ b/v2/pkg/gatewayzevm.t.sol/gatewayzevmoutboundtest.go @@ -73,7 +73,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\":\"testDepositAndRevertZRC20AndCallUniversalContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallUniversalContractFailsITargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallUniversalContractFailsITargetIsProtocol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallUniversalContractFailsIfAmountIsZero\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallUniversalContractFailsIfSenderIsNotProtocol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallUniversalContractFailsIfTargetIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallUniversalContractFailsIfZRC20IsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfSenderNotProtocol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfTargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfTargetIsProtocol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfTargetIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfZRC20IsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositTogglePause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallUniversal\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallUniversalContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallUniversalContractFailsIfSenderIsNotProtocol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallUniversalContractFailsIfTargetIsAmountIsZero\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallUniversalContractFailsIfTargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallUniversalContractFailsIfTargetIsProtocol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallUniversalContractFailsIfTargetIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallUniversalContractFailsIfZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallUniversalContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallUniversalContractFailsIfAmountIsZero\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallUniversalContractFailsIfSenderIsNotProtocol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallUniversalContractFailsIfTargetIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallUniversalContractFailsIfZRC20IsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallUniversalContractIfTargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallUniversalContractIfTargetIsProtocol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteFailsIfTargetIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteFailsIfZRC20IsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteRevertUniversalContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteRevertUniversalContractFailsIfTargetIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteRevertUniversalContractIfSenderIsNotProtocol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteUniversalContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteUniversalContractFailsIfSenderIsNotProtocol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteUniversalContractFailsIfZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Called\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"callOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structCallOptions\",\"components\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"isArbitraryCall\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawn\",\"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\"},{\"name\":\"callOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structCallOptions\",\"components\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"isArbitraryCall\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\":\"CallerIsNotProtocol\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedZetaSent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientGasLimit\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZetaAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"MessageSizeExceeded\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrProtocol\",\"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: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061fe1e8061003c6000396000f3fe608060405234801561001057600080fd5b506004361061034c5760003560e01c806385226c81116101bd578063c8814d2e116100f9578063eab7674e116100a2578063ef2b53941161007c578063ef2b53941461054a578063f1d98f1b14610552578063fa7626d41461055a578063fb339a1c1461056757600080fd5b8063eab7674e14610532578063eb78bd7d1461053a578063ec294d9f1461054257600080fd5b8063e09bc659116100d3578063e09bc659146104ed578063e20c9f71146104f5578063e63ab1e9146104fd57600080fd5b8063c8814d2e146104d5578063ca26929c146104dd578063cf2c3d1d146104e557600080fd5b8063996b767511610166578063b5508aa911610140578063b5508aa9146104a5578063b936be8c146104ad578063ba414fa6146104b5578063c35cb5e4146104cd57600080fd5b8063996b76751461048d5780639c9acd5d14610495578063b0464fdc1461049d57600080fd5b8063916a17c611610197578063916a17c61461047057806396d9d8761461048557806397f7661f1461044357600080fd5b806385226c811461044b578063884660a314610460578063890a2d671461046857600080fd5b80633e5e3c231161028c5780635cec7db5116102355780636efa04b51161020f5780636efa04b51461042b5780637cec29b0146104335780637f924c4e1461043b578063828d267c1461044357600080fd5b80635cec7db5146104065780636163f8ef1461040e57806366d9a9a01461041657600080fd5b806351336fb01161026657806351336fb0146103f657806358c9987f146103fe5780635b4c90e1146103a157600080fd5b80633e5e3c23146103de5780633f7286f4146103e657806348f4fd07146103ee57600080fd5b806327820625116102f95780632ade3880116102d35780632ade3880146103b1578063339bd828146103c65780633626c616146103ce5780633ab5b199146103d657600080fd5b806327820625146103995780632948df41146103a15780632acb21b4146103a957600080fd5b80631c785a141161032a5780631c785a141461036b5780631ed7831c146103735780632468bc0f1461039157600080fd5b8063084fafab146103515780630a9254e41461035b57806314b7a6da14610363575b600080fd5b61035961056f565b005b610359610745565b610359611249565b610359611399565b61037b611cb0565b604051610388919061a0c7565b60405180910390f35b610359611d12565b6103596121dd565b6103596122a5565b61035961248e565b6103b961264d565b604051610388919061a163565b61035961278f565b6103596128db565b610359612a63565b61037b612c14565b61037b612c74565b610359612cd4565b610359612e1f565b610359612f6a565b61035961311f565b61035961330d565b61041e61345b565b604051610388919061a2c9565b6103596135dd565b610359613981565b610359613b6c565b610359613ba5565b610453613d51565b604051610388919061a367565b610359613e21565b610359614100565b6104786142bb565b604051610388919061a3de565b6103596143b6565b610359614509565b61035961465d565b6104786147ad565b6104536148a8565b610359614978565b6104bd614b35565b6040519015158152602001610388565b610359614c09565b610359614dc4565b610359614f06565b610359615189565b610359615347565b61037b615500565b6105247f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b604051908152602001610388565b610359615560565b6103596156ae565b61035961586c565b610359615a1b565b610359615bcc565b601f546104bd9060ff1681565b610359615d1a565b602480546040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190529281018390526044810183905260648101929092526001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156105fe57600080fd5b505af1158015610612573d6000803e3d6000fd5b505050507fd75bb509c8f32a725aac99ac5c4541060dbfb889a3aca8314d6f00395618c4c4602c604051610646919061a59f565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b1580156106a857600080fd5b505af11580156106bc573d6000803e3d6000fd5b50506020546024546040517f184b07930000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063184b079393506107119290911690602c9060040161a5b2565b600060405180830381600087803b15801561072b57600080fd5b505af115801561073f573d6000803e3d6000fd5b50505050565b602580547fffffffffffffffffffffffff000000000000000000000000000000000000000090811630179091556026805490911661123417905560405161078b90619fda565b604051809103906000f0801580156107a7573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600f81527f476174657761795a45564d2e736f6c00000000000000000000000000000000006020820152602554915160248101939093529216604482015261088b919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc95500000000000000000000000000000000000000000000000000000000179052615ecd565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b039384168102919091179182905560208054919092049092167fffffffffffffffffffffffff000000000000000000000000000000000000000090921682178155604080517f2722feee0000000000000000000000000000000000000000000000000000000081529051632722feee926004808401939192918290030181865afa15801561094d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610971919061a5d4565b602780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516109b590619fe7565b604051809103906000f0801580156109d1573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161781556027546040517f06447d5600000000000000000000000000000000000000000000000000000000815292166004830152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d569101600060405180830381600087803b158015610a6d57600080fd5b505af1158015610a81573d6000803e3d6000fd5b505050506000806000604051610a9690619ff4565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610ad2573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602054604051601293600193849360009391921690610b289061a001565b610b379695949392919061a5fd565b604051809103906000f080158015610b53573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556023546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b158015610bea57600080fd5b505af1158015610bfe573d6000803e3d6000fd5b50506023546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b158015610c6857600080fd5b505af1158015610c7c573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610cfc57600080fd5b505af1158015610d10573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610d6557600080fd5b505af1158015610d79573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610ded573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e11919061a6f2565b506021546025546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116906347e7ef24906044016020604051808303816000875af1158015610e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea6919061a6f2565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610f0557600080fd5b505af1158015610f19573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610f8f57600080fd5b505af1158015610fa3573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116925063095ea7b391506044016020604051808303816000875af1158015611017573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103b919061a6f2565b50602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b15801561108d57600080fd5b505af11580156110a1573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015611115573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611139919061a6f2565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561119857600080fd5b505af11580156111ac573d6000803e3d6000fd5b5050604080516080810182526025546001600160a01b0390811682526000602080840182815260018587019081528651928301909652918152606084018190528351602c80549185167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161781559251602d8054919095169116179092559251602e55909350909150602f90611244908261a78a565b505050565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156112a257600080fd5b505af11580156112b6573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561132657600080fd5b505af115801561133a573d6000803e3d6000fd5b50506020546021546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260016024820152600060448201529116925063f45346dc9150606401610711565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156113f257600080fd5b505af1158015611406573d6000803e3d6000fd5b5050602754604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506114f1919060040161a849565b600060405180830381600087803b15801561150b57600080fd5b505af115801561151f573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561157357600080fd5b505af1158015611587573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156115e457600080fd5b505af11580156115f8573d6000803e3d6000fd5b5050602754604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506116e3919060040161a849565b600060405180830381600087803b1580156116fd57600080fd5b505af1158015611711573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561176557600080fd5b505af1158015611779573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156117d657600080fd5b505af11580156117ea573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561183e57600080fd5b505af1158015611852573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd93c066500000000000000000000000000000000000000000000000000000000600482015260019250737109709ecfa91a80626ff3989d68f67f5b1dd12d915063c31eb0e090602401600060405180830381600087803b1580156118c557600080fd5b505af11580156118d9573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561193657600080fd5b505af115801561194a573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810187905290821660448201529116925063f45346dc9150606401600060405180830381600087803b1580156119c257600080fd5b505af11580156119d6573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015611a3357600080fd5b505af1158015611a47573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611a9b57600080fd5b505af1158015611aaf573d6000803e3d6000fd5b50506021546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a08231906024015b602060405180830381865afa158015611b03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b27919061a85c565b9050611b34600082615eec565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611b8d57600080fd5b505af1158015611ba1573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810188905290821660448201529116925063f45346dc9150606401600060405180830381600087803b158015611c1957600080fd5b505af1158015611c2d573d6000803e3d6000fd5b50506021546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611c80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ca4919061a85c565b90506112448382615eec565b60606016805480602002602001604051908101604052809291908181526020018280548015611d0857602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611cea575b5050505050905090565b6022546027546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611d63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d87919061a85c565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015611dd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dfd919061a85c565b6024546040519192506001600160a01b03163190600090611e209060200161a875565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611f0e57600080fd5b505af1158015611f22573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e9450611f7d93506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054611fad936001600160a01b03928316928c92169061a8b2565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561200e57600080fd5b505af1158015612022573d6000803e3d6000fd5b50506020546024546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a9593506120799286928c92911690889060040161a963565b600060405180830381600087803b15801561209357600080fd5b505af11580156120a7573d6000803e3d6000fd5b50506022546027546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156120fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211e919061a85c565b905061213361212d888861a9cc565b82615eec565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015612184573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121a8919061a85c565b90506121b48682615eec565b6121d36121c1898761a9df565b6024546001600160a01b031631615eec565b5050505050505050565b604051630618f58760e51b81527f42c0407e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561224957600080fd5b505af115801561225d573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa7915060240161068e565b60006040516020016122b69061a875565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b15801561236457600080fd5b505af1158015612378573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156123e857600080fd5b505af11580156123fc573d6000803e3d6000fd5b50506020546024546040517fbcf7f32b0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063bcf7f32b935061245892869260009260019290911690899060040161a9f2565b600060405180830381600087803b15801561247257600080fd5b505af1158015612486573d6000803e3d6000fd5b505050505050565b600060405160200161249f9061a875565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f42c0407e0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561256957600080fd5b505af115801561257d573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015b600060405180830381600087803b1580156125db57600080fd5b505af11580156125ef573d6000803e3d6000fd5b50506020546021546024546040517fbcf7f32b0000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063bcf7f32b9450612458938793811692600192911690899060040161a9f2565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561278657600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561276f5783829060005260206000200180546126e29061a475565b80601f016020809104026020016040519081016040528092919081815260200182805461270e9061a475565b801561275b5780601f106127305761010080835404028352916020019161275b565b820191906000526020600020905b81548152906001019060200180831161273e57829003601f168201915b5050505050815260200190600101906126c3565b505050508152505081526020019060010190612671565b50505050905090565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156127e857600080fd5b505af11580156127fc573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561286c57600080fd5b505af1158015612880573d6000803e3d6000fd5b50506020546021546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450639d4ba46593506107119290911690600190600090602c9060040161aa47565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561293757600080fd5b505af115801561294b573d6000803e3d6000fd5b5050604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156129bb57600080fd5b505af11580156129cf573d6000803e3d6000fd5b50506020546021546027546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810187905290821660448201529116925063f45346dc91506064015b600060405180830381600087803b158015612a4857600080fd5b505af1158015612a5c573d6000803e3d6000fd5b5050505050565b6000604051602001612a749061a875565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b158015612b2257600080fd5b505af1158015612b36573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015612ba657600080fd5b505af1158015612bba573d6000803e3d6000fd5b50506020546021546040517fbcf7f32b0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063bcf7f32b93506124589286921690600190600090899060040161a9f2565b60606018805480602002602001604051908101604052809291908181526020018280548015611d08576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611cea575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015611d08576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611cea575050505050905090565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612d2d57600080fd5b505af1158015612d41573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015612db157600080fd5b505af1158015612dc5573d6000803e3d6000fd5b50506020546024546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450639d4ba465935061071192600092600192911690602c9060040161aa47565b604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015612e8b57600080fd5b505af1158015612e9f573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015612efc57600080fd5b505af1158015612f10573d6000803e3d6000fd5b50506020546021546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450639d4ba465935061071192909116906001908590602c9060040161aa47565b6000604051602001612f7b9061a875565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b15801561302957600080fd5b505af115801561303d573d6000803e3d6000fd5b5050604051630618f58760e51b81527f5d67094f000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156130ad57600080fd5b505af11580156130c1573d6000803e3d6000fd5b50506020546021546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca379450612458938793811692600092911690899060040161a9f2565b6040516001906000906131349060200161a875565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156131fe57600080fd5b505af1158015613212573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561326f57600080fd5b505af1158015613283573d6000803e3d6000fd5b50506020546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0390911692506321501a9591506132d690849087908590889060040161a963565b600060405180830381600087803b1580156132f057600080fd5b505af1158015613304573d6000803e3d6000fd5b50505050505050565b604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561337957600080fd5b505af115801561338d573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156133ea57600080fd5b505af11580156133fe573d6000803e3d6000fd5b50506020546021546027546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550639d4ba465945061071193928316926001921690602c9060040161aa47565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561278657838290600052602060002090600202016040518060400160405290816000820180546134b29061a475565b80601f01602080910402602001604051908101604052809291908181526020018280546134de9061a475565b801561352b5780601f106135005761010080835404028352916020019161352b565b820191906000526020600020905b81548152906001019060200180831161350e57829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156135c557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116135725790505b5050505050815250508152602001906001019061347f565b602154602480546040516370a0823160e01b81526001600160a01b03918216600482015260009391909116916370a082319101602060405180830381865afa15801561362d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613651919061a85c565b905061365e600082615eec565b600060405160200161366f9061a875565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561375d57600080fd5b505af1158015613771573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e94506137cc93506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526027546020546137fd936001600160a01b0392831692600192169061a8b2565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561385e57600080fd5b505af1158015613872573d6000803e3d6000fd5b50506020546021546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca3794506138d0938793811692600192911690899060040161a9f2565b600060405180830381600087803b1580156138ea57600080fd5b505af11580156138fe573d6000803e3d6000fd5b5050602154602480546040516370a0823160e01b81526001600160a01b03918216600482015260009550921692506370a082319101602060405180830381865afa158015613950573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613974919061a85c565b905061073f600182615eec565b60006040516020016139929061a875565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015613a8057600080fd5b505af1158015613a94573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e9450613aef93506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054613b20936001600160a01b0392831692600192169061a8b2565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024016125c1565b6021546026546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401611ae6565b6000604051602001613bb69061a875565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b158015613c6457600080fd5b505af1158015613c78573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015613ce857600080fd5b505af1158015613cfc573d6000803e3d6000fd5b50506020546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0390911692506321501a959150612458908490600190600090889060040161a963565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015612786578382906000526020600020018054613d949061a475565b80601f0160208091040260200160405190810160405280929190818152602001828054613dc09061a475565b8015613e0d5780601f10613de257610100808354040283529160200191613e0d565b820191906000526020600020905b815481529060010190602001808311613df057829003601f168201915b505050505081526020019060010190613d75565b602154602480546040516370a0823160e01b81526001600160a01b03918216600482015260009391909116916370a082319101602060405180830381865afa158015613e71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e95919061a85c565b9050613ea2600082615eec565b602480546040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190529281018390526044810183905260648101929092526001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015613f3157600080fd5b505af1158015613f45573d6000803e3d6000fd5b505050507fd75bb509c8f32a725aac99ac5c4541060dbfb889a3aca8314d6f00395618c4c4602c604051613f79919061a59f565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613fda57600080fd5b505af1158015613fee573d6000803e3d6000fd5b50506020546021546024546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550639d4ba465945061404b93928316926001921690602c9060040161aa47565b600060405180830381600087803b15801561406557600080fd5b505af1158015614079573d6000803e3d6000fd5b5050602154602480546040516370a0823160e01b81526001600160a01b03918216600482015260009550921692506370a082319101602060405180830381865afa1580156140cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140ef919061a85c565b90506140fc600182615eec565b5050565b6040516001906000906141159060200161a875565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156141df57600080fd5b505af11580156141f3573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561425057600080fd5b505af1158015614264573d6000803e3d6000fd5b50506020546027546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a9593506132d69286928992911690889060040161a963565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156127865760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561439e57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161434b5790505b505050505081525050815260200190600101906142df565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561441257600080fd5b505af1158015614426573d6000803e3d6000fd5b5050604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561449657600080fd5b505af11580156144aa573d6000803e3d6000fd5b50506020546021546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101869052911660448201819052925063f45346dc9150606401612a2e565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561456257600080fd5b505af1158015614576573d6000803e3d6000fd5b5050604051630618f58760e51b81527f5d67094f000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156145e657600080fd5b505af11580156145fa573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526000602482015290821660448201529116925063f45346dc9150606401610711565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156146b657600080fd5b505af11580156146ca573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561473a57600080fd5b505af115801561474e573d6000803e3d6000fd5b50506020546026546040517ff45346dc00000000000000000000000000000000000000000000000000000000815260006004820152600160248201526001600160a01b0391821660448201529116925063f45346dc9150606401610711565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156127865760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561489057602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161483d5790505b505050505081525050815260200190600101906147d1565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156127865783829060005260206000200180546148eb9061a475565b80601f01602080910402602001604051908101604052809291908181526020018280546149179061a475565b80156149645780601f1061493957610100808354040283529160200191614964565b820191906000526020600020905b81548152906001019060200180831161494757829003601f168201915b5050505050815260200190600101906148cc565b6024546040516001600160a01b03909116319060009061499a9060200161a875565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b158015614a4857600080fd5b505af1158015614a5c573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015614acc57600080fd5b505af1158015614ae0573d6000803e3d6000fd5b50506020546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0390911692506321501a9591506132d6908490600190600090889060040161a963565b60085460009060ff1615614b4d575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015614bde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614c02919061a85c565b1415905090565b604051600190600090614c1e9060200161a875565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f42c0407e0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b158015614ce857600080fd5b505af1158015614cfc573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015614d5957600080fd5b505af1158015614d6d573d6000803e3d6000fd5b50506020546024546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a9593506132d69286928992911690889060040161a963565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614e1d57600080fd5b505af1158015614e31573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015614ea157600080fd5b505af1158015614eb5573d6000803e3d6000fd5b50506020546040517f184b07930000000000000000000000000000000000000000000000000000000081526001600160a01b03909116925063184b0793915061071190600090602c9060040161a5b2565b6021546026546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015614f57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614f7b919061a85c565b9050614f88600082615eec565b60255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614fe157600080fd5b505af1158015614ff5573d6000803e3d6000fd5b5050604051630618f58760e51b81527f42c0407e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561506557600080fd5b505af1158015615079573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810188905290821660448201529116925063f45346dc9150606401600060405180830381600087803b1580156150f157600080fd5b505af1158015615105573d6000803e3d6000fd5b50506021546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015615158573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061517c919061a85c565b9050611244600082615eec565b600060405160200161519a9061a875565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f42c0407e0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561526457600080fd5b505af1158015615278573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156152d557600080fd5b505af11580156152e9573d6000803e3d6000fd5b50506020546021546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca379450612458938793811692600192911690899060040161a9f2565b60006040516020016153589061a875565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561542257600080fd5b505af1158015615436573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561549357600080fd5b505af11580156154a7573d6000803e3d6000fd5b50506020546021546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063c39aca37935061245892869216906001908690899060040161a9f2565b60606015805480602002602001604051908101604052809291908181526020018280548015611d08576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611cea575050505050905090565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156155b957600080fd5b505af11580156155cd573d6000803e3d6000fd5b5050604051630618f58760e51b81527f5d67094f000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561563d57600080fd5b505af1158015615651573d6000803e3d6000fd5b50506020546021546024546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550639d4ba465945061071193928316926000921690602c9060040161aa47565b60006040516020016156bf9061a875565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561578957600080fd5b505af115801561579d573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156157fa57600080fd5b505af115801561580e573d6000803e3d6000fd5b50506020546021546027546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca379450612458938793811692600192911690899060040161a9f2565b600060405160200161587d9061a875565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b15801561592b57600080fd5b505af115801561593f573d6000803e3d6000fd5b5050604051630618f58760e51b81527f19c08f49000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156159af57600080fd5b505af11580156159c3573d6000803e3d6000fd5b50506020546021546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a959350612458928692600092911690889060040161a963565b6000604051602001615a2c9061a875565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b158015615ada57600080fd5b505af1158015615aee573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015615b5e57600080fd5b505af1158015615b72573d6000803e3d6000fd5b50506020546021546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063c39aca3793506124589286921690600190600090899060040161a9f2565b604051630618f58760e51b81527f42c0407e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015615c3857600080fd5b505af1158015615c4c573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015615ca957600080fd5b505af1158015615cbd573d6000803e3d6000fd5b50506020546021546024546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550639d4ba465945061071193928316926001921690602c9060040161aa47565b6000604051602001615d2b9061a875565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b158015615dd957600080fd5b505af1158015615ded573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015615e5d57600080fd5b505af1158015615e71573d6000803e3d6000fd5b50506020546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063c39aca37935061245892869260009260019290911690899060040161a9f2565b6000615ed761a00e565b615ee2848483615f6b565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b158015615f5757600080fd5b505afa158015612486573d6000803e3d6000fd5b600080615f788584615fe6565b9050615fdb6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001615fc692919061aa7e565b60405160208183030381529060405285615ff2565b9150505b9392505050565b6000615fdf8383616020565b60c081015151600090156160165761600f84848460c0015161603b565b9050615fdf565b61600f84846161e1565b600061602c83836162cc565b615fdf83836020015184615ff2565b6000806160466162d8565b9050600061605486836163ab565b9050600061606b8260600151836020015185616851565b9050600061607b83838989616a63565b90506000616088826178e0565b602081015181519192509060030b156160fb578982604001516040516020016160b292919061aaa0565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526160f29160040161a849565b60405180910390fd5b600061613e6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001617aaf565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d9061619190849060040161a849565b602060405180830381865afa1580156161ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906161d2919061a5d4565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc9259061623690879060040161a849565b600060405180830381865afa158015616253573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261627b919081019061abda565b905060006162a9828560405160200161629592919061ac0f565b604051602081830303815290604052617caf565b90506001600160a01b038116615ee25784846040516020016160b292919061ac3e565b6140fc82826000617cc2565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c9061635f90849060040161ace9565b600060405180830381865afa15801561637c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526163a4919081019061ad30565b9250505090565b6163dd6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d90506164286040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b61643185617dc5565b60208201526000616441866181aa565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015616483573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526164ab919081019061ad30565b868385602001516040516020016164c5949392919061ad79565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb119061651d90859060040161a849565b600060405180830381865afa15801561653a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616562919081019061ad30565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f6906165aa90849060040161ae7d565b602060405180830381865afa1580156165c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906165eb919061a6f2565b61660057816040516020016160b2919061aecf565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061664590849060040161af61565b600060405180830381865afa158015616662573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261668a919081019061ad30565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f6906166d190849060040161afb3565b602060405180830381865afa1580156166ee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616712919061a6f2565b156167a7576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061675c90849060040161afb3565b600060405180830381865afa158015616779573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526167a1919081019061ad30565b60408501525b846001600160a01b03166349c4fac88286600001516040516020016167cc919061b005565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016167f892919061b071565b600060405180830381865afa158015616815573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261683d919081019061ad30565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b606081526020019060019003908161686d5790505090506040518060400160405280600481526020017f6772657000000000000000000000000000000000000000000000000000000000815250816000815181106168cd576168cd61b096565b60200260200101819052506040518060400160405280600381526020017f2d726c0000000000000000000000000000000000000000000000000000000000815250816001815181106169215761692161b096565b60200260200101819052508460405160200161693d919061b0c5565b6040516020818303038152906040528160028151811061695f5761695f61b096565b60200260200101819052508260405160200161697b919061b131565b6040516020818303038152906040528160038151811061699d5761699d61b096565b602002602001018190525060006169b3826178e0565b602080820151604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000008185019081528251808401845260008082529086015282518084019093529051825292810192909252919250616a44906040805180820182526000808252602091820152815180830190925284518252808501908201529061842d565b616a5957856040516020016160b2919061b172565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015616ab3565b511590565b616c2757826020015115616b6f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a4016160f2565b8260c0015115616c27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a4016160f2565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081616c4057905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616c9b9061b203565b935060ff1681518110616cb057616cb061b096565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001616d01919061b222565b604051602081830303815290604052828280616d1c9061b203565b935060ff1681518110616d3157616d3161b096565b60200260200101819052506040518060400160405280600681526020017f6465706c6f790000000000000000000000000000000000000000000000000000815250828280616d7e9061b203565b935060ff1681518110616d9357616d9361b096565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d65000000000000000000000000000000000000815250828280616de09061b203565b935060ff1681518110616df557616df561b096565b60200260200101819052508760200151828280616e119061b203565b935060ff1681518110616e2657616e2661b096565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e747261637450617468000000000000000000000000000000000000815250828280616e739061b203565b935060ff1681518110616e8857616e8861b096565b602090810291909101015287518282616ea08161b203565b935060ff1681518110616eb557616eb561b096565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280616f029061b203565b935060ff1681518110616f1757616f1761b096565b6020026020010181905250616f2b4661848e565b8282616f368161b203565b935060ff1681518110616f4b57616f4b61b096565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280616f989061b203565b935060ff1681518110616fad57616fad61b096565b602002602001018190525086828280616fc59061b203565b935060ff1681518110616fda57616fda61b096565b60209081029190910101528551156171015760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261702b8161b203565b935060ff16815181106170405761704061b096565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d9061709090899060040161a849565b600060405180830381865afa1580156170ad573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526170d5919081019061ad30565b82826170e08161b203565b935060ff16815181106170f5576170f561b096565b60200260200101819052505b8460200151156171d15760408051808201909152601281527f2d2d766572696679536f75726365436f646500000000000000000000000000006020820152828261714a8161b203565b935060ff168151811061715f5761715f61b096565b60200260200101819052506040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152508282806171ac9061b203565b935060ff16815181106171c1576171c161b096565b6020026020010181905250617398565b617209616aae8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b61729c5760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828261724c8161b203565b935060ff16815181106172615761726161b096565b60200260200101819052508460a00151604051602001617281919061b0c5565b6040516020818303038152906040528282806171ac9061b203565b8460c001511580156172df5750604080890151815180830183526000808252602091820152825180840190935281518352908101908201526172dd90511590565b155b156173985760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826173238161b203565b935060ff16815181106173385761733861b096565b602002602001018190525061734c8861852e565b60405160200161735c919061b0c5565b6040516020818303038152906040528282806173779061b203565b935060ff168151811061738c5761738c61b096565b60200260200101819052505b604080860151815180830183526000808252602091820152825180840190935281518352908101908201526173cc90511590565b6174615760408051808201909152600b81527f2d2d72656c6179657249640000000000000000000000000000000000000000006020820152828261740f8161b203565b935060ff16815181106174245761742461b096565b602002602001018190525084604001518282806174409061b203565b935060ff16815181106174555761745561b096565b60200260200101819052505b6060850151156175825760408051808201909152600681527f2d2d73616c740000000000000000000000000000000000000000000000000000602082015282826174aa8161b203565b935060ff16815181106174bf576174bf61b096565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa15801561752e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617556919081019061ad30565b82826175618161b203565b935060ff16815181106175765761757661b096565b60200260200101819052505b60e085015151156176295760408051808201909152600a81527f2d2d6761734c696d697400000000000000000000000000000000000000000000602082015282826175cc8161b203565b935060ff16815181106175e1576175e161b096565b60200260200101819052506175fd8560e001516000015161848e565b82826176088161b203565b935060ff168151811061761d5761761d61b096565b60200260200101819052505b60e085015160200151156176d35760408051808201909152600a81527f2d2d676173507269636500000000000000000000000000000000000000000000602082015282826176768161b203565b935060ff168151811061768b5761768b61b096565b60200260200101819052506176a78560e001516020015161848e565b82826176b28161b203565b935060ff16815181106176c7576176c761b096565b60200260200101819052505b60e0850151604001511561777d5760408051808201909152600e81527f2d2d6d6178466565506572476173000000000000000000000000000000000000602082015282826177208161b203565b935060ff16815181106177355761773561b096565b60200260200101819052506177518560e001516040015161848e565b828261775c8161b203565b935060ff16815181106177715761777161b096565b60200260200101819052505b60e085015160600151156178275760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826177ca8161b203565b935060ff16815181106177df576177df61b096565b60200260200101819052506177fb8560e001516060015161848e565b82826178068161b203565b935060ff168151811061781b5761781b61b096565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156178455761784561a714565b60405190808252806020026020018201604052801561787857816020015b60608152602001906001900390816178635790505b50905060005b8260ff168160ff1610156178d157838160ff16815181106178a1576178a161b096565b6020026020010151828260ff16815181106178be576178be61b096565b602090810291909101015260010161787e565b5093505050505b949350505050565b6179076040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c9161798d9186910161b28d565b600060405180830381865afa1580156179aa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526179d2919081019061ad30565b905060006179e0868361901d565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401617a10919061a367565b6000604051808303816000875af1158015617a2f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617a57919081019061b2d4565b805190915060030b15801590617a705750602081015151155b8015617a7f5750604081015151155b15616a595781600081518110617a9757617a9761b096565b60200260200101516040516020016160b2919061b38a565b60606000617ae48560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150617b1b9082905b90619172565b15617c78576000617b9882617b9284617b8c617b5e8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90619199565b906191fb565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150617bfc908290619172565b15617c6657604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617c63905b8290619280565b90505b617c6f816192a6565b92505050615fdf565b8215617c915784846040516020016160b292919061b576565b5050604080516020810190915260008152615fdf565b509392505050565b6000808251602084016000f09392505050565b8160a0015115617cd157505050565b6000617cde84848461930f565b90506000617ceb826178e0565b602081015181519192509060030b158015617d875750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617d8790604080518082018252600080825260209182015281518083019092528451825280850190820152617b15565b15617d9457505050505050565b60408201515115617db45781604001516040516020016160b2919061b61d565b806040516020016160b2919061b67b565b60606000617dfa8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150617e5f905b829061842d565b15617ece57604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615fdf90617ec99083906198aa565b6192a6565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617f30905b8290619934565b600103617ffd57604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617f9690617c5c565b50604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615fdf90617ec9905b8390619280565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261805c90617e58565b1561819357604080518082018252600181527f2f000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201819052845180860190955292518452830152906180c49083906199ce565b9050600081600183516180d7919061a9cc565b815181106180e7576180e761b096565b6020026020010151905061818a617ec961815d6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528551825280860190820152906198aa565b95945050505050565b826040516020016160b2919061b6e6565b50919050565b606060006181df8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061824190617e58565b1561824f57615fdf816192a6565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526182ae90617f29565b60010361831857604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615fdf90617ec990617ff6565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261837790617e58565b1561819357604080518082018252600181527f2f000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201819052845180860190955292518452830152906183df9083906199ce565b905060018151111561841b5780600282516183fa919061a9cc565b8151811061840a5761840a61b096565b602002602001015192505050919050565b50826040516020016160b2919061b6e6565b80518251600091111561844257506000615ee6565b815183516020850151600092916184589161a9df565b618462919061a9cc565b905082602001518103618479576001915050615ee6565b82516020840151819020912014905092915050565b6060600061849b83619a73565b600101905060008167ffffffffffffffff8111156184bb576184bb61a714565b6040519080825280601f01601f1916602001820160405280156184e5576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846184ef57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e53454400000000000000000000000000000000000000000000818401908152855180870187528381528401929092528451808601909552518452908301526060916185ba905b8290619b55565b156185fa57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618659906185b3565b1561869957505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d49540000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526186f8906185b3565b1561873857505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618797906185b3565b806187fc5750604080518082018252601081527f47504c2d322e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526187fc906185b3565b1561883c57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261889b906185b3565b806189005750604080518082018252601081527f47504c2d332e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618900906185b3565b1561894057505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261899f906185b3565b80618a045750604080518082018252601181527f4c47504c2d322e312d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618a04906185b3565b15618a4457505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618aa3906185b3565b80618b085750604080518082018252601181527f4c47504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618b08906185b3565b15618b4857505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618ba7906185b3565b15618be757505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618c46906185b3565b15618c8657505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618ce5906185b3565b15618d2557505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618d84906185b3565b15618dc457505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e300000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618e23906185b3565b15618e6357505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618ec2906185b3565b80618f275750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618f27906185b3565b15618f6757505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e3100000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618fc6906185b3565b1561900657505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b604080840151845191516160b2929060200161b7c4565b60608060005b84518110156190a8578185828151811061903f5761903f61b096565b602002602001015160405160200161905892919061ac0f565b604051602081830303815290604052915060018551619077919061a9cc565b81146190a0578160405160200161908e919061b92d565b60405160208183030381529060405291505b600101619023565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816190c157905050905083816000815181106190ec576190ec61b096565b60200260200101819052506040518060400160405280600281526020017f2d63000000000000000000000000000000000000000000000000000000000000815250816001815181106191405761914061b096565b6020026020010181905250818160028151811061915f5761915f61b096565b6020908102919091010152949350505050565b60208083015183518351928401516000936191909291849190619b69565b14159392505050565b604080518082019091526000808252602082015260006191cb8460000151856020015185600001518660200151619c7a565b90508360200151816191dd919061a9cc565b845185906191ec90839061a9cc565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015619220575081615ee6565b60208083015190840151600191146192475750815160208481015190840151829020919020145b80156192785782518451859061925e90839061a9cc565b905250825160208501805161927490839061a9df565b9052505b509192915050565b604080518082019091526000808252602082015261929f838383619d9a565b5092915050565b60606000826000015167ffffffffffffffff8111156192c7576192c761a714565b6040519080825280601f01601f1916602001820160405280156192f1576020820181803683370190505b509050600060208201905061929f8185602001518660000151619e45565b6060600061931b6162d8565b6040805160ff808252612000820190925291925060009190816020015b606081526020019060019003908161933857905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806193939061b203565b935060ff16815181106193a8576193a861b096565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e33000000000000000000000000000000000000000000000000008152506040516020016193f9919061b96e565b6040516020818303038152906040528282806194149061b203565b935060ff16815181106194295761942961b096565b60200260200101819052506040518060400160405280600881526020017f76616c69646174650000000000000000000000000000000000000000000000008152508282806194769061b203565b935060ff168151811061948b5761948b61b096565b6020026020010181905250826040516020016194a7919061b131565b6040516020818303038152906040528282806194c29061b203565b935060ff16815181106194d7576194d761b096565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e7472616374000000000000000000000000000000000000000000008152508282806195249061b203565b935060ff16815181106195395761953961b096565b602002602001018190525061954e8784619ebf565b82826195598161b203565b935060ff168151811061956e5761956e61b096565b60209081029190910101528551511561961a5760408051808201909152600b81527f2d2d7265666572656e6365000000000000000000000000000000000000000000602082015282826195c08161b203565b935060ff16815181106195d5576195d561b096565b60200260200101819052506195ee866000015184619ebf565b82826195f98161b203565b935060ff168151811061960e5761960e61b096565b60200260200101819052505b8560800151156196885760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b0000000000000000602082015282826196638161b203565b935060ff16815181106196785761967861b096565b60200260200101819052506196ee565b84156196ee5760408051808201909152601281527f2d2d726571756972655265666572656e63650000000000000000000000000000602082015282826196cd8161b203565b935060ff16815181106196e2576196e261b096565b60200260200101819052505b6040860151511561978a5760408051808201909152600d81527f2d2d756e73616665416c6c6f7700000000000000000000000000000000000000602082015282826197388161b203565b935060ff168151811061974d5761974d61b096565b602002602001018190525085604001518282806197699061b203565b935060ff168151811061977e5761977e61b096565b60200260200101819052505b8560600151156197f45760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d6573000000000000000000000000602082015282826197d38161b203565b935060ff16815181106197e8576197e861b096565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156198125761981261a714565b60405190808252806020026020018201604052801561984557816020015b60608152602001906001900390816198305790505b50905060005b8260ff168160ff16101561989e57838160ff168151811061986e5761986e61b096565b6020026020010151828260ff168151811061988b5761988b61b096565b602090810291909101015260010161984b565b50979650505050505050565b60408051808201909152600080825260208201528151835110156198cf575081615ee6565b815183516020850151600092916198e59161a9df565b6198ef919061a9cc565b60208401519091506001908214619910575082516020840151819020908220145b801561992b5783518551869061992790839061a9cc565b9052505b50929392505050565b60008082600001516199588560000151866020015186600001518760200151619c7a565b619962919061a9df565b90505b83516020850151619976919061a9df565b811161929f57816199868161b9b3565b92505082600001516199bd8560200151836199a1919061a9cc565b86516199ad919061a9cc565b8386600001518760200151619c7a565b6199c7919061a9df565b9050619965565b606060006199dc8484619934565b6199e790600161a9df565b67ffffffffffffffff8111156199ff576199ff61a714565b604051908082528060200260200182016040528015619a3257816020015b6060815260200190600190039081619a1d5790505b50905060005b8151811015617ca757619a4e617ec98686619280565b828281518110619a6057619a6061b096565b6020908102919091010152600101619a38565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310619abc577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310619ae8576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310619b0657662386f26fc10000830492506010015b6305f5e1008310619b1e576305f5e100830492506008015b6127108310619b3257612710830492506004015b60648310619b44576064830492506002015b600a8310615ee65760010192915050565b6000619b618383619eff565b159392505050565b600080858411619c705760208411619c1c5760008415619bb4576001619b9086602061a9cc565b619b9b90600861b9cd565b619ba690600261bacb565b619bb0919061a9cc565b1990505b8351811685619bc3898961a9df565b619bcd919061a9cc565b805190935082165b818114619c0757878411619bef57879450505050506178d8565b83619bf98161bad7565b945050828451169050619bd5565b619c11878561a9df565b9450505050506178d8565b838320619c29858861a9cc565b619c33908761a9df565b91505b858210619c6e57848220808203619c5b57619c51868461a9df565b93505050506178d8565b619c6660018461a9cc565b925050619c36565b505b5092949350505050565b60008381868511619d855760208511619d345760008515619cc6576001619ca287602061a9cc565b619cad90600861b9cd565b619cb890600261bacb565b619cc2919061a9cc565b1990505b84518116600087619cd78b8b61a9df565b619ce1919061a9cc565b855190915083165b828114619d2657818610619d0e57619d018b8b61a9df565b96505050505050506178d8565b85619d188161b9b3565b965050838651169050619ce9565b8596505050505050506178d8565b508383206000905b619d46868961a9cc565b8211619d8357858320808203619d6257839450505050506178d8565b619d6d60018561a9df565b9350508180619d7b9061b9b3565b925050619d3c565b505b619d8f878761a9df565b979650505050505050565b60408051808201909152600080825260208201526000619dcc8560000151866020015186600001518760200151619c7a565b602080870180519186019190915251909150619de8908261a9cc565b835284516020860151619dfb919061a9df565b8103619e0a5760008552619e3c565b83518351619e18919061a9df565b85518690619e2790839061a9cc565b9052508351619e36908261a9df565b60208601525b50909392505050565b60208110619e7d5781518352619e5c60208461a9df565b9250619e6960208361a9df565b9150619e7660208261a9cc565b9050619e45565b6000198115619eac576001619e9383602061a9cc565b619e9f9061010061bacb565b619ea9919061a9cc565b90505b9151835183169219169190911790915250565b60606000619ecd84846163ab565b8051602080830151604051939450619ee79390910161baee565b60405160208183030381529060405291505092915050565b8151815160009190811115619f12575081515b6020808501519084015160005b83811015619fcb5782518251808214619f9b576000196020871015619f7a57600184619f4c89602061a9cc565b619f56919061a9df565b619f6190600861b9cd565b619f6c90600261bacb565b619f76919061a9cc565b1990505b8181168382168181039114619f98579750615ee69650505050505050565b50505b619fa660208661a9df565b9450619fb360208561a9df565b93505050602081619fc4919061a9df565b9050619f1f565b5084518651616a59919061bb46565b610b678061bb6783390190565b61063a8061c6ce83390190565b61106f8061cd0883390190565b6120728061dd7783390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161a05161a056565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161a0516040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b8181101561a1085783516001600160a01b031683526020938401939092019160010161a0e1565b509095945050505050565b60005b8381101561a12e57818101518382015260200161a116565b50506000910152565b6000815180845261a14f81602086016020860161a113565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a25f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b8181101561a245577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261a22f84865161a137565b602095860195909450929092019160010161a1f5565b50919750505060209485019492909201915060010161a18b565b50929695505050505050565b600081518084526020840193506020830160005b8281101561a2bf5781517fffffffff000000000000000000000000000000000000000000000000000000001686526020958601959091019060010161a27f565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a25f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516040875261a335604088018261a137565b905060208201519150868103602088015261a350818361a26b565b96505050602093840193919091019060010161a2f1565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a25f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845261a3c985835161a137565b9450602093840193919091019060010161a38f565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a25f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b038151168652602081015190506040602087015261a45f604087018261a26b565b955050602093840193919091019060010161a406565b600181811c9082168061a48957607f821691505b6020821081036181a4577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6001600160a01b0381541682526001600160a01b03600182015416602083015260028101546040830152600060038201608060608501526000815461a5068161a475565b806080880152600182166000811461a525576001811461a55f5761a593565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831660a089015260a082151560051b890101935061a593565b84600052602060002060005b8381101561a58a5781548a820160a0015260019091019060200161a56b565b890160a0019450505b50919695505050505050565b602081526000615fdf602083018461a4c2565b6001600160a01b03831681526040602082015260006178d8604083018461a4c2565b60006020828403121561a5e657600080fd5b81516001600160a01b0381168114615fdf57600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff881660408301528660608301526003861061a6b7577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a083015261a6d860c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b60006020828403121561a70457600080fd5b81518015158114615fdf57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b601f82111561124457806000526020600020601f840160051c8101602085101561a76a5750805b601f840160051c820191505b81811015612a5c576000815560010161a776565b815167ffffffffffffffff81111561a7a45761a7a461a714565b61a7b88161a7b2845461a475565b8461a743565b6020601f82116001811461a7ec576000831561a7d45750848201515b600019600385901b1c1916600184901b178455612a5c565b600084815260208120601f198516915b8281101561a81c578785015182556020948501946001909201910161a7fc565b508482101561a83a5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b602081526000615fdf602083018461a137565b60006020828403121561a86e57600080fd5b5051919050565b602081526000615ee660208301600581527f68656c6c6f000000000000000000000000000000000000000000000000000000602082015260400190565b60a08152600061a8c560a083018761a137565b6001600160a01b03861660208401528460408401526001600160a01b03841660608401528281036080840152619d8f81600581527f68656c6c6f000000000000000000000000000000000000000000000000000000602082015260400190565b600081516060845261a93a606085018261a137565b90506001600160a01b036020840151166020850152604083015160408501528091505092915050565b60808152600061a976608083018761a925565b8560208401526001600160a01b03851660408401528281036060840152619d8f818561a137565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115615ee657615ee661a99d565b80820180821115615ee657615ee661a99d565b60a08152600061aa0560a083018861a925565b6001600160a01b03871660208401528560408401526001600160a01b0385166060840152828103608084015261aa3b818561a137565b98975050505050505050565b6001600160a01b03851681528360208201526001600160a01b0383166040820152608060608201526000616a59608083018461a4c2565b6001600160a01b03831681526040602082015260006178d8604083018461a137565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161aad881601a85016020880161a113565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161ab1581601c84016020880161a113565b01601c01949350505050565b6040516060810167ffffffffffffffff8111828210171561ab445761ab4461a714565b60405290565b60008067ffffffffffffffff84111561ab655761ab6561a714565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561ab945761ab9461a714565b60405283815290508082840185101561abac57600080fd5b617ca784602083018561a113565b600082601f83011261abcb57600080fd5b615fdf8383516020850161ab4a565b60006020828403121561abec57600080fd5b815167ffffffffffffffff81111561ac0357600080fd5b615ee28482850161abba565b6000835161ac2181846020880161a113565b83519083019061ac3581836020880161a113565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161ac7681601a85016020880161a113565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161acb381603384016020880161a113565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000615fdf608083018461a137565b60006020828403121561ad4257600080fd5b815167ffffffffffffffff81111561ad5957600080fd5b8201601f8101841361ad6a57600080fd5b615ee28482516020840161ab4a565b6000855161ad8b818460208a0161a113565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161adc5816001840160208a0161a113565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161ae0381600284016020890161a113565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161ae4581600284016020880161a113565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061ae90604083018461a137565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161af0781601f85016020870161a113565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061af74604083018461a137565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061afc6604083018461a137565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161b03d81601485016020870161a113565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061b084604083018561a137565b8281036020840152615fdb818561a137565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161b0fd81600185016020870161a113565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161b14381846020870161a113565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161b1f681604b85016020870161a113565b91909101604b0192915050565b600060ff821660ff810361b2195761b21961a99d565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161b28081602985016020870161a113565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000615fdf608083018461a137565b60006020828403121561b2e657600080fd5b815167ffffffffffffffff81111561b2fd57600080fd5b82016060818503121561b30f57600080fd5b61b31761ab21565b81518060030b811461b32857600080fd5b8152602082015167ffffffffffffffff81111561b34457600080fd5b61b3508682850161abba565b602083015250604082015167ffffffffffffffff81111561b37057600080fd5b61b37c8682850161abba565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161b3e881602185016020870161a113565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161b5d481602185016020880161a113565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161b61181602e84016020880161a113565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161b28081602985016020870161a113565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161b6d981602285016020870161a113565b9190910160220192915050565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161b71e81600e85016020870161a113565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161b7fc81601885016020880161a113565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161b83981601c84016020880161a113565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161b93f81846020870161a113565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161b9a681601c85016020870161a113565b91909101601c0192915050565b6000600019820361b9c65761b9c661a99d565b5060010190565b8082028115828204841417615ee657615ee661a99d565b6001815b600184111561ba1f5780850481111561ba035761ba0361a99d565b600184161561ba1157908102905b60019390931c92800261b9e8565b935093915050565b60008261ba3657506001615ee6565b8161ba4357506000615ee6565b816001811461ba59576002811461ba635761ba7f565b6001915050615ee6565b60ff84111561ba745761ba7461a99d565b50506001821b615ee6565b5060208310610133831016604e8410600b841016171561baa2575081810a615ee6565b61baaf600019848461b9e4565b806000190482111561bac35761bac361a99d565b029392505050565b6000615fdf838361ba27565b60008161bae65761bae661a99d565b506000190190565b6000835161bb0081846020880161a113565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161bb3a81600184016020880161a113565b01600101949350505050565b818103600083128015838313168383128216171561929f5761929f61a99d56fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea2646970667358221220b09c98b42d894b1b92a74ecc691587bcc17012fff7ef3bcfa6fe755f9b6255a564736f6c634300081a00336080604052348015600f57600080fd5b5061061b8061001f6000396000f3fe60806040526004361061002a5760003560e01c80635bcfd61614610033578063c9028a361461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e366004610151565b610073565b34801561005f57600080fd5b5061003161006e36600461020e565b6100ee565b6060811561008a576100878284018461027f565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610375565b6100c560408a0160208b016103e1565b896040013533866040516100de96959493929190610445565b60405180910390a1505050505050565b7fd75bb509c8f32a725aac99ac5c4541060dbfb889a3aca8314d6f00395618c4c48160405161011d9190610507565b60405180910390a150565b803573ffffffffffffffffffffffffffffffffffffffff8116811461014c57600080fd5b919050565b60008060008060006080868803121561016957600080fd5b853567ffffffffffffffff81111561018057600080fd5b86016060818903121561019257600080fd5b94506101a060208701610128565b935060408601359250606086013567ffffffffffffffff8111156101c357600080fd5b8601601f810188136101d457600080fd5b803567ffffffffffffffff8111156101eb57600080fd5b8860208284010111156101fd57600080fd5b959894975092955050506020019190565b60006020828403121561022057600080fd5b813567ffffffffffffffff81111561023757600080fd5b82016080818503121561024957600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561029157600080fd5b813567ffffffffffffffff8111156102a857600080fd5b8201601f810184136102b957600080fd5b803567ffffffffffffffff8111156102d3576102d3610250565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033f5761033f610250565b60405281815282820160200186101561035757600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126103aa57600080fd5b83018035915067ffffffffffffffff8211156103c557600080fd5b6020019150368190038213156103da57600080fd5b9250929050565b6000602082840312156103f357600080fd5b61024982610128565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60a08152600061045960a08301888a6103fc565b73ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff851660608401528281036080840152835180825260005b818110156104c3576020818701810151848301820152016104a7565b5060006020828401015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011683010192505050979650505050505050565b6020815273ffffffffffffffffffffffffffffffffffffffff61052983610128565b16602082015273ffffffffffffffffffffffffffffffffffffffff61055060208401610128565b166040820152600080604084013590508060608401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261059c57600080fd5b830160208101903567ffffffffffffffff8111156105b957600080fd5b8036038213156105c857600080fd5b6080808501526105dc60a0850182846103fc565b9594505050505056fea264697066735822122061cdfae648cbae7594990dcb3c026ac50f91568f9bdbabb7185e35e94b64bb7d64736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea2646970667358221220b13ccf97234dc9b7f658234f9bf37a57d08f465bb99c431b865174e7a399a30764736f6c634300081a003360c060405234801561001057600080fd5b5060405161207238038061207283398101604081905261002f916101f0565b6001600160a01b038216158061004c57506001600160a01b038116155b1561006a5760405163d92e233d60e01b815260040160405180910390fd5b60066100768982610342565b5060076100838882610342565b506008805460ff191660ff881617905560808590528360028111156100aa576100aa610400565b60a08160028111156100be576100be610400565b905250600192909255600080546001600160a01b039283166001600160a01b0319909116179055600880549190921661010002610100600160a81b0319909116179055506104169350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261013357600080fd5b81516001600160401b0381111561014c5761014c61010c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561017a5761017a61010c565b60405281815283820160200185101561019257600080fd5b60005b828110156101b157602081860181015183830182015201610195565b506000918101602001919091529392505050565b8051600381106101d457600080fd5b919050565b80516001600160a01b03811681146101d457600080fd5b600080600080600080600080610100898b03121561020d57600080fd5b88516001600160401b0381111561022357600080fd5b61022f8b828c01610122565b60208b015190995090506001600160401b0381111561024d57600080fd5b6102598b828c01610122565b975050604089015160ff8116811461027057600080fd5b60608a0151909650945061028660808a016101c5565b60a08a0151909450925061029c60c08a016101d9565b91506102aa60e08a016101d9565b90509295985092959890939650565b600181811c908216806102cd57607f821691505b6020821081036102ed57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561033d57806000526020600020601f840160051c8101602085101561031a5750805b601f840160051c820191505b8181101561033a5760008155600101610326565b50505b505050565b81516001600160401b0381111561035b5761035b61010c565b61036f8161036984546102b9565b846102f3565b6020601f8211600181146103a3576000831561038b5750848201515b600019600385901b1c1916600184901b17845561033a565b600084815260208120601f198516915b828110156103d357878501518255602094850194600190920191016103b3565b50848210156103f15786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a051611c1b61045760003960006103440152600081816102f001528181610bdc01528181610ce201528181610efe01526110040152611c1b6000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c806395d89b41116100f9578063ccc7759911610097578063eddeb12311610071578063eddeb12314610461578063f2441b3214610474578063f687d12a14610494578063fc5fecd5146104a757600080fd5b8063ccc77599146103d4578063d9eeebed146103e7578063dd62ed3e1461041b57600080fd5b8063b84c8246116100d3578063b84c824614610386578063c47f00271461039b578063c7012626146103ae578063c835d7cc146103c157600080fd5b806395d89b4114610337578063a3413d031461033f578063a9059cbb1461037357600080fd5b80633ce4a5bc116101665780634d8943bb116101405780634d8943bb146102ac57806370a08231146102b557806385e1f4d0146102eb5780638b851b951461031257600080fd5b80633ce4a5bc1461024657806342966c681461028657806347e7ef241461029957600080fd5b806318160ddd1161019757806318160ddd1461021657806323b872dd1461021e578063313ce5671461023157600080fd5b806306fdde03146101be578063091d2788146101dc578063095ea7b3146101f3575b600080fd5b6101c66104ba565b6040516101d39190611648565b60405180910390f35b6101e560015481565b6040519081526020016101d3565b610206610201366004611687565b61054c565b60405190151581526020016101d3565b6005546101e5565b61020661022c3660046116b3565b610563565b60085460405160ff90911681526020016101d3565b61026173735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d3565b6102066102943660046116f4565b6105fa565b6102066102a7366004611687565b61060e565b6101e560025481565b6101e56102c336600461170d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6101e57f000000000000000000000000000000000000000000000000000000000000000081565b60085461026190610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6101c6610767565b6103667f000000000000000000000000000000000000000000000000000000000000000081565b6040516101d3919061172a565b610206610381366004611687565b610776565b610399610394366004611832565b610783565b005b6103996103a9366004611832565b6107e0565b6102066103bc366004611883565b610839565b6103996103cf36600461170d565b610988565b6103996103e236600461170d565b610a9c565b6103ef610bb0565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101d3565b6101e56104293660046118dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205490565b61039961046f3660046116f4565b610dce565b6000546102619073ffffffffffffffffffffffffffffffffffffffff1681565b6103996104a23660046116f4565b610e50565b6103ef6104b53660046116f4565b610ed2565b6060600680546104c990611915565b80601f01602080910402602001604051908101604052809291908181526020018280546104f590611915565b80156105425780601f1061051757610100808354040283529160200191610542565b820191906000526020600020905b81548152906001019060200180831161052557829003601f168201915b5050505050905090565b60006105593384846110ee565b5060015b92915050565b60006105708484846111f7565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460209081526040808320338452909152902054828110156105db576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105ef85336105ea8685611997565b6110ee565b506001949350505050565b600061060633836113b2565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab1480159061064c575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156106755750600854610100900473ffffffffffffffffffffffffffffffffffffffff163314155b156106ac576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106b683836114f4565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526107569186906119aa565b60405180910390a250600192915050565b6060600780546104c990611915565b60006105593384846111f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab146107d0576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60076107dc8282611a1b565b5050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461082d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60066107dc8282611a1b565b6000806000610846610bb0565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156108d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fc9190611b34565b610932576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61093c33856113b2565b60025460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161097591899189918791611b56565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146109d5576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a22576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610ae9576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610b36576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c679190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610cb6576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d699190611ba2565b905080600003610da5576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060025460015483610db89190611bbb565b610dc29190611bd2565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e1b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610a91565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e9d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610f65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f899190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610fd8576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015611067573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108b9190611ba2565b9050806000036110c7576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000906110d78784611bbb565b6110e19190611bd2565b9296929550919350505050565b73ffffffffffffffffffffffffffffffffffffffff831661113b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611188576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611244576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611291576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040902054818110156112f1576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112fb8282611997565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260036020526040808220939093559085168152908120805484929061133e908490611bd2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113a491815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff82166113ff576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260409020548181101561145f576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114698282611997565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260036020526040812091909155600580548492906114a4908490611997565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016111ea565b73ffffffffffffffffffffffffffffffffffffffff8216611541576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008282546115539190611bd2565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805483929061158d908490611bd2565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561160a576020818501810151868301820152016115ee565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061165b60208301846115e4565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461168457600080fd5b50565b6000806040838503121561169a57600080fd5b82356116a581611662565b946020939093013593505050565b6000806000606084860312156116c857600080fd5b83356116d381611662565b925060208401356116e381611662565b929592945050506040919091013590565b60006020828403121561170657600080fd5b5035919050565b60006020828403121561171f57600080fd5b813561165b81611662565b6020810160038310611765577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff8411156117b5576117b561176b565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff821117156118025761180261176b565b60405283815290508082840185101561181a57600080fd5b83836020830137600060208583010152509392505050565b60006020828403121561184457600080fd5b813567ffffffffffffffff81111561185b57600080fd5b8201601f8101841361186c57600080fd5b61187b8482356020840161179a565b949350505050565b6000806040838503121561189657600080fd5b823567ffffffffffffffff8111156118ad57600080fd5b8301601f810185136118be57600080fd5b6118cd8582356020840161179a565b95602094909401359450505050565b600080604083850312156118ef57600080fd5b82356118fa81611662565b9150602083013561190a81611662565b809150509250929050565b600181811c9082168061192957607f821691505b602082108103611962577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561055d5761055d611968565b6040815260006119bd60408301856115e4565b90508260208301529392505050565b601f821115611a1657806000526020600020601f840160051c810160208510156119f35750805b601f840160051c820191505b81811015611a1357600081556001016119ff565b50505b505050565b815167ffffffffffffffff811115611a3557611a3561176b565b611a4981611a438454611915565b846119cc565b6020601f821160018114611a9b5760008315611a655750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611a13565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015611ae95787850151825560209485019460019092019101611ac9565b5084821015611b2557868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b600060208284031215611b4657600080fd5b8151801515811461165b57600080fd5b608081526000611b6960808301876115e4565b6020830195909552506040810192909252606090910152919050565b600060208284031215611b9757600080fd5b815161165b81611662565b600060208284031215611bb457600080fd5b5051919050565b808202811582820484141761055d5761055d611968565b8082018082111561055d5761055d61196856fea2646970667358221220d6ba834f25782689ed13bffb6ac9ff2c8d3b5342c94a515aea8197a76070ad3f64736f6c634300081a0033a264697066735822122035677b8179bf189213253751bb51fd5691fe74f51def445b2f61f492a2581f0864736f6c634300081a0033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061fc598061003c6000396000f3fe608060405234801561001057600080fd5b506004361061034c5760003560e01c806385226c81116101bd578063c8814d2e116100f9578063eab7674e116100a2578063ef2b53941161007c578063ef2b539414610542578063f1d98f1b1461054a578063fa7626d414610552578063fb339a1c1461055f57600080fd5b8063eab7674e1461052a578063eb78bd7d14610532578063ec294d9f1461053a57600080fd5b8063e09bc659116100d3578063e09bc659146104e5578063e20c9f71146104ed578063e63ab1e9146104f557600080fd5b8063c8814d2e146104cd578063ca26929c146104d5578063cf2c3d1d146104dd57600080fd5b8063996b767511610166578063b5508aa911610140578063b5508aa9146104a5578063b936be8c14610443578063ba414fa6146104ad578063c35cb5e4146104c557600080fd5b8063996b76751461048d5780639c9acd5d14610495578063b0464fdc1461049d57600080fd5b8063916a17c611610197578063916a17c61461047057806396d9d8761461048557806397f7661f1461044357600080fd5b806385226c811461044b578063884660a314610460578063890a2d671461046857600080fd5b80633e5e3c231161028c5780635cec7db5116102355780636efa04b51161020f5780636efa04b51461042b5780637cec29b0146104335780637f924c4e1461043b578063828d267c1461044357600080fd5b80635cec7db5146104065780636163f8ef1461040e57806366d9a9a01461041657600080fd5b806351336fb01161026657806351336fb0146103f657806358c9987f146103fe5780635b4c90e1146103a157600080fd5b80633e5e3c23146103de5780633f7286f4146103e657806348f4fd07146103ee57600080fd5b806327820625116102f95780632ade3880116102d35780632ade3880146103b1578063339bd828146103c65780633626c616146103ce5780633ab5b199146103d657600080fd5b806327820625146103995780632948df41146103a15780632acb21b4146103a957600080fd5b80631c785a141161032a5780631c785a141461036b5780631ed7831c146103735780632468bc0f1461039157600080fd5b8063084fafab146103515780630a9254e41461035b57806314b7a6da14610363575b600080fd5b610359610567565b005b61035961073d565b610359611241565b610359611391565b61037b611ca8565b6040516103889190619f02565b60405180910390f35b610359611d0a565b6103596121d5565b61035961229d565b610359612486565b6103b9612645565b6040516103889190619f9e565b610359612787565b6103596128d3565b610359612a5b565b61037b612c0c565b61037b612c6c565b610359612ccc565b610359612e17565b610359612f62565b610359613117565b610359613305565b61041e613453565b604051610388919061a104565b6103596135d5565b610359613979565b610359613b64565b610359613b9d565b610453613d49565b604051610388919061a1a2565b610359613e19565b6103596140f8565b6104786142b3565b604051610388919061a219565b6103596143ae565b610359614501565b610359614655565b6104786147a5565b6104536148a0565b6104b5614970565b6040519015158152602001610388565b610359614a44565b610359614bff565b610359614d41565b610359614fc4565b610359615182565b61037b61533b565b61051c7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b604051908152602001610388565b61035961539b565b6103596154e9565b6103596156a7565b610359615856565b610359615a07565b601f546104b59060ff1681565b610359615b55565b602480546040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190529281018390526044810183905260648101929092526001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156105f657600080fd5b505af115801561060a573d6000803e3d6000fd5b505050507fd75bb509c8f32a725aac99ac5c4541060dbfb889a3aca8314d6f00395618c4c4602c60405161063e919061a3da565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b1580156106a057600080fd5b505af11580156106b4573d6000803e3d6000fd5b50506020546024546040517f184b07930000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063184b079393506107099290911690602c9060040161a3ed565b600060405180830381600087803b15801561072357600080fd5b505af1158015610737573d6000803e3d6000fd5b50505050565b602580547fffffffffffffffffffffffff000000000000000000000000000000000000000090811630179091556026805490911661123417905560405161078390619e15565b604051809103906000f08015801561079f573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600f81527f476174657761795a45564d2e736f6c000000000000000000000000000000000060208201526025549151602481019390935292166044820152610883919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc95500000000000000000000000000000000000000000000000000000000179052615d08565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b039384168102919091179182905560208054919092049092167fffffffffffffffffffffffff000000000000000000000000000000000000000090921682178155604080517f2722feee0000000000000000000000000000000000000000000000000000000081529051632722feee926004808401939192918290030181865afa158015610945573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610969919061a40f565b602780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516109ad90619e22565b604051809103906000f0801580156109c9573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161781556027546040517f06447d5600000000000000000000000000000000000000000000000000000000815292166004830152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d569101600060405180830381600087803b158015610a6557600080fd5b505af1158015610a79573d6000803e3d6000fd5b505050506000806000604051610a8e90619e2f565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610aca573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602054604051601293600193849360009391921690610b2090619e3c565b610b2f9695949392919061a438565b604051809103906000f080158015610b4b573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556023546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b158015610be257600080fd5b505af1158015610bf6573d6000803e3d6000fd5b50506023546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b158015610c6057600080fd5b505af1158015610c74573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610cf457600080fd5b505af1158015610d08573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610d5d57600080fd5b505af1158015610d71573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610de5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e09919061a52d565b506021546025546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116906347e7ef24906044016020604051808303816000875af1158015610e7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9e919061a52d565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610efd57600080fd5b505af1158015610f11573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610f8757600080fd5b505af1158015610f9b573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116925063095ea7b391506044016020604051808303816000875af115801561100f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611033919061a52d565b50602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b15801561108557600080fd5b505af1158015611099573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af115801561110d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611131919061a52d565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561119057600080fd5b505af11580156111a4573d6000803e3d6000fd5b5050604080516080810182526025546001600160a01b0390811682526000602080840182815260018587019081528651928301909652918152606084018190528351602c80549185167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161781559251602d8054919095169116179092559251602e55909350909150602f9061123c908261a5c5565b505050565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561129a57600080fd5b505af11580156112ae573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561131e57600080fd5b505af1158015611332573d6000803e3d6000fd5b50506020546021546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260016024820152600060448201529116925063f45346dc9150606401610709565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156113ea57600080fd5b505af11580156113fe573d6000803e3d6000fd5b5050602754604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506114e9919060040161a684565b600060405180830381600087803b15801561150357600080fd5b505af1158015611517573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561156b57600080fd5b505af115801561157f573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156115dc57600080fd5b505af11580156115f0573d6000803e3d6000fd5b5050602754604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506116db919060040161a684565b600060405180830381600087803b1580156116f557600080fd5b505af1158015611709573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561175d57600080fd5b505af1158015611771573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156117ce57600080fd5b505af11580156117e2573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561183657600080fd5b505af115801561184a573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd93c066500000000000000000000000000000000000000000000000000000000600482015260019250737109709ecfa91a80626ff3989d68f67f5b1dd12d915063c31eb0e090602401600060405180830381600087803b1580156118bd57600080fd5b505af11580156118d1573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561192e57600080fd5b505af1158015611942573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810187905290821660448201529116925063f45346dc9150606401600060405180830381600087803b1580156119ba57600080fd5b505af11580156119ce573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015611a2b57600080fd5b505af1158015611a3f573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611a9357600080fd5b505af1158015611aa7573d6000803e3d6000fd5b50506021546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a08231906024015b602060405180830381865afa158015611afb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b1f919061a697565b9050611b2c600082615d27565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611b8557600080fd5b505af1158015611b99573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810188905290821660448201529116925063f45346dc9150606401600060405180830381600087803b158015611c1157600080fd5b505af1158015611c25573d6000803e3d6000fd5b50506021546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611c78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9c919061a697565b905061123c8382615d27565b60606016805480602002602001604051908101604052809291908181526020018280548015611d0057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611ce2575b5050505050905090565b6022546027546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611d5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d7f919061a697565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015611dd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df5919061a697565b6024546040519192506001600160a01b03163190600090611e189060200161a6b0565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611f0657600080fd5b505af1158015611f1a573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e9450611f7593506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054611fa5936001600160a01b03928316928c92169061a6ed565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561200657600080fd5b505af115801561201a573d6000803e3d6000fd5b50506020546024546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a9593506120719286928c92911690889060040161a79e565b600060405180830381600087803b15801561208b57600080fd5b505af115801561209f573d6000803e3d6000fd5b50506022546027546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156120f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612116919061a697565b905061212b612125888861a807565b82615d27565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801561217c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121a0919061a697565b90506121ac8682615d27565b6121cb6121b9898761a81a565b6024546001600160a01b031631615d27565b5050505050505050565b604051630618f58760e51b81527f42c0407e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561224157600080fd5b505af1158015612255573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401610686565b60006040516020016122ae9061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b15801561235c57600080fd5b505af1158015612370573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156123e057600080fd5b505af11580156123f4573d6000803e3d6000fd5b50506020546024546040517fbcf7f32b0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063bcf7f32b935061245092869260009260019290911690899060040161a82d565b600060405180830381600087803b15801561246a57600080fd5b505af115801561247e573d6000803e3d6000fd5b505050505050565b60006040516020016124979061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f42c0407e0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561256157600080fd5b505af1158015612575573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015b600060405180830381600087803b1580156125d357600080fd5b505af11580156125e7573d6000803e3d6000fd5b50506020546021546024546040517fbcf7f32b0000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063bcf7f32b9450612450938793811692600192911690899060040161a82d565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561277e57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156127675783829060005260206000200180546126da9061a2b0565b80601f01602080910402602001604051908101604052809291908181526020018280546127069061a2b0565b80156127535780601f1061272857610100808354040283529160200191612753565b820191906000526020600020905b81548152906001019060200180831161273657829003601f168201915b5050505050815260200190600101906126bb565b505050508152505081526020019060010190612669565b50505050905090565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156127e057600080fd5b505af11580156127f4573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561286457600080fd5b505af1158015612878573d6000803e3d6000fd5b50506020546021546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450639d4ba46593506107099290911690600190600090602c9060040161a882565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561292f57600080fd5b505af1158015612943573d6000803e3d6000fd5b5050604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156129b357600080fd5b505af11580156129c7573d6000803e3d6000fd5b50506020546021546027546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810187905290821660448201529116925063f45346dc91506064015b600060405180830381600087803b158015612a4057600080fd5b505af1158015612a54573d6000803e3d6000fd5b5050505050565b6000604051602001612a6c9061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b158015612b1a57600080fd5b505af1158015612b2e573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015612b9e57600080fd5b505af1158015612bb2573d6000803e3d6000fd5b50506020546021546040517fbcf7f32b0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063bcf7f32b93506124509286921690600190600090899060040161a82d565b60606018805480602002602001604051908101604052809291908181526020018280548015611d00576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611ce2575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015611d00576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611ce2575050505050905090565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612d2557600080fd5b505af1158015612d39573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015612da957600080fd5b505af1158015612dbd573d6000803e3d6000fd5b50506020546024546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450639d4ba465935061070992600092600192911690602c9060040161a882565b604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015612e8357600080fd5b505af1158015612e97573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015612ef457600080fd5b505af1158015612f08573d6000803e3d6000fd5b50506020546021546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450639d4ba465935061070992909116906001908590602c9060040161a882565b6000604051602001612f739061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b15801561302157600080fd5b505af1158015613035573d6000803e3d6000fd5b5050604051630618f58760e51b81527f5d67094f000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156130a557600080fd5b505af11580156130b9573d6000803e3d6000fd5b50506020546021546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca379450612450938793811692600092911690899060040161a82d565b60405160019060009061312c9060200161a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156131f657600080fd5b505af115801561320a573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561326757600080fd5b505af115801561327b573d6000803e3d6000fd5b50506020546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0390911692506321501a9591506132ce90849087908590889060040161a79e565b600060405180830381600087803b1580156132e857600080fd5b505af11580156132fc573d6000803e3d6000fd5b50505050505050565b604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561337157600080fd5b505af1158015613385573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156133e257600080fd5b505af11580156133f6573d6000803e3d6000fd5b50506020546021546027546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550639d4ba465945061070993928316926001921690602c9060040161a882565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561277e57838290600052602060002090600202016040518060400160405290816000820180546134aa9061a2b0565b80601f01602080910402602001604051908101604052809291908181526020018280546134d69061a2b0565b80156135235780601f106134f857610100808354040283529160200191613523565b820191906000526020600020905b81548152906001019060200180831161350657829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156135bd57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161356a5790505b50505050508152505081526020019060010190613477565b602154602480546040516370a0823160e01b81526001600160a01b03918216600482015260009391909116916370a082319101602060405180830381865afa158015613625573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613649919061a697565b9050613656600082615d27565b60006040516020016136679061a6b0565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561375557600080fd5b505af1158015613769573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e94506137c493506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526027546020546137f5936001600160a01b0392831692600192169061a6ed565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561385657600080fd5b505af115801561386a573d6000803e3d6000fd5b50506020546021546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca3794506138c8938793811692600192911690899060040161a82d565b600060405180830381600087803b1580156138e257600080fd5b505af11580156138f6573d6000803e3d6000fd5b5050602154602480546040516370a0823160e01b81526001600160a01b03918216600482015260009550921692506370a082319101602060405180830381865afa158015613948573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061396c919061a697565b9050610737600182615d27565b600060405160200161398a9061a6b0565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015613a7857600080fd5b505af1158015613a8c573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e9450613ae793506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054613b18936001600160a01b0392831692600192169061a6ed565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024016125b9565b6021546026546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401611ade565b6000604051602001613bae9061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b158015613c5c57600080fd5b505af1158015613c70573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015613ce057600080fd5b505af1158015613cf4573d6000803e3d6000fd5b50506020546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0390911692506321501a959150612450908490600190600090889060040161a79e565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101561277e578382906000526020600020018054613d8c9061a2b0565b80601f0160208091040260200160405190810160405280929190818152602001828054613db89061a2b0565b8015613e055780601f10613dda57610100808354040283529160200191613e05565b820191906000526020600020905b815481529060010190602001808311613de857829003601f168201915b505050505081526020019060010190613d6d565b602154602480546040516370a0823160e01b81526001600160a01b03918216600482015260009391909116916370a082319101602060405180830381865afa158015613e69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e8d919061a697565b9050613e9a600082615d27565b602480546040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190529281018390526044810183905260648101929092526001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015613f2957600080fd5b505af1158015613f3d573d6000803e3d6000fd5b505050507fd75bb509c8f32a725aac99ac5c4541060dbfb889a3aca8314d6f00395618c4c4602c604051613f71919061a3da565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613fd257600080fd5b505af1158015613fe6573d6000803e3d6000fd5b50506020546021546024546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550639d4ba465945061404393928316926001921690602c9060040161a882565b600060405180830381600087803b15801561405d57600080fd5b505af1158015614071573d6000803e3d6000fd5b5050602154602480546040516370a0823160e01b81526001600160a01b03918216600482015260009550921692506370a082319101602060405180830381865afa1580156140c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140e7919061a697565b90506140f4600182615d27565b5050565b60405160019060009061410d9060200161a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156141d757600080fd5b505af11580156141eb573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561424857600080fd5b505af115801561425c573d6000803e3d6000fd5b50506020546027546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a9593506132ce9286928992911690889060040161a79e565b6060601d805480602002602001604051908101604052809291908181526020016000905b8282101561277e5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561439657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116143435790505b505050505081525050815260200190600101906142d7565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561440a57600080fd5b505af115801561441e573d6000803e3d6000fd5b5050604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561448e57600080fd5b505af11580156144a2573d6000803e3d6000fd5b50506020546021546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101869052911660448201819052925063f45346dc9150606401612a26565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561455a57600080fd5b505af115801561456e573d6000803e3d6000fd5b5050604051630618f58760e51b81527f5d67094f000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156145de57600080fd5b505af11580156145f2573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526000602482015290821660448201529116925063f45346dc9150606401610709565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156146ae57600080fd5b505af11580156146c2573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561473257600080fd5b505af1158015614746573d6000803e3d6000fd5b50506020546026546040517ff45346dc00000000000000000000000000000000000000000000000000000000815260006004820152600160248201526001600160a01b0391821660448201529116925063f45346dc9150606401610709565b6060601c805480602002602001604051908101604052809291908181526020016000905b8282101561277e5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561488857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116148355790505b505050505081525050815260200190600101906147c9565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101561277e5783829060005260206000200180546148e39061a2b0565b80601f016020809104026020016040519081016040528092919081815260200182805461490f9061a2b0565b801561495c5780601f106149315761010080835404028352916020019161495c565b820191906000526020600020905b81548152906001019060200180831161493f57829003601f168201915b5050505050815260200190600101906148c4565b60085460009060ff1615614988575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015614a19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a3d919061a697565b1415905090565b604051600190600090614a599060200161a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f42c0407e0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b158015614b2357600080fd5b505af1158015614b37573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015614b9457600080fd5b505af1158015614ba8573d6000803e3d6000fd5b50506020546024546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a9593506132ce9286928992911690889060040161a79e565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614c5857600080fd5b505af1158015614c6c573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015614cdc57600080fd5b505af1158015614cf0573d6000803e3d6000fd5b50506020546040517f184b07930000000000000000000000000000000000000000000000000000000081526001600160a01b03909116925063184b0793915061070990600090602c9060040161a3ed565b6021546026546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015614d92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614db6919061a697565b9050614dc3600082615d27565b60255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614e1c57600080fd5b505af1158015614e30573d6000803e3d6000fd5b5050604051630618f58760e51b81527f42c0407e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015614ea057600080fd5b505af1158015614eb4573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810188905290821660448201529116925063f45346dc9150606401600060405180830381600087803b158015614f2c57600080fd5b505af1158015614f40573d6000803e3d6000fd5b50506021546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015614f93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614fb7919061a697565b905061123c600082615d27565b6000604051602001614fd59061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f42c0407e0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561509f57600080fd5b505af11580156150b3573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561511057600080fd5b505af1158015615124573d6000803e3d6000fd5b50506020546021546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca379450612450938793811692600192911690899060040161a82d565b60006040516020016151939061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561525d57600080fd5b505af1158015615271573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156152ce57600080fd5b505af11580156152e2573d6000803e3d6000fd5b50506020546021546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063c39aca37935061245092869216906001908690899060040161a82d565b60606015805480602002602001604051908101604052809291908181526020018280548015611d00576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611ce2575050505050905090565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156153f457600080fd5b505af1158015615408573d6000803e3d6000fd5b5050604051630618f58760e51b81527f5d67094f000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561547857600080fd5b505af115801561548c573d6000803e3d6000fd5b50506020546021546024546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550639d4ba465945061070993928316926000921690602c9060040161a882565b60006040516020016154fa9061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156155c457600080fd5b505af11580156155d8573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561563557600080fd5b505af1158015615649573d6000803e3d6000fd5b50506020546021546027546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca379450612450938793811692600192911690899060040161a82d565b60006040516020016156b89061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b15801561576657600080fd5b505af115801561577a573d6000803e3d6000fd5b5050604051630618f58760e51b81527f19c08f49000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156157ea57600080fd5b505af11580156157fe573d6000803e3d6000fd5b50506020546021546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a959350612450928692600092911690889060040161a79e565b60006040516020016158679061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b15801561591557600080fd5b505af1158015615929573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561599957600080fd5b505af11580156159ad573d6000803e3d6000fd5b50506020546021546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063c39aca3793506124509286921690600190600090899060040161a82d565b604051630618f58760e51b81527f42c0407e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015615a7357600080fd5b505af1158015615a87573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015615ae457600080fd5b505af1158015615af8573d6000803e3d6000fd5b50506020546021546024546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550639d4ba465945061070993928316926001921690602c9060040161a882565b6000604051602001615b669061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b158015615c1457600080fd5b505af1158015615c28573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015615c9857600080fd5b505af1158015615cac573d6000803e3d6000fd5b50506020546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063c39aca37935061245092869260009260019290911690899060040161a82d565b6000615d12619e49565b615d1d848483615da6565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b158015615d9257600080fd5b505afa15801561247e573d6000803e3d6000fd5b600080615db38584615e21565b9050615e166040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001615e0192919061a8b9565b60405160208183030381529060405285615e2d565b9150505b9392505050565b6000615e1a8383615e5b565b60c08101515160009015615e5157615e4a84848460c00151615e76565b9050615e1a565b615e4a848461601c565b6000615e678383616107565b615e1a83836020015184615e2d565b600080615e81616113565b90506000615e8f86836161e6565b90506000615ea6826060015183602001518561668c565b90506000615eb68383898961689e565b90506000615ec38261771b565b602081015181519192509060030b15615f3657898260400151604051602001615eed92919061a8db565b60408051601f19818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252615f2d9160040161a684565b60405180910390fd5b6000615f796040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a2000000000000000000000008152508360016178ea565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90615fcc90849060040161a684565b602060405180830381865afa158015615fe9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061600d919061a40f565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc9259061607190879060040161a684565b600060405180830381865afa15801561608e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526160b6919081019061aa15565b905060006160e482856040516020016160d092919061aa4a565b604051602081830303815290604052617aea565b90506001600160a01b038116615d1d578484604051602001615eed92919061aa79565b6140f482826000617afd565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c9061619a90849060040161ab24565b600060405180830381865afa1580156161b7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526161df919081019061ab6b565b9250505090565b6162186040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d90506162636040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b61626c85617c00565b6020820152600061627c86617fe5565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa1580156162be573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526162e6919081019061ab6b565b86838560200151604051602001616300949392919061abb4565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb119061635890859060040161a684565b600060405180830381865afa158015616375573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261639d919081019061ab6b565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f6906163e590849060040161acb8565b602060405180830381865afa158015616402573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616426919061a52d565b61643b5781604051602001615eed919061ad0a565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061648090849060040161ad9c565b600060405180830381865afa15801561649d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526164c5919081019061ab6b565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f69061650c90849060040161adee565b602060405180830381865afa158015616529573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061654d919061a52d565b156165e2576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061659790849060040161adee565b600060405180830381865afa1580156165b4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526165dc919081019061ab6b565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001616607919061ae40565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161663392919061aeac565b600060405180830381865afa158015616650573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616678919081019061ab6b565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816166a85790505090506040518060400160405280600481526020017f6772657000000000000000000000000000000000000000000000000000000000815250816000815181106167085761670861aed1565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061675c5761675c61aed1565b602002602001018190525084604051602001616778919061af00565b6040516020818303038152906040528160028151811061679a5761679a61aed1565b6020026020010181905250826040516020016167b6919061af6c565b604051602081830303815290604052816003815181106167d8576167d861aed1565b602002602001018190525060006167ee8261771b565b602080820151604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000818501908152825180840184526000808252908601528251808401909352905182529281019290925291925061687f9060408051808201825260008082526020918201528151808301909252845182528085019082015290618268565b6168945785604051602001615eed919061afad565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d90156168ee565b511590565b616a62578260200151156169aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401615f2d565b8260c0015115616a62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401615f2d565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081616a7b57905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616ad69061b03e565b935060ff1681518110616aeb57616aeb61aed1565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001616b3c919061b05d565b604051602081830303815290604052828280616b579061b03e565b935060ff1681518110616b6c57616b6c61aed1565b60200260200101819052506040518060400160405280600681526020017f6465706c6f790000000000000000000000000000000000000000000000000000815250828280616bb99061b03e565b935060ff1681518110616bce57616bce61aed1565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d65000000000000000000000000000000000000815250828280616c1b9061b03e565b935060ff1681518110616c3057616c3061aed1565b60200260200101819052508760200151828280616c4c9061b03e565b935060ff1681518110616c6157616c6161aed1565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e747261637450617468000000000000000000000000000000000000815250828280616cae9061b03e565b935060ff1681518110616cc357616cc361aed1565b602090810291909101015287518282616cdb8161b03e565b935060ff1681518110616cf057616cf061aed1565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280616d3d9061b03e565b935060ff1681518110616d5257616d5261aed1565b6020026020010181905250616d66466182c9565b8282616d718161b03e565b935060ff1681518110616d8657616d8661aed1565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280616dd39061b03e565b935060ff1681518110616de857616de861aed1565b602002602001018190525086828280616e009061b03e565b935060ff1681518110616e1557616e1561aed1565b6020908102919091010152855115616f3c5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f6465000000000000000000000060208201528282616e668161b03e565b935060ff1681518110616e7b57616e7b61aed1565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90616ecb90899060040161a684565b600060405180830381865afa158015616ee8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616f10919081019061ab6b565b8282616f1b8161b03e565b935060ff1681518110616f3057616f3061aed1565b60200260200101819052505b84602001511561700c5760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282616f858161b03e565b935060ff1681518110616f9a57616f9a61aed1565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280616fe79061b03e565b935060ff1681518110616ffc57616ffc61aed1565b60200260200101819052506171d3565b6170446168e98660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6170d75760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826170878161b03e565b935060ff168151811061709c5761709c61aed1565b60200260200101819052508460a001516040516020016170bc919061af00565b604051602081830303815290604052828280616fe79061b03e565b8460c0015115801561711a57506040808901518151808301835260008082526020918201528251808401909352815183529081019082015261711890511590565b155b156171d35760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828261715e8161b03e565b935060ff16815181106171735761717361aed1565b602002602001018190525061718788618369565b604051602001617197919061af00565b6040516020818303038152906040528282806171b29061b03e565b935060ff16815181106171c7576171c761aed1565b60200260200101819052505b6040808601518151808301835260008082526020918201528251808401909352815183529081019082015261720790511590565b61729c5760408051808201909152600b81527f2d2d72656c6179657249640000000000000000000000000000000000000000006020820152828261724a8161b03e565b935060ff168151811061725f5761725f61aed1565b6020026020010181905250846040015182828061727b9061b03e565b935060ff16815181106172905761729061aed1565b60200260200101819052505b6060850151156173bd5760408051808201909152600681527f2d2d73616c740000000000000000000000000000000000000000000000000000602082015282826172e58161b03e565b935060ff16815181106172fa576172fa61aed1565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015617369573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617391919081019061ab6b565b828261739c8161b03e565b935060ff16815181106173b1576173b161aed1565b60200260200101819052505b60e085015151156174645760408051808201909152600a81527f2d2d6761734c696d697400000000000000000000000000000000000000000000602082015282826174078161b03e565b935060ff168151811061741c5761741c61aed1565b60200260200101819052506174388560e00151600001516182c9565b82826174438161b03e565b935060ff16815181106174585761745861aed1565b60200260200101819052505b60e0850151602001511561750e5760408051808201909152600a81527f2d2d676173507269636500000000000000000000000000000000000000000000602082015282826174b18161b03e565b935060ff16815181106174c6576174c661aed1565b60200260200101819052506174e28560e00151602001516182c9565b82826174ed8161b03e565b935060ff16815181106175025761750261aed1565b60200260200101819052505b60e085015160400151156175b85760408051808201909152600e81527f2d2d6d61784665655065724761730000000000000000000000000000000000006020820152828261755b8161b03e565b935060ff16815181106175705761757061aed1565b602002602001018190525061758c8560e00151604001516182c9565b82826175978161b03e565b935060ff16815181106175ac576175ac61aed1565b60200260200101819052505b60e085015160600151156176625760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826176058161b03e565b935060ff168151811061761a5761761a61aed1565b60200260200101819052506176368560e00151606001516182c9565b82826176418161b03e565b935060ff16815181106176565761765661aed1565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156176805761768061a54f565b6040519080825280602002602001820160405280156176b357816020015b606081526020019060019003908161769e5790505b50905060005b8260ff168160ff16101561770c57838160ff16815181106176dc576176dc61aed1565b6020026020010151828260ff16815181106176f9576176f961aed1565b60209081029190910101526001016176b9565b5093505050505b949350505050565b6177426040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916177c89186910161b0c8565b600060405180830381865afa1580156177e5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261780d919081019061ab6b565b9050600061781b8683618e58565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161784b919061a1a2565b6000604051808303816000875af115801561786a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617892919081019061b10f565b805190915060030b158015906178ab5750602081015151155b80156178ba5750604081015151155b1561689457816000815181106178d2576178d261aed1565b6020026020010151604051602001615eed919061b1c5565b6060600061791f8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506179569082905b90618fad565b15617ab35760006179d3826179cd846179c76179998a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90618fd4565b90619036565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150617a37908290618fad565b15617aa157604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617a9e905b82906190bb565b90505b617aaa816190e1565b92505050615e1a565b8215617acc578484604051602001615eed92919061b3b1565b5050604080516020810190915260008152615e1a565b509392505050565b6000808251602084016000f09392505050565b8160a0015115617b0c57505050565b6000617b1984848461914a565b90506000617b268261771b565b602081015181519192509060030b158015617bc25750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617bc290604080518082018252600080825260209182015281518083019092528451825280850190820152617950565b15617bcf57505050505050565b60408201515115617bef578160400151604051602001615eed919061b458565b80604051602001615eed919061b4b6565b60606000617c358360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150617c9a905b8290618268565b15617d0957604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615e1a90617d049083906196e5565b6190e1565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617d6b905b829061976f565b600103617e3857604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617dd190617a97565b50604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615e1a90617d04905b83906190bb565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617e9790617c93565b15617fce57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290617eff908390619809565b905060008160018351617f12919061a807565b81518110617f2257617f2261aed1565b60200260200101519050617fc5617d04617f986040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528551825280860190820152906196e5565b95945050505050565b82604051602001615eed919061b521565b50919050565b6060600061801a8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061807c90617c93565b1561808a57615e1a816190e1565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526180e990617d64565b60010361815357604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615e1a90617d0490617e31565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526181b290617c93565b15617fce57604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061821a908390619809565b9050600181511115618256578060028251618235919061a807565b815181106182455761824561aed1565b602002602001015192505050919050565b5082604051602001615eed919061b521565b80518251600091111561827d57506000615d21565b815183516020850151600092916182939161a81a565b61829d919061a807565b9050826020015181036182b4576001915050615d21565b82516020840151819020912014905092915050565b606060006182d6836198ae565b600101905060008167ffffffffffffffff8111156182f6576182f661a54f565b6040519080825280601f01601f191660200182016040528015618320576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461832a57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e53454400000000000000000000000000000000000000000000818401908152855180870187528381528401929092528451808601909552518452908301526060916183f5905b8290619990565b1561843557505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618494906183ee565b156184d457505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618533906183ee565b1561857357505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526185d2906183ee565b806186375750604080518082018252601081527f47504c2d322e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618637906183ee565b1561867757505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526186d6906183ee565b8061873b5750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261873b906183ee565b1561877b57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526187da906183ee565b8061883f5750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261883f906183ee565b1561887f57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526188de906183ee565b806189435750604080518082018252601181527f4c47504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618943906183ee565b1561898357505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526189e2906183ee565b15618a2257505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618a81906183ee565b15618ac157505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618b20906183ee565b15618b6057505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618bbf906183ee565b15618bff57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e300000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618c5e906183ee565b15618c9e57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618cfd906183ee565b80618d625750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618d62906183ee565b15618da257505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e3100000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618e01906183ee565b15618e4157505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151615eed929060200161b5ff565b60608060005b8451811015618ee35781858281518110618e7a57618e7a61aed1565b6020026020010151604051602001618e9392919061aa4a565b604051602081830303815290604052915060018551618eb2919061a807565b8114618edb5781604051602001618ec9919061b768565b60405160208183030381529060405291505b600101618e5e565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081618efc5790505090508381600081518110618f2757618f2761aed1565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110618f7b57618f7b61aed1565b60200260200101819052508181600281518110618f9a57618f9a61aed1565b6020908102919091010152949350505050565b6020808301518351835192840151600093618fcb92918491906199a4565b14159392505050565b604080518082019091526000808252602082015260006190068460000151856020015185600001518660200151619ab5565b9050836020015181619018919061a807565b8451859061902790839061a807565b90525060208401525090919050565b604080518082019091526000808252602082015281518351101561905b575081615d21565b60208083015190840151600191146190825750815160208481015190840151829020919020145b80156190b35782518451859061909990839061a807565b90525082516020850180516190af90839061a81a565b9052505b509192915050565b60408051808201909152600080825260208201526190da838383619bd5565b5092915050565b60606000826000015167ffffffffffffffff8111156191025761910261a54f565b6040519080825280601f01601f19166020018201604052801561912c576020820181803683370190505b50905060006020820190506190da8185602001518660000151619c80565b60606000619156616113565b6040805160ff808252612000820190925291925060009190816020015b606081526020019060019003908161917357905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806191ce9061b03e565b935060ff16815181106191e3576191e361aed1565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001619234919061b7a9565b60405160208183030381529060405282828061924f9061b03e565b935060ff16815181106192645761926461aed1565b60200260200101819052506040518060400160405280600881526020017f76616c69646174650000000000000000000000000000000000000000000000008152508282806192b19061b03e565b935060ff16815181106192c6576192c661aed1565b6020026020010181905250826040516020016192e2919061af6c565b6040516020818303038152906040528282806192fd9061b03e565b935060ff16815181106193125761931261aed1565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e74726163740000000000000000000000000000000000000000000081525082828061935f9061b03e565b935060ff16815181106193745761937461aed1565b60200260200101819052506193898784619cfa565b82826193948161b03e565b935060ff16815181106193a9576193a961aed1565b6020908102919091010152855151156194555760408051808201909152600b81527f2d2d7265666572656e6365000000000000000000000000000000000000000000602082015282826193fb8161b03e565b935060ff16815181106194105761941061aed1565b6020026020010181905250619429866000015184619cfa565b82826194348161b03e565b935060ff16815181106194495761944961aed1565b60200260200101819052505b8560800151156194c35760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261949e8161b03e565b935060ff16815181106194b3576194b361aed1565b6020026020010181905250619529565b84156195295760408051808201909152601281527f2d2d726571756972655265666572656e63650000000000000000000000000000602082015282826195088161b03e565b935060ff168151811061951d5761951d61aed1565b60200260200101819052505b604086015151156195c55760408051808201909152600d81527f2d2d756e73616665416c6c6f7700000000000000000000000000000000000000602082015282826195738161b03e565b935060ff16815181106195885761958861aed1565b602002602001018190525085604001518282806195a49061b03e565b935060ff16815181106195b9576195b961aed1565b60200260200101819052505b85606001511561962f5760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261960e8161b03e565b935060ff16815181106196235761962361aed1565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561964d5761964d61a54f565b60405190808252806020026020018201604052801561968057816020015b606081526020019060019003908161966b5790505b50905060005b8260ff168160ff1610156196d957838160ff16815181106196a9576196a961aed1565b6020026020010151828260ff16815181106196c6576196c661aed1565b6020908102919091010152600101619686565b50979650505050505050565b604080518082019091526000808252602082015281518351101561970a575081615d21565b815183516020850151600092916197209161a81a565b61972a919061a807565b6020840151909150600190821461974b575082516020840151819020908220145b80156197665783518551869061976290839061a807565b9052505b50929392505050565b60008082600001516197938560000151866020015186600001518760200151619ab5565b61979d919061a81a565b90505b835160208501516197b1919061a81a565b81116190da57816197c18161b7ee565b92505082600001516197f88560200151836197dc919061a807565b86516197e8919061a807565b8386600001518760200151619ab5565b619802919061a81a565b90506197a0565b60606000619817848461976f565b61982290600161a81a565b67ffffffffffffffff81111561983a5761983a61a54f565b60405190808252806020026020018201604052801561986d57816020015b60608152602001906001900390816198585790505b50905060005b8151811015617ae257619889617d0486866190bb565b82828151811061989b5761989b61aed1565b6020908102919091010152600101619873565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106198f7577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310619923576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061994157662386f26fc10000830492506010015b6305f5e1008310619959576305f5e100830492506008015b612710831061996d57612710830492506004015b6064831061997f576064830492506002015b600a8310615d215760010192915050565b600061999c8383619d3a565b159392505050565b600080858411619aab5760208411619a5757600084156199ef5760016199cb86602061a807565b6199d690600861b808565b6199e190600261b906565b6199eb919061a807565b1990505b83518116856199fe898961a81a565b619a08919061a807565b805190935082165b818114619a4257878411619a2a5787945050505050617713565b83619a348161b912565b945050828451169050619a10565b619a4c878561a81a565b945050505050617713565b838320619a64858861a807565b619a6e908761a81a565b91505b858210619aa957848220808203619a9657619a8c868461a81a565b9350505050617713565b619aa160018461a807565b925050619a71565b505b5092949350505050565b60008381868511619bc05760208511619b6f5760008515619b01576001619add87602061a807565b619ae890600861b808565b619af390600261b906565b619afd919061a807565b1990505b84518116600087619b128b8b61a81a565b619b1c919061a807565b855190915083165b828114619b6157818610619b4957619b3c8b8b61a81a565b9650505050505050617713565b85619b538161b7ee565b965050838651169050619b24565b859650505050505050617713565b508383206000905b619b81868961a807565b8211619bbe57858320808203619b9d5783945050505050617713565b619ba860018561a81a565b9350508180619bb69061b7ee565b925050619b77565b505b619bca878761a81a565b979650505050505050565b60408051808201909152600080825260208201526000619c078560000151866020015186600001518760200151619ab5565b602080870180519186019190915251909150619c23908261a807565b835284516020860151619c36919061a81a565b8103619c455760008552619c77565b83518351619c53919061a81a565b85518690619c6290839061a807565b9052508351619c71908261a81a565b60208601525b50909392505050565b60208110619cb85781518352619c9760208461a81a565b9250619ca460208361a81a565b9150619cb160208261a807565b9050619c80565b6000198115619ce7576001619cce83602061a807565b619cda9061010061b906565b619ce4919061a807565b90505b9151835183169219169190911790915250565b60606000619d0884846161e6565b8051602080830151604051939450619d229390910161b929565b60405160208183030381529060405291505092915050565b8151815160009190811115619d4d575081515b6020808501519084015160005b83811015619e065782518251808214619dd6576000196020871015619db557600184619d8789602061a807565b619d91919061a81a565b619d9c90600861b808565b619da790600261b906565b619db1919061a807565b1990505b8181168382168181039114619dd3579750615d219650505050505050565b50505b619de160208661a81a565b9450619dee60208561a81a565b93505050602081619dff919061a81a565b9050619d5a565b5084518651616894919061b981565b610b678061b9a283390190565b61063a8061c50983390190565b61106f8061cb4383390190565b6120728061dbb283390190565b6040518060e00160405280606081526020016060815260200160608152602001600015158152602001600015158152602001600015158152602001619e8c619e91565b905290565b60405180610100016040528060001515815260200160001515815260200160608152602001600080191681526020016060815260200160608152602001600015158152602001619e8c6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b81811015619f435783516001600160a01b0316835260209384019390920191600101619f1c565b509095945050505050565b60005b83811015619f69578181015183820152602001619f51565b50506000910152565b60008151808452619f8a816020860160208601619f4e565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a09a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b8181101561a080577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261a06a848651619f72565b602095860195909450929092019160010161a030565b509197505050602094850194929092019150600101619fc6565b50929695505050505050565b600081518084526020840193506020830160005b8281101561a0fa5781517fffffffff000000000000000000000000000000000000000000000000000000001686526020958601959091019060010161a0ba565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a09a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516040875261a1706040880182619f72565b905060208201519150868103602088015261a18b818361a0a6565b96505050602093840193919091019060010161a12c565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a09a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845261a204858351619f72565b9450602093840193919091019060010161a1ca565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a09a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b038151168652602081015190506040602087015261a29a604087018261a0a6565b955050602093840193919091019060010161a241565b600181811c9082168061a2c457607f821691505b602082108103617fdf577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6001600160a01b0381541682526001600160a01b03600182015416602083015260028101546040830152600060038201608060608501526000815461a3418161a2b0565b806080880152600182166000811461a360576001811461a39a5761a3ce565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831660a089015260a082151560051b890101935061a3ce565b84600052602060002060005b8381101561a3c55781548a820160a0015260019091019060200161a3a6565b890160a0019450505b50919695505050505050565b602081526000615e1a602083018461a2fd565b6001600160a01b0383168152604060208201526000617713604083018461a2fd565b60006020828403121561a42157600080fd5b81516001600160a01b0381168114615e1a57600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff881660408301528660608301526003861061a4f2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a083015261a51360c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b60006020828403121561a53f57600080fd5b81518015158114615e1a57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b601f82111561123c57806000526020600020601f840160051c8101602085101561a5a55750805b601f840160051c820191505b81811015612a54576000815560010161a5b1565b815167ffffffffffffffff81111561a5df5761a5df61a54f565b61a5f38161a5ed845461a2b0565b8461a57e565b6020601f82116001811461a627576000831561a60f5750848201515b600019600385901b1c1916600184901b178455612a54565b600084815260208120601f198516915b8281101561a657578785015182556020948501946001909201910161a637565b508482101561a6755786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b602081526000615e1a6020830184619f72565b60006020828403121561a6a957600080fd5b5051919050565b602081526000615d2160208301600581527f68656c6c6f000000000000000000000000000000000000000000000000000000602082015260400190565b60a08152600061a70060a0830187619f72565b6001600160a01b03861660208401528460408401526001600160a01b03841660608401528281036080840152619bca81600581527f68656c6c6f000000000000000000000000000000000000000000000000000000602082015260400190565b600081516060845261a7756060850182619f72565b90506001600160a01b036020840151166020850152604083015160408501528091505092915050565b60808152600061a7b1608083018761a760565b8560208401526001600160a01b03851660408401528281036060840152619bca8185619f72565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115615d2157615d2161a7d8565b80820180821115615d2157615d2161a7d8565b60a08152600061a84060a083018861a760565b6001600160a01b03871660208401528560408401526001600160a01b0385166060840152828103608084015261a8768185619f72565b98975050505050505050565b6001600160a01b03851681528360208201526001600160a01b0383166040820152608060608201526000616894608083018461a2fd565b6001600160a01b03831681526040602082015260006177136040830184619f72565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161a91381601a850160208801619f4e565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161a95081601c840160208801619f4e565b01601c01949350505050565b6040516060810167ffffffffffffffff8111828210171561a97f5761a97f61a54f565b60405290565b60008067ffffffffffffffff84111561a9a05761a9a061a54f565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561a9cf5761a9cf61a54f565b60405283815290508082840185101561a9e757600080fd5b617ae2846020830185619f4e565b600082601f83011261aa0657600080fd5b615e1a8383516020850161a985565b60006020828403121561aa2757600080fd5b815167ffffffffffffffff81111561aa3e57600080fd5b615d1d8482850161a9f5565b6000835161aa5c818460208801619f4e565b83519083019061aa70818360208801619f4e565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161aab181601a850160208801619f4e565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161aaee816033840160208801619f4e565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000615e1a6080830184619f72565b60006020828403121561ab7d57600080fd5b815167ffffffffffffffff81111561ab9457600080fd5b8201601f8101841361aba557600080fd5b615d1d8482516020840161a985565b6000855161abc6818460208a01619f4e565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161ac00816001840160208a01619f4e565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161ac3e816002840160208901619f4e565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161ac80816002840160208801619f4e565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061accb6040830184619f72565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161ad4281601f850160208701619f4e565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061adaf6040830184619f72565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061ae016040830184619f72565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161ae78816014850160208701619f4e565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061aebf6040830185619f72565b8281036020840152615e168185619f72565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161af38816001850160208701619f4e565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161af7e818460208701619f4e565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161b03181604b850160208701619f4e565b91909101604b0192915050565b600060ff821660ff810361b0545761b05461a7d8565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161b0bb816029850160208701619f4e565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000615e1a6080830184619f72565b60006020828403121561b12157600080fd5b815167ffffffffffffffff81111561b13857600080fd5b82016060818503121561b14a57600080fd5b61b15261a95c565b81518060030b811461b16357600080fd5b8152602082015167ffffffffffffffff81111561b17f57600080fd5b61b18b8682850161a9f5565b602083015250604082015167ffffffffffffffff81111561b1ab57600080fd5b61b1b78682850161a9f5565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161b223816021850160208701619f4e565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161b40f816021850160208801619f4e565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161b44c81602e840160208801619f4e565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161b0bb816029850160208701619f4e565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161b514816022850160208701619f4e565b9190910160220192915050565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161b55981600e850160208701619f4e565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161b637816018850160208801619f4e565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161b67481601c840160208801619f4e565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161b77a818460208701619f4e565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161b7e181601c850160208701619f4e565b91909101601c0192915050565b6000600019820361b8015761b80161a7d8565b5060010190565b8082028115828204841417615d2157615d2161a7d8565b6001815b600184111561b85a5780850481111561b83e5761b83e61a7d8565b600184161561b84c57908102905b60019390931c92800261b823565b935093915050565b60008261b87157506001615d21565b8161b87e57506000615d21565b816001811461b894576002811461b89e5761b8ba565b6001915050615d21565b60ff84111561b8af5761b8af61a7d8565b50506001821b615d21565b5060208310610133831016604e8410600b841016171561b8dd575081810a615d21565b61b8ea600019848461b81f565b806000190482111561b8fe5761b8fe61a7d8565b029392505050565b6000615e1a838361b862565b60008161b9215761b92161a7d8565b506000190190565b6000835161b93b818460208801619f4e565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161b975816001840160208801619f4e565b01600101949350505050565b81810360008312801583831316838312821617156190da576190da61a7d856fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea2646970667358221220c069e4cb3e16bcddc5b07d6ba4019a062fbae92d695877ad19f66fc9ac6047fd64736f6c634300081a00336080604052348015600f57600080fd5b5061061b8061001f6000396000f3fe60806040526004361061002a5760003560e01c80635bcfd61614610033578063c9028a361461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e366004610151565b610073565b34801561005f57600080fd5b5061003161006e36600461020e565b6100ee565b6060811561008a576100878284018461027f565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610375565b6100c560408a0160208b016103e1565b896040013533866040516100de96959493929190610445565b60405180910390a1505050505050565b7fd75bb509c8f32a725aac99ac5c4541060dbfb889a3aca8314d6f00395618c4c48160405161011d9190610507565b60405180910390a150565b803573ffffffffffffffffffffffffffffffffffffffff8116811461014c57600080fd5b919050565b60008060008060006080868803121561016957600080fd5b853567ffffffffffffffff81111561018057600080fd5b86016060818903121561019257600080fd5b94506101a060208701610128565b935060408601359250606086013567ffffffffffffffff8111156101c357600080fd5b8601601f810188136101d457600080fd5b803567ffffffffffffffff8111156101eb57600080fd5b8860208284010111156101fd57600080fd5b959894975092955050506020019190565b60006020828403121561022057600080fd5b813567ffffffffffffffff81111561023757600080fd5b82016080818503121561024957600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561029157600080fd5b813567ffffffffffffffff8111156102a857600080fd5b8201601f810184136102b957600080fd5b803567ffffffffffffffff8111156102d3576102d3610250565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033f5761033f610250565b60405281815282820160200186101561035757600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126103aa57600080fd5b83018035915067ffffffffffffffff8211156103c557600080fd5b6020019150368190038213156103da57600080fd5b9250929050565b6000602082840312156103f357600080fd5b61024982610128565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60a08152600061045960a08301888a6103fc565b73ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff851660608401528281036080840152835180825260005b818110156104c3576020818701810151848301820152016104a7565b5060006020828401015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011683010192505050979650505050505050565b6020815273ffffffffffffffffffffffffffffffffffffffff61052983610128565b16602082015273ffffffffffffffffffffffffffffffffffffffff61055060208401610128565b166040820152600080604084013590508060608401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261059c57600080fd5b830160208101903567ffffffffffffffff8111156105b957600080fd5b8036038213156105c857600080fd5b6080808501526105dc60a0850182846103fc565b9594505050505056fea2646970667358221220dc7a523df5134796579649d41e8953ef32547ff135f22140d4bed3844993809c64736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea2646970667358221220eaa287ea22d82335c1d97ef661cb17f1296902daa41cca34de107966248e954364736f6c634300081a003360c060405234801561001057600080fd5b5060405161207238038061207283398101604081905261002f916101f0565b6001600160a01b038216158061004c57506001600160a01b038116155b1561006a5760405163d92e233d60e01b815260040160405180910390fd5b60066100768982610342565b5060076100838882610342565b506008805460ff191660ff881617905560808590528360028111156100aa576100aa610400565b60a08160028111156100be576100be610400565b905250600192909255600080546001600160a01b039283166001600160a01b0319909116179055600880549190921661010002610100600160a81b0319909116179055506104169350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261013357600080fd5b81516001600160401b0381111561014c5761014c61010c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561017a5761017a61010c565b60405281815283820160200185101561019257600080fd5b60005b828110156101b157602081860181015183830182015201610195565b506000918101602001919091529392505050565b8051600381106101d457600080fd5b919050565b80516001600160a01b03811681146101d457600080fd5b600080600080600080600080610100898b03121561020d57600080fd5b88516001600160401b0381111561022357600080fd5b61022f8b828c01610122565b60208b015190995090506001600160401b0381111561024d57600080fd5b6102598b828c01610122565b975050604089015160ff8116811461027057600080fd5b60608a0151909650945061028660808a016101c5565b60a08a0151909450925061029c60c08a016101d9565b91506102aa60e08a016101d9565b90509295985092959890939650565b600181811c908216806102cd57607f821691505b6020821081036102ed57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561033d57806000526020600020601f840160051c8101602085101561031a5750805b601f840160051c820191505b8181101561033a5760008155600101610326565b50505b505050565b81516001600160401b0381111561035b5761035b61010c565b61036f8161036984546102b9565b846102f3565b6020601f8211600181146103a3576000831561038b5750848201515b600019600385901b1c1916600184901b17845561033a565b600084815260208120601f198516915b828110156103d357878501518255602094850194600190920191016103b3565b50848210156103f15786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a051611c1b61045760003960006103440152600081816102f001528181610bdc01528181610ce201528181610efe01526110040152611c1b6000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c806395d89b41116100f9578063ccc7759911610097578063eddeb12311610071578063eddeb12314610461578063f2441b3214610474578063f687d12a14610494578063fc5fecd5146104a757600080fd5b8063ccc77599146103d4578063d9eeebed146103e7578063dd62ed3e1461041b57600080fd5b8063b84c8246116100d3578063b84c824614610386578063c47f00271461039b578063c7012626146103ae578063c835d7cc146103c157600080fd5b806395d89b4114610337578063a3413d031461033f578063a9059cbb1461037357600080fd5b80633ce4a5bc116101665780634d8943bb116101405780634d8943bb146102ac57806370a08231146102b557806385e1f4d0146102eb5780638b851b951461031257600080fd5b80633ce4a5bc1461024657806342966c681461028657806347e7ef241461029957600080fd5b806318160ddd1161019757806318160ddd1461021657806323b872dd1461021e578063313ce5671461023157600080fd5b806306fdde03146101be578063091d2788146101dc578063095ea7b3146101f3575b600080fd5b6101c66104ba565b6040516101d39190611648565b60405180910390f35b6101e560015481565b6040519081526020016101d3565b610206610201366004611687565b61054c565b60405190151581526020016101d3565b6005546101e5565b61020661022c3660046116b3565b610563565b60085460405160ff90911681526020016101d3565b61026173735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d3565b6102066102943660046116f4565b6105fa565b6102066102a7366004611687565b61060e565b6101e560025481565b6101e56102c336600461170d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6101e57f000000000000000000000000000000000000000000000000000000000000000081565b60085461026190610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6101c6610767565b6103667f000000000000000000000000000000000000000000000000000000000000000081565b6040516101d3919061172a565b610206610381366004611687565b610776565b610399610394366004611832565b610783565b005b6103996103a9366004611832565b6107e0565b6102066103bc366004611883565b610839565b6103996103cf36600461170d565b610988565b6103996103e236600461170d565b610a9c565b6103ef610bb0565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101d3565b6101e56104293660046118dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205490565b61039961046f3660046116f4565b610dce565b6000546102619073ffffffffffffffffffffffffffffffffffffffff1681565b6103996104a23660046116f4565b610e50565b6103ef6104b53660046116f4565b610ed2565b6060600680546104c990611915565b80601f01602080910402602001604051908101604052809291908181526020018280546104f590611915565b80156105425780601f1061051757610100808354040283529160200191610542565b820191906000526020600020905b81548152906001019060200180831161052557829003601f168201915b5050505050905090565b60006105593384846110ee565b5060015b92915050565b60006105708484846111f7565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460209081526040808320338452909152902054828110156105db576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105ef85336105ea8685611997565b6110ee565b506001949350505050565b600061060633836113b2565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab1480159061064c575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156106755750600854610100900473ffffffffffffffffffffffffffffffffffffffff163314155b156106ac576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106b683836114f4565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526107569186906119aa565b60405180910390a250600192915050565b6060600780546104c990611915565b60006105593384846111f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab146107d0576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60076107dc8282611a1b565b5050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461082d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60066107dc8282611a1b565b6000806000610846610bb0565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156108d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fc9190611b34565b610932576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61093c33856113b2565b60025460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161097591899189918791611b56565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146109d5576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a22576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610ae9576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610b36576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c679190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610cb6576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d699190611ba2565b905080600003610da5576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060025460015483610db89190611bbb565b610dc29190611bd2565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e1b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610a91565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e9d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610f65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f899190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610fd8576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015611067573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108b9190611ba2565b9050806000036110c7576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000906110d78784611bbb565b6110e19190611bd2565b9296929550919350505050565b73ffffffffffffffffffffffffffffffffffffffff831661113b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611188576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611244576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611291576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040902054818110156112f1576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112fb8282611997565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260036020526040808220939093559085168152908120805484929061133e908490611bd2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113a491815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff82166113ff576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260409020548181101561145f576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114698282611997565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260036020526040812091909155600580548492906114a4908490611997565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016111ea565b73ffffffffffffffffffffffffffffffffffffffff8216611541576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008282546115539190611bd2565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805483929061158d908490611bd2565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561160a576020818501810151868301820152016115ee565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061165b60208301846115e4565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461168457600080fd5b50565b6000806040838503121561169a57600080fd5b82356116a581611662565b946020939093013593505050565b6000806000606084860312156116c857600080fd5b83356116d381611662565b925060208401356116e381611662565b929592945050506040919091013590565b60006020828403121561170657600080fd5b5035919050565b60006020828403121561171f57600080fd5b813561165b81611662565b6020810160038310611765577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff8411156117b5576117b561176b565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff821117156118025761180261176b565b60405283815290508082840185101561181a57600080fd5b83836020830137600060208583010152509392505050565b60006020828403121561184457600080fd5b813567ffffffffffffffff81111561185b57600080fd5b8201601f8101841361186c57600080fd5b61187b8482356020840161179a565b949350505050565b6000806040838503121561189657600080fd5b823567ffffffffffffffff8111156118ad57600080fd5b8301601f810185136118be57600080fd5b6118cd8582356020840161179a565b95602094909401359450505050565b600080604083850312156118ef57600080fd5b82356118fa81611662565b9150602083013561190a81611662565b809150509250929050565b600181811c9082168061192957607f821691505b602082108103611962577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561055d5761055d611968565b6040815260006119bd60408301856115e4565b90508260208301529392505050565b601f821115611a1657806000526020600020601f840160051c810160208510156119f35750805b601f840160051c820191505b81811015611a1357600081556001016119ff565b50505b505050565b815167ffffffffffffffff811115611a3557611a3561176b565b611a4981611a438454611915565b846119cc565b6020601f821160018114611a9b5760008315611a655750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611a13565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015611ae95787850151825560209485019460019092019101611ac9565b5084821015611b2557868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b600060208284031215611b4657600080fd5b8151801515811461165b57600080fd5b608081526000611b6960808301876115e4565b6020830195909552506040810192909252606090910152919050565b600060208284031215611b9757600080fd5b815161165b81611662565b600060208284031215611bb457600080fd5b5051919050565b808202811582820484141761055d5761055d611968565b8082018082111561055d5761055d61196856fea26469706673582212202a06c5d72036d88c206ff2bfdd016b3ce8555bc0090e8bb5487bc61ea043732b64736f6c634300081a0033a2646970667358221220978e413b44fa907cc92dcd7393363dac8f8689d27ad6939fd2b1d7faa84bb2ad64736f6c634300081a0033", } // GatewayZEVMOutboundTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/gatewayzevmupgradetest.sol/gatewayzevmupgradetest.go b/v2/pkg/gatewayzevmupgradetest.sol/gatewayzevmupgradetest.go index f88409cca..8bd291d0d 100644 --- a/v2/pkg/gatewayzevmupgradetest.sol/gatewayzevmupgradetest.go +++ b/v2/pkg/gatewayzevmupgradetest.sol/gatewayzevmupgradetest.go @@ -62,7 +62,7 @@ type RevertOptions struct { // GatewayZEVMUpgradeTestMetaData contains all meta data concerning the GatewayZEVMUpgradeTest contract. var GatewayZEVMUpgradeTestMetaData = &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\":\"MAX_MESSAGE_SIZE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PROTOCOL_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\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"callOptions\",\"type\":\"tuple\",\"internalType\":\"structCallOptions\",\"components\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"isArbitraryCall\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"call\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\":\"structMessageContext\",\"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\":\"structMessageContext\",\"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\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"execute\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structMessageContext\",\"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\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"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\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"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\"},{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"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\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"callOptions\",\"type\":\"tuple\",\"internalType\":\"structCallOptions\",\"components\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"isArbitraryCall\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"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\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"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\"},{\"name\":\"callOptions\",\"type\":\"tuple\",\"internalType\":\"structCallOptions\",\"components\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"isArbitraryCall\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Called\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"callOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structCallOptions\",\"components\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"isArbitraryCall\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\":\"Withdrawn\",\"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\"},{\"name\":\"callOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structCallOptions\",\"components\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"isArbitraryCall\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawnV2\",\"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\"},{\"name\":\"callOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structCallOptions\",\"components\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"isArbitraryCall\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\":\"CallerIsNotProtocol\",\"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\":\"InsufficientGasLimit\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZetaAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"MessageSizeExceeded\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrProtocol\",\"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: "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516143726100fd60003960008181612bbd01528181612be60152612dbc01526143726000f3fe6080604052600436106101e75760003560e01c806352d1902d116101025780639d4ba46511610095578063c39aca3711610064578063c39aca37146106a2578063d547741f146106c2578063e63ab1e9146106e2578063f45346dc1461071657600080fd5b80639d4ba465146105f7578063a217fddf14610617578063ad3cb1cc1461062c578063bcf7f32b1461068257600080fd5b80638456cb59116100d15780638456cb591461054757806391d148541461055c57806397a1cef1146105c157806397d340f5146105e157600080fd5b806352d1902d146104bb5780635c975abb146104d05780637b15118b146105075780637c0dcb5f1461052757600080fd5b80632722feee1161017a5780633b283933116101495780633b283933146104535780633f4ba83a14610473578063485cc955146104885780634f1ef286146104a857600080fd5b80632722feee146103cb5780632810ae63146103f35780632f2ff15d1461041357806336568abe1461043357600080fd5b80631cb5ea75116101b65780631cb5ea75146102f657806321501a951461031657806321e093b114610336578063248a9ca31461036e57600080fd5b806301ffc9a714610261578063048ae42c1461029657806306cb8983146102b6578063184b0793146102d657600080fd5b3661025c576101f4610736565b6000546001600160a01b0316331480159061022357503373735b14bb79463307aacbed86daf3322b1e6226ab14155b1561025a576040517fb3af013700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b34801561026d57600080fd5b5061028161027c366004613305565b610794565b60405190151581526020015b60405180910390f35b3480156102a257600080fd5b5061025a6102b1366004613499565b61082d565b3480156102c257600080fd5b5061025a6102d136600461356b565b610a2d565b3480156102e257600080fd5b5061025a6102f136600461363b565b610b20565b34801561030257600080fd5b5061025a61031136600461368b565b610c0f565b34801561032257600080fd5b5061025a610331366004613739565b610cd5565b34801561034257600080fd5b50600054610356906001600160a01b031681565b6040516001600160a01b03909116815260200161028d565b34801561037a57600080fd5b506103bd6103893660046137c5565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b60405190815260200161028d565b3480156103d757600080fd5b5061035673735b14bb79463307aacbed86daf3322b1e6226ab81565b3480156103ff57600080fd5b5061025a61040e3660046137de565b610e89565b34801561041f57600080fd5b5061025a61042e366004613883565b611021565b34801561043f57600080fd5b5061025a61044e366004613883565b61106b565b34801561045f57600080fd5b5061025a61046e3660046138b3565b6110bc565b34801561047f57600080fd5b5061025a61122d565b34801561049457600080fd5b5061025a6104a3366004613946565b611262565b61025a6104b6366004613974565b61149e565b3480156104c757600080fd5b506103bd6114bd565b3480156104dc57600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610281565b34801561051357600080fd5b5061025a6105223660046139ba565b6114ec565b34801561053357600080fd5b5061025a610542366004613a2c565b6116a2565b34801561055357600080fd5b5061025a6118b6565b34801561056857600080fd5b50610281610577366004613883565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156105cd57600080fd5b5061025a6105dc366004613ab1565b6118e8565b3480156105ed57600080fd5b506103bd61040081565b34801561060357600080fd5b5061025a610612366004613b15565b611a4c565b34801561062357600080fd5b506103bd600081565b34801561063857600080fd5b506106756040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161028d9190613be3565b34801561068e57600080fd5b5061025a61069d366004613bf6565b611cbf565b3480156106ae57600080fd5b5061025a6106bd366004613bf6565b611dd6565b3480156106ce57600080fd5b5061025a6106dd366004613883565b611fcc565b3480156106ee57600080fd5b506103bd7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b34801561072257600080fd5b5061025a610731366004613c94565b612010565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615610792576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061082757507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610835612206565b61083d610736565b865160000361085f5760405163d92e233d60e01b815260040160405180910390fd5b85600003610899576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816000036108d3576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006108e36060830183613cd6565b6108ee915085613d3b565b1115610926576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610933878785612287565b90506000336001600160a01b03167f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c8a898b868c6001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c89190613d75565b6040805180820182528c81526001602082015290516109f29695949392918f918f91908e90613eca565b60405180910390a350610a2460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050505050565b610a35612206565b610a3d610736565b8135600003610a78576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610400610a886060830183613cd6565b610a93915085613d3b565b1115610acb576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610aef86868686610ae136889003880188613f4c565b610aea87613fa4565b61258a565b610b1860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b6d576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b75610736565b6001600160a01b038216610b9c5760405163d92e233d60e01b815260040160405180910390fd5b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063c9028a3690610be190849060040161404c565b600060405180830381600087803b158015610bfb57600080fd5b505af1158015610b18573d6000803e3d6000fd5b610c17612206565b610c1f610736565b81600003610c59576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610400610c696060830183613cd6565b610c74915085613d3b565b1115610cac576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610aef8686868660405180604001604052808881526020016001151581525086610aea90613fa4565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d22576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d2a610736565b6001600160a01b038316610d515760405163d92e233d60e01b815260040160405180910390fd5b83600003610d8b576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dbe57506001600160a01b03831630145b15610df5576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610dff8484612771565b6000546040517f5bcfd6160000000000000000000000000000000000000000000000000000000081526001600160a01b0380861692635bcfd61692610e50928a9216908990889088906004016140bc565b600060405180830381600087803b158015610e6a57600080fd5b505af1158015610e7e573d6000803e3d6000fd5b505050505050505050565b610e91612206565b610e99610736565b8651600003610ebb5760405163d92e233d60e01b815260040160405180910390fd5b85600003610ef5576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8135600003610f30576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610400610f406060830183613cd6565b610f4b915085613d3b565b1115610f83576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fa18673735b14bb79463307aacbed86daf3322b1e6226ab612771565b60008054604051879233927f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c92610ff0928d926001600160a01b0316918d919081908d908d908d908d90614158565b60405180910390a3610a2460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461105b8161293f565b6110658383612949565b50505050565b6001600160a01b03811633146110ad576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110b78282612a36565b505050565b6110c4612206565b6110cc610736565b85516000036110ee5760405163d92e233d60e01b815260040160405180910390fd5b84600003611128576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006111386060830183613cd6565b611143915084613d3b565b111561117b576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111998573735b14bb79463307aacbed86daf3322b1e6226ab612771565b60008054604080518082018252838152600160208201529051879333937f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c936111fc938d936001600160a01b03909316928d92909182918d918d91908d90613eca565b60405180910390a3610b1860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6112578161293f565b61125f612afa565b50565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156112ad5750825b905060008267ffffffffffffffff1660011480156112ca5750303b155b9050811580156112d8575080155b1561130f576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156113705784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038716158061138d57506001600160a01b038616155b156113ab5760405163d92e233d60e01b815260040160405180910390fd5b6113b3612b8a565b6113bb612b8a565b6113c3612b92565b6113cb612ba2565b6113d6600087612949565b506114017f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87612949565b50600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0389161790558315610a245784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050505050565b6114a6612bb2565b6114af82612c82565b6114b98282612c8d565b5050565b60006114c7612db1565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b6114f4612206565b6114fc610736565b865160000361151e5760405163d92e233d60e01b815260040160405180910390fd5b85600003611558576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8135600003611593576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006115a36060830183613cd6565b6115ae915085613d3b565b11156115e6576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006115f487878535612287565b90506000336001600160a01b03167f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c8a898b868c6001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611665573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116899190613d75565b8c8c8c8c6040516109f299989796959493929190614158565b6116aa612206565b6116b2610736565b83516000036116d45760405163d92e233d60e01b815260040160405180910390fd5b8260000361170e576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61040061171e6060830183613cd6565b90501115611758576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006117648484612e13565b90506000336001600160a01b03167f5d7cd8ae449a6b25de63f10534ddd17d8dd3e79c7aa5f28964b7a7c760258d9787868886896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f99190613d75565b60405180604001604052808c6001600160a01b031663091d27886040518163ffffffff1660e01b8152600401602060405180830381865afa158015611842573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118669190613d75565b81526001602090910152604051611884969594939291908c906141b0565b60405180910390a35061106560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6118e08161293f565b61125f612e81565b6118f0612206565b6118f8610736565b835160000361191a5760405163d92e233d60e01b815260040160405180910390fd5b82600003611954576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006119646060830183613cd6565b9050111561199e576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119bc8373735b14bb79463307aacbed86daf3322b1e6226ab612771565b60008054604080518082018252838152600160208201529051859333937f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c93611a1b938b936001600160a01b03909316928b9290918291908b906141b0565b60405180910390a361106560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611a99576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611aa1610736565b6001600160a01b0384161580611abe57506001600160a01b038216155b15611adc5760405163d92e233d60e01b815260040160405180910390fd5b82600003611b16576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821673735b14bb79463307aacbed86daf3322b1e6226ab1480611b4957506001600160a01b03821630145b15611b80576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152602482018590528516906347e7ef24906044016020604051808303816000875af1158015611be8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0c9190614232565b611c42576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063c9028a3690611c8790849060040161404c565b600060405180830381600087803b158015611ca157600080fd5b505af1158015611cb5573d6000803e3d6000fd5b5050505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611d0c576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d14610736565b6001600160a01b0385161580611d3157506001600160a01b038316155b15611d4f5760405163d92e233d60e01b815260040160405180910390fd5b6040517f5bcfd6160000000000000000000000000000000000000000000000000000000081526001600160a01b03841690635bcfd61690611d9c90899089908990889088906004016140bc565b600060405180830381600087803b158015611db657600080fd5b505af1158015611dca573d6000803e3d6000fd5b50505050505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611e23576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e2b610736565b6001600160a01b0385161580611e4857506001600160a01b038316155b15611e665760405163d92e233d60e01b815260040160405180910390fd5b83600003611ea0576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480611ed357506001600160a01b03831630145b15611f0a576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015611f72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f969190614232565b611d4f576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546120068161293f565b6110658383612a36565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461205d576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612065610736565b6001600160a01b038316158061208257506001600160a01b038116155b156120a05760405163d92e233d60e01b815260040160405180910390fd5b816000036120da576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab148061210d57506001600160a01b03811630145b15612144576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af11580156121ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d09190614232565b6110b7576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01612281576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6000806000846001600160a01b031663fc5fecd5856040518263ffffffff1660e01b81526004016122ba91815260200190565b6040805180830381865afa1580156122d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122fa919061424f565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561237f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a39190614232565b6123d9576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018790526001600160a01b038616906323b872dd906064016020604051808303816000875af1158015612445573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124699190614232565b61249f576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018790526001600160a01b038616906342966c68906024016020604051808303816000875af11580156124ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125239190614232565b612559576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b85516000036125ac5760405163d92e233d60e01b815260040160405180910390fd5b81516040517ffc5fecd5000000000000000000000000000000000000000000000000000000008152600481019190915260009081906001600160a01b0388169063fc5fecd5906024016040805180830381865afa158015612611573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612635919061424f565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af11580156126ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126de9190614232565b612714576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b866001600160a01b0316336001600160a01b03167f306ee13f48319a123b222c69908e44dcf91abffc20cacc502e3cf5a4ff23e0e48a8989898960405161275f95949392919061427d565b60405180910390a35050505050505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af11580156127e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128059190614232565b61283b576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561289a57600080fd5b505af11580156128ae573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d80600081146128ff576040519150601f19603f3d011682016040523d82523d6000602084013e612904565b606091505b50509050806110b7576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61125f8133612efa565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16612a2c576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556129e23390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610827565b6000915050610827565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615612a2c576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610827565b612b02612f87565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b610792612fe2565b612b9a612fe2565b610792613049565b612baa612fe2565b61079261309a565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480612c4b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612c3f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610792576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006114b98161293f565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612d05575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612d0291810190613d75565b60015b612d4b576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114612da7576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401612d42565b6110b783836130a2565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610792576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061255d8383846001600160a01b031663091d27886040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e7c9190613d75565b612287565b612e89610736565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833612b6c565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166114b9576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401612d42565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610792576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610792576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613051612fe2565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b612564612fe2565b6130ab826130f8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156130f0576110b782826131a0565b6114b9613216565b806001600160a01b03163b600003613147576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401612d42565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516131bd9190614320565b600060405180830381855af49150503d80600081146131f8576040519150601f19603f3d011682016040523d82523d6000602084013e6131fd565b606091505b509150915061320d85838361324e565b95945050505050565b3415610792576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060826132635761325e826132c3565b61255d565b815115801561327a57506001600160a01b0384163b155b156132bc576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401612d42565b508061255d565b8051156132d35780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561331757600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461255d57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261338757600080fd5b813567ffffffffffffffff8111156133a1576133a1613347565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff811182821017156133ee576133ee613347565b60405281815283820160200185101561340657600080fd5b816020850160208301376000918101602001919091529392505050565b6001600160a01b038116811461125f57600080fd5b60008083601f84011261344a57600080fd5b50813567ffffffffffffffff81111561346257600080fd5b60208301915083602082850101111561347a57600080fd5b9250929050565b600060a0828403121561349357600080fd5b50919050565b600080600080600080600060c0888a0312156134b457600080fd5b873567ffffffffffffffff8111156134cb57600080fd5b6134d78a828b01613376565b9750506020880135955060408801356134ef81613423565b9450606088013567ffffffffffffffff81111561350b57600080fd5b6135178a828b01613438565b9095509350506080880135915060a088013567ffffffffffffffff81111561353e57600080fd5b61354a8a828b01613481565b91505092959891949750929550565b60006040828403121561349357600080fd5b60008060008060008060c0878903121561358457600080fd5b863567ffffffffffffffff81111561359b57600080fd5b6135a789828a01613376565b96505060208701356135b881613423565b9450604087013567ffffffffffffffff8111156135d457600080fd5b6135e089828a01613438565b90955093506135f490508860608901613559565b915060a087013567ffffffffffffffff81111561361057600080fd5b61361c89828a01613481565b9150509295509295509295565b60006080828403121561349357600080fd5b6000806040838503121561364e57600080fd5b823561365981613423565b9150602083013567ffffffffffffffff81111561367557600080fd5b61368185828601613629565b9150509250929050565b60008060008060008060a087890312156136a457600080fd5b863567ffffffffffffffff8111156136bb57600080fd5b6136c789828a01613376565b96505060208701356136d881613423565b9450604087013567ffffffffffffffff8111156136f457600080fd5b61370089828a01613438565b90955093505060608701359150608087013567ffffffffffffffff81111561361057600080fd5b60006060828403121561349357600080fd5b60008060008060006080868803121561375157600080fd5b853567ffffffffffffffff81111561376857600080fd5b61377488828901613727565b95505060208601359350604086013561378c81613423565b9250606086013567ffffffffffffffff8111156137a857600080fd5b6137b488828901613438565b969995985093965092949392505050565b6000602082840312156137d757600080fd5b5035919050565b600080600080600080600060e0888a0312156137f957600080fd5b873567ffffffffffffffff81111561381057600080fd5b61381c8a828b01613376565b9750506020880135955060408801359450606088013567ffffffffffffffff81111561384757600080fd5b6138538a828b01613438565b909550935061386790508960808a01613559565b915060c088013567ffffffffffffffff81111561353e57600080fd5b6000806040838503121561389657600080fd5b8235915060208301356138a881613423565b809150509250929050565b60008060008060008060a087890312156138cc57600080fd5b863567ffffffffffffffff8111156138e357600080fd5b6138ef89828a01613376565b9650506020870135945060408701359350606087013567ffffffffffffffff81111561391a57600080fd5b61392689828a01613438565b909450925050608087013567ffffffffffffffff81111561361057600080fd5b6000806040838503121561395957600080fd5b823561396481613423565b915060208301356138a881613423565b6000806040838503121561398757600080fd5b823561399281613423565b9150602083013567ffffffffffffffff8111156139ae57600080fd5b61368185828601613376565b600080600080600080600060e0888a0312156139d557600080fd5b873567ffffffffffffffff8111156139ec57600080fd5b6139f88a828b01613376565b975050602088013595506040880135613a1081613423565b9450606088013567ffffffffffffffff81111561384757600080fd5b60008060008060808587031215613a4257600080fd5b843567ffffffffffffffff811115613a5957600080fd5b613a6587828801613376565b945050602085013592506040850135613a7d81613423565b9150606085013567ffffffffffffffff811115613a9957600080fd5b613aa587828801613481565b91505092959194509250565b60008060008060808587031215613ac757600080fd5b843567ffffffffffffffff811115613ade57600080fd5b613aea87828801613376565b9450506020850135925060408501359150606085013567ffffffffffffffff811115613a9957600080fd5b60008060008060808587031215613b2b57600080fd5b8435613b3681613423565b9350602085013592506040850135613b4d81613423565b9150606085013567ffffffffffffffff811115613b6957600080fd5b613aa587828801613629565b60005b83811015613b90578181015183820152602001613b78565b50506000910152565b60008151808452613bb1816020860160208601613b75565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061255d6020830184613b99565b60008060008060008060a08789031215613c0f57600080fd5b863567ffffffffffffffff811115613c2657600080fd5b613c3289828a01613727565b9650506020870135613c4381613423565b9450604087013593506060870135613c5a81613423565b9250608087013567ffffffffffffffff811115613c7657600080fd5b613c8289828a01613438565b979a9699509497509295939492505050565b600080600060608486031215613ca957600080fd5b8335613cb481613423565b9250602084013591506040840135613ccb81613423565b809150509250925092565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613d0b57600080fd5b83018035915067ffffffffffffffff821115613d2657600080fd5b60200191503681900382131561347a57600080fd5b80820180821115610827577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060208284031215613d8757600080fd5b5051919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b801515811461125f57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613e1a57600080fd5b830160208101925035905067ffffffffffffffff811115613e3a57600080fd5b80360382131561347a57600080fd5b60008135613e5681613423565b6001600160a01b031683526020820135613e6f81613dd7565b151560208401526040820135613e8481613423565b6001600160a01b03166040840152613e9f6060830183613de5565b60a06060860152613eb460a086018284613d8e565b6080948501359590940194909452509092915050565b61012081526000613edf61012083018c613b99565b6001600160a01b038b16602084015289604084015288606084015287608084015282810360a0840152613f13818789613d8e565b855160c08501526020860151151560e085015290505b828103610100840152613f3c8185613e49565b9c9b505050505050505050505050565b60006040828403128015613f5f57600080fd5b506040805190810167ffffffffffffffff81118282101715613f8357613f83613347565b604052823581526020830135613f9881613dd7565b60208201529392505050565b600060a08236031215613fb657600080fd5b60405160a0810167ffffffffffffffff81118282101715613fd957613fd9613347565b6040528235613fe781613423565b81526020830135613ff781613dd7565b6020820152604083013561400a81613423565b6040820152606083013567ffffffffffffffff81111561402957600080fd5b61403536828601613376565b606083015250608092830135928101929092525090565b602081526000823561405d81613423565b6001600160a01b038116602084015250602083013561407b81613423565b6001600160a01b038116604084015250600060408401359050806060840152506140a86060840184613de5565b60808085015261320d60a085018284613d8e565b6080815260006140cc8788613de5565b606060808501526140e160e085018284613d8e565b91505060208801356140f281613423565b6001600160a01b0390811660a085015260408981013560c086015290881660208501528301869052828103606084015261412d818587613d8e565b98975050505050505050565b80358252602081013561414b81613dd7565b8015156020840152505050565b6101208152600061416d61012083018c613b99565b6001600160a01b038b16602084015289604084015288606084015287608084015282810360a08401526141a1818789613d8e565b9050613f2960c0840186614139565b610120815260006141c561012083018a613b99565b6001600160a01b03891660208401528760408401528660608401528560808401528281038060a08501526000825261420c60c0850187805182526020908101511515910152565b60208101610100850152506142246020820185613e49565b9a9950505050505050505050565b60006020828403121561424457600080fd5b815161255d81613dd7565b6000806040838503121561426257600080fd5b825161426d81613423565b6020939093015192949293505050565b60a08152600061429060a0830188613b99565b82810360208401526142a3818789613d8e565b85516040850152602086015115156060850152905082810360808401526001600160a01b0384511681526020840151151560208201526001600160a01b036040850151166040820152606084015160a0606083015261430560a0830182613b99565b90506080850151608083015280925050509695505050505050565b60008251614332818460208701613b75565b919091019291505056fea26469706673582212200e0740cf9577260ac8080f2b9fad409cda87278f329b623909c21dac32f9900864736f6c634300081a0033", + Bin: "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516143726100fd60003960008181612bbd01528181612be60152612dbc01526143726000f3fe6080604052600436106101e75760003560e01c806352d1902d116101025780639d4ba46511610095578063c39aca3711610064578063c39aca37146106a2578063d547741f146106c2578063e63ab1e9146106e2578063f45346dc1461071657600080fd5b80639d4ba465146105f7578063a217fddf14610617578063ad3cb1cc1461062c578063bcf7f32b1461068257600080fd5b80638456cb59116100d15780638456cb591461054757806391d148541461055c57806397a1cef1146105c157806397d340f5146105e157600080fd5b806352d1902d146104bb5780635c975abb146104d05780637b15118b146105075780637c0dcb5f1461052757600080fd5b80632722feee1161017a5780633b283933116101495780633b283933146104535780633f4ba83a14610473578063485cc955146104885780634f1ef286146104a857600080fd5b80632722feee146103cb5780632810ae63146103f35780632f2ff15d1461041357806336568abe1461043357600080fd5b80631cb5ea75116101b65780631cb5ea75146102f657806321501a951461031657806321e093b114610336578063248a9ca31461036e57600080fd5b806301ffc9a714610261578063048ae42c1461029657806306cb8983146102b6578063184b0793146102d657600080fd5b3661025c576101f4610736565b6000546001600160a01b0316331480159061022357503373735b14bb79463307aacbed86daf3322b1e6226ab14155b1561025a576040517fb3af013700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b34801561026d57600080fd5b5061028161027c366004613305565b610794565b60405190151581526020015b60405180910390f35b3480156102a257600080fd5b5061025a6102b1366004613499565b61082d565b3480156102c257600080fd5b5061025a6102d136600461356b565b610a2d565b3480156102e257600080fd5b5061025a6102f136600461363b565b610b20565b34801561030257600080fd5b5061025a61031136600461368b565b610c0f565b34801561032257600080fd5b5061025a610331366004613739565b610cd5565b34801561034257600080fd5b50600054610356906001600160a01b031681565b6040516001600160a01b03909116815260200161028d565b34801561037a57600080fd5b506103bd6103893660046137c5565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b60405190815260200161028d565b3480156103d757600080fd5b5061035673735b14bb79463307aacbed86daf3322b1e6226ab81565b3480156103ff57600080fd5b5061025a61040e3660046137de565b610e89565b34801561041f57600080fd5b5061025a61042e366004613883565b611021565b34801561043f57600080fd5b5061025a61044e366004613883565b61106b565b34801561045f57600080fd5b5061025a61046e3660046138b3565b6110bc565b34801561047f57600080fd5b5061025a61122d565b34801561049457600080fd5b5061025a6104a3366004613946565b611262565b61025a6104b6366004613974565b61149e565b3480156104c757600080fd5b506103bd6114bd565b3480156104dc57600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610281565b34801561051357600080fd5b5061025a6105223660046139ba565b6114ec565b34801561053357600080fd5b5061025a610542366004613a2c565b6116a2565b34801561055357600080fd5b5061025a6118b6565b34801561056857600080fd5b50610281610577366004613883565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156105cd57600080fd5b5061025a6105dc366004613ab1565b6118e8565b3480156105ed57600080fd5b506103bd61040081565b34801561060357600080fd5b5061025a610612366004613b15565b611a4c565b34801561062357600080fd5b506103bd600081565b34801561063857600080fd5b506106756040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161028d9190613be3565b34801561068e57600080fd5b5061025a61069d366004613bf6565b611cbf565b3480156106ae57600080fd5b5061025a6106bd366004613bf6565b611dd6565b3480156106ce57600080fd5b5061025a6106dd366004613883565b611fcc565b3480156106ee57600080fd5b506103bd7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b34801561072257600080fd5b5061025a610731366004613c94565b612010565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615610792576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061082757507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610835612206565b61083d610736565b865160000361085f5760405163d92e233d60e01b815260040160405180910390fd5b85600003610899576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816000036108d3576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006108e36060830183613cd6565b6108ee915085613d3b565b1115610926576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610933878785612287565b90506000336001600160a01b03167f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c8a898b868c6001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c89190613d75565b6040805180820182528c81526001602082015290516109f29695949392918f918f91908e90613eca565b60405180910390a350610a2460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050505050565b610a35612206565b610a3d610736565b8135600003610a78576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610400610a886060830183613cd6565b610a93915085613d3b565b1115610acb576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610aef86868686610ae136889003880188613f4c565b610aea87613fa4565b61258a565b610b1860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b6d576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b75610736565b6001600160a01b038216610b9c5760405163d92e233d60e01b815260040160405180910390fd5b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063c9028a3690610be190849060040161404c565b600060405180830381600087803b158015610bfb57600080fd5b505af1158015610b18573d6000803e3d6000fd5b610c17612206565b610c1f610736565b81600003610c59576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610400610c696060830183613cd6565b610c74915085613d3b565b1115610cac576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610aef8686868660405180604001604052808881526020016001151581525086610aea90613fa4565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d22576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d2a610736565b6001600160a01b038316610d515760405163d92e233d60e01b815260040160405180910390fd5b83600003610d8b576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dbe57506001600160a01b03831630145b15610df5576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610dff8484612771565b6000546040517f5bcfd6160000000000000000000000000000000000000000000000000000000081526001600160a01b0380861692635bcfd61692610e50928a9216908990889088906004016140bc565b600060405180830381600087803b158015610e6a57600080fd5b505af1158015610e7e573d6000803e3d6000fd5b505050505050505050565b610e91612206565b610e99610736565b8651600003610ebb5760405163d92e233d60e01b815260040160405180910390fd5b85600003610ef5576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8135600003610f30576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610400610f406060830183613cd6565b610f4b915085613d3b565b1115610f83576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fa18673735b14bb79463307aacbed86daf3322b1e6226ab612771565b60008054604051879233927f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c92610ff0928d926001600160a01b0316918d919081908d908d908d908d90614158565b60405180910390a3610a2460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461105b8161293f565b6110658383612949565b50505050565b6001600160a01b03811633146110ad576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110b78282612a36565b505050565b6110c4612206565b6110cc610736565b85516000036110ee5760405163d92e233d60e01b815260040160405180910390fd5b84600003611128576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006111386060830183613cd6565b611143915084613d3b565b111561117b576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111998573735b14bb79463307aacbed86daf3322b1e6226ab612771565b60008054604080518082018252838152600160208201529051879333937f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c936111fc938d936001600160a01b03909316928d92909182918d918d91908d90613eca565b60405180910390a3610b1860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6112578161293f565b61125f612afa565b50565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156112ad5750825b905060008267ffffffffffffffff1660011480156112ca5750303b155b9050811580156112d8575080155b1561130f576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156113705784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038716158061138d57506001600160a01b038616155b156113ab5760405163d92e233d60e01b815260040160405180910390fd5b6113b3612b8a565b6113bb612b8a565b6113c3612b92565b6113cb612ba2565b6113d6600087612949565b506114017f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87612949565b50600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0389161790558315610a245784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050505050565b6114a6612bb2565b6114af82612c82565b6114b98282612c8d565b5050565b60006114c7612db1565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b6114f4612206565b6114fc610736565b865160000361151e5760405163d92e233d60e01b815260040160405180910390fd5b85600003611558576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8135600003611593576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006115a36060830183613cd6565b6115ae915085613d3b565b11156115e6576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006115f487878535612287565b90506000336001600160a01b03167f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c8a898b868c6001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611665573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116899190613d75565b8c8c8c8c6040516109f299989796959493929190614158565b6116aa612206565b6116b2610736565b83516000036116d45760405163d92e233d60e01b815260040160405180910390fd5b8260000361170e576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61040061171e6060830183613cd6565b90501115611758576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006117648484612e13565b90506000336001600160a01b03167f5d7cd8ae449a6b25de63f10534ddd17d8dd3e79c7aa5f28964b7a7c760258d9787868886896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f99190613d75565b60405180604001604052808c6001600160a01b031663091d27886040518163ffffffff1660e01b8152600401602060405180830381865afa158015611842573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118669190613d75565b81526001602090910152604051611884969594939291908c906141b0565b60405180910390a35061106560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6118e08161293f565b61125f612e81565b6118f0612206565b6118f8610736565b835160000361191a5760405163d92e233d60e01b815260040160405180910390fd5b82600003611954576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006119646060830183613cd6565b9050111561199e576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119bc8373735b14bb79463307aacbed86daf3322b1e6226ab612771565b60008054604080518082018252838152600160208201529051859333937f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c93611a1b938b936001600160a01b03909316928b9290918291908b906141b0565b60405180910390a361106560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611a99576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611aa1610736565b6001600160a01b0384161580611abe57506001600160a01b038216155b15611adc5760405163d92e233d60e01b815260040160405180910390fd5b82600003611b16576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821673735b14bb79463307aacbed86daf3322b1e6226ab1480611b4957506001600160a01b03821630145b15611b80576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152602482018590528516906347e7ef24906044016020604051808303816000875af1158015611be8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0c9190614232565b611c42576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063c9028a3690611c8790849060040161404c565b600060405180830381600087803b158015611ca157600080fd5b505af1158015611cb5573d6000803e3d6000fd5b5050505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611d0c576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d14610736565b6001600160a01b0385161580611d3157506001600160a01b038316155b15611d4f5760405163d92e233d60e01b815260040160405180910390fd5b6040517f5bcfd6160000000000000000000000000000000000000000000000000000000081526001600160a01b03841690635bcfd61690611d9c90899089908990889088906004016140bc565b600060405180830381600087803b158015611db657600080fd5b505af1158015611dca573d6000803e3d6000fd5b50505050505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611e23576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e2b610736565b6001600160a01b0385161580611e4857506001600160a01b038316155b15611e665760405163d92e233d60e01b815260040160405180910390fd5b83600003611ea0576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480611ed357506001600160a01b03831630145b15611f0a576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015611f72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f969190614232565b611d4f576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546120068161293f565b6110658383612a36565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461205d576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612065610736565b6001600160a01b038316158061208257506001600160a01b038116155b156120a05760405163d92e233d60e01b815260040160405180910390fd5b816000036120da576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab148061210d57506001600160a01b03811630145b15612144576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af11580156121ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d09190614232565b6110b7576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01612281576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6000806000846001600160a01b031663fc5fecd5856040518263ffffffff1660e01b81526004016122ba91815260200190565b6040805180830381865afa1580156122d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122fa919061424f565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561237f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a39190614232565b6123d9576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018790526001600160a01b038616906323b872dd906064016020604051808303816000875af1158015612445573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124699190614232565b61249f576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018790526001600160a01b038616906342966c68906024016020604051808303816000875af11580156124ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125239190614232565b612559576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b85516000036125ac5760405163d92e233d60e01b815260040160405180910390fd5b81516040517ffc5fecd5000000000000000000000000000000000000000000000000000000008152600481019190915260009081906001600160a01b0388169063fc5fecd5906024016040805180830381865afa158015612611573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612635919061424f565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af11580156126ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126de9190614232565b612714576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b866001600160a01b0316336001600160a01b03167f306ee13f48319a123b222c69908e44dcf91abffc20cacc502e3cf5a4ff23e0e48a8989898960405161275f95949392919061427d565b60405180910390a35050505050505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af11580156127e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128059190614232565b61283b576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561289a57600080fd5b505af11580156128ae573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d80600081146128ff576040519150601f19603f3d011682016040523d82523d6000602084013e612904565b606091505b50509050806110b7576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61125f8133612efa565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16612a2c576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556129e23390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610827565b6000915050610827565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615612a2c576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610827565b612b02612f87565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b610792612fe2565b612b9a612fe2565b610792613049565b612baa612fe2565b61079261309a565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480612c4b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612c3f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610792576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006114b98161293f565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612d05575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612d0291810190613d75565b60015b612d4b576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114612da7576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401612d42565b6110b783836130a2565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610792576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061255d8383846001600160a01b031663091d27886040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e7c9190613d75565b612287565b612e89610736565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833612b6c565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166114b9576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401612d42565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610792576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610792576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613051612fe2565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b612564612fe2565b6130ab826130f8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156130f0576110b782826131a0565b6114b9613216565b806001600160a01b03163b600003613147576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401612d42565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516131bd9190614320565b600060405180830381855af49150503d80600081146131f8576040519150601f19603f3d011682016040523d82523d6000602084013e6131fd565b606091505b509150915061320d85838361324e565b95945050505050565b3415610792576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060826132635761325e826132c3565b61255d565b815115801561327a57506001600160a01b0384163b155b156132bc576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401612d42565b508061255d565b8051156132d35780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561331757600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461255d57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261338757600080fd5b813567ffffffffffffffff8111156133a1576133a1613347565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff811182821017156133ee576133ee613347565b60405281815283820160200185101561340657600080fd5b816020850160208301376000918101602001919091529392505050565b6001600160a01b038116811461125f57600080fd5b60008083601f84011261344a57600080fd5b50813567ffffffffffffffff81111561346257600080fd5b60208301915083602082850101111561347a57600080fd5b9250929050565b600060a0828403121561349357600080fd5b50919050565b600080600080600080600060c0888a0312156134b457600080fd5b873567ffffffffffffffff8111156134cb57600080fd5b6134d78a828b01613376565b9750506020880135955060408801356134ef81613423565b9450606088013567ffffffffffffffff81111561350b57600080fd5b6135178a828b01613438565b9095509350506080880135915060a088013567ffffffffffffffff81111561353e57600080fd5b61354a8a828b01613481565b91505092959891949750929550565b60006040828403121561349357600080fd5b60008060008060008060c0878903121561358457600080fd5b863567ffffffffffffffff81111561359b57600080fd5b6135a789828a01613376565b96505060208701356135b881613423565b9450604087013567ffffffffffffffff8111156135d457600080fd5b6135e089828a01613438565b90955093506135f490508860608901613559565b915060a087013567ffffffffffffffff81111561361057600080fd5b61361c89828a01613481565b9150509295509295509295565b60006080828403121561349357600080fd5b6000806040838503121561364e57600080fd5b823561365981613423565b9150602083013567ffffffffffffffff81111561367557600080fd5b61368185828601613629565b9150509250929050565b60008060008060008060a087890312156136a457600080fd5b863567ffffffffffffffff8111156136bb57600080fd5b6136c789828a01613376565b96505060208701356136d881613423565b9450604087013567ffffffffffffffff8111156136f457600080fd5b61370089828a01613438565b90955093505060608701359150608087013567ffffffffffffffff81111561361057600080fd5b60006060828403121561349357600080fd5b60008060008060006080868803121561375157600080fd5b853567ffffffffffffffff81111561376857600080fd5b61377488828901613727565b95505060208601359350604086013561378c81613423565b9250606086013567ffffffffffffffff8111156137a857600080fd5b6137b488828901613438565b969995985093965092949392505050565b6000602082840312156137d757600080fd5b5035919050565b600080600080600080600060e0888a0312156137f957600080fd5b873567ffffffffffffffff81111561381057600080fd5b61381c8a828b01613376565b9750506020880135955060408801359450606088013567ffffffffffffffff81111561384757600080fd5b6138538a828b01613438565b909550935061386790508960808a01613559565b915060c088013567ffffffffffffffff81111561353e57600080fd5b6000806040838503121561389657600080fd5b8235915060208301356138a881613423565b809150509250929050565b60008060008060008060a087890312156138cc57600080fd5b863567ffffffffffffffff8111156138e357600080fd5b6138ef89828a01613376565b9650506020870135945060408701359350606087013567ffffffffffffffff81111561391a57600080fd5b61392689828a01613438565b909450925050608087013567ffffffffffffffff81111561361057600080fd5b6000806040838503121561395957600080fd5b823561396481613423565b915060208301356138a881613423565b6000806040838503121561398757600080fd5b823561399281613423565b9150602083013567ffffffffffffffff8111156139ae57600080fd5b61368185828601613376565b600080600080600080600060e0888a0312156139d557600080fd5b873567ffffffffffffffff8111156139ec57600080fd5b6139f88a828b01613376565b975050602088013595506040880135613a1081613423565b9450606088013567ffffffffffffffff81111561384757600080fd5b60008060008060808587031215613a4257600080fd5b843567ffffffffffffffff811115613a5957600080fd5b613a6587828801613376565b945050602085013592506040850135613a7d81613423565b9150606085013567ffffffffffffffff811115613a9957600080fd5b613aa587828801613481565b91505092959194509250565b60008060008060808587031215613ac757600080fd5b843567ffffffffffffffff811115613ade57600080fd5b613aea87828801613376565b9450506020850135925060408501359150606085013567ffffffffffffffff811115613a9957600080fd5b60008060008060808587031215613b2b57600080fd5b8435613b3681613423565b9350602085013592506040850135613b4d81613423565b9150606085013567ffffffffffffffff811115613b6957600080fd5b613aa587828801613629565b60005b83811015613b90578181015183820152602001613b78565b50506000910152565b60008151808452613bb1816020860160208601613b75565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061255d6020830184613b99565b60008060008060008060a08789031215613c0f57600080fd5b863567ffffffffffffffff811115613c2657600080fd5b613c3289828a01613727565b9650506020870135613c4381613423565b9450604087013593506060870135613c5a81613423565b9250608087013567ffffffffffffffff811115613c7657600080fd5b613c8289828a01613438565b979a9699509497509295939492505050565b600080600060608486031215613ca957600080fd5b8335613cb481613423565b9250602084013591506040840135613ccb81613423565b809150509250925092565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613d0b57600080fd5b83018035915067ffffffffffffffff821115613d2657600080fd5b60200191503681900382131561347a57600080fd5b80820180821115610827577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060208284031215613d8757600080fd5b5051919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b801515811461125f57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613e1a57600080fd5b830160208101925035905067ffffffffffffffff811115613e3a57600080fd5b80360382131561347a57600080fd5b60008135613e5681613423565b6001600160a01b031683526020820135613e6f81613dd7565b151560208401526040820135613e8481613423565b6001600160a01b03166040840152613e9f6060830183613de5565b60a06060860152613eb460a086018284613d8e565b6080948501359590940194909452509092915050565b61012081526000613edf61012083018c613b99565b6001600160a01b038b16602084015289604084015288606084015287608084015282810360a0840152613f13818789613d8e565b855160c08501526020860151151560e085015290505b828103610100840152613f3c8185613e49565b9c9b505050505050505050505050565b60006040828403128015613f5f57600080fd5b506040805190810167ffffffffffffffff81118282101715613f8357613f83613347565b604052823581526020830135613f9881613dd7565b60208201529392505050565b600060a08236031215613fb657600080fd5b60405160a0810167ffffffffffffffff81118282101715613fd957613fd9613347565b6040528235613fe781613423565b81526020830135613ff781613dd7565b6020820152604083013561400a81613423565b6040820152606083013567ffffffffffffffff81111561402957600080fd5b61403536828601613376565b606083015250608092830135928101929092525090565b602081526000823561405d81613423565b6001600160a01b038116602084015250602083013561407b81613423565b6001600160a01b038116604084015250600060408401359050806060840152506140a86060840184613de5565b60808085015261320d60a085018284613d8e565b6080815260006140cc8788613de5565b606060808501526140e160e085018284613d8e565b91505060208801356140f281613423565b6001600160a01b0390811660a085015260408981013560c086015290881660208501528301869052828103606084015261412d818587613d8e565b98975050505050505050565b80358252602081013561414b81613dd7565b8015156020840152505050565b6101208152600061416d61012083018c613b99565b6001600160a01b038b16602084015289604084015288606084015287608084015282810360a08401526141a1818789613d8e565b9050613f2960c0840186614139565b610120815260006141c561012083018a613b99565b6001600160a01b03891660208401528760408401528660608401528560808401528281038060a08501526000825261420c60c0850187805182526020908101511515910152565b60208101610100850152506142246020820185613e49565b9a9950505050505050505050565b60006020828403121561424457600080fd5b815161255d81613dd7565b6000806040838503121561426257600080fd5b825161426d81613423565b6020939093015192949293505050565b60a08152600061429060a0830188613b99565b82810360208401526142a3818789613d8e565b85516040850152602086015115156060850152905082810360808401526001600160a01b0384511681526020840151151560208201526001600160a01b036040850151166040820152606084015160a0606083015261430560a0830182613b99565b90506080850151608083015280925050509695505050505050565b60008251614332818460208701613b75565b919091019291505056fea2646970667358221220597ae6db6f18d4245300a1cb580e9a1210b060ce2b07733306cb0fe29f481fdd64736f6c634300081a0033", } // GatewayZEVMUpgradeTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/math.sol/math.go b/v2/pkg/math.sol/math.go index d52f795de..3a12607e3 100644 --- a/v2/pkg/math.sol/math.go +++ b/v2/pkg/math.sol/math.go @@ -32,7 +32,7 @@ var ( // MathMetaData contains all meta data concerning the Math contract. var MathMetaData = &bind.MetaData{ ABI: "[{\"type\":\"error\",\"name\":\"MathOverflowedMulDiv\",\"inputs\":[]}]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206a7c7177badb1ffa5d746dcaecb2228630fd6d795c607724d5c34ddd7a04b68464736f6c634300081a0033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220963d6a471e72b9bb9993a7857cbf4ef7f6b2ae696bb4d38a8d43cbdf2744b5ab64736f6c634300081a0033", } // MathABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/mockerc20.sol/mockerc20.go b/v2/pkg/mockerc20.sol/mockerc20.go index ebc9f8cfd..9fb9a2a55 100644 --- a/v2/pkg/mockerc20.sol/mockerc20.go +++ b/v2/pkg/mockerc20.sol/mockerc20.go @@ -32,7 +32,7 @@ var ( // 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: "0x6080604052348015600f57600080fd5b5061113e8061001f6000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b41146101d2578063a9059cbb146101da578063d505accf146101ed578063dd62ed3e1461020057600080fd5b80633644e5151461017457806370a082311461017c5780637ecebe00146101b257600080fd5b806318160ddd116100bd57806318160ddd1461013a57806323b872dd1461014c578063313ce5671461015f57600080fd5b806306fdde03146100e4578063095ea7b3146101025780631624f6c614610125575b600080fd5b6100ec610246565b6040516100f99190610b6b565b60405180910390f35b610115610110366004610be2565b6102d8565b60405190151581526020016100f9565b610138610133366004610cdc565b610352565b005b6003545b6040519081526020016100f9565b61011561015a366004610d55565b610451565b60025460405160ff90911681526020016100f9565b61013e6105c5565b61013e61018a366004610d92565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b61013e6101c0366004610d92565b60086020526000908152604090205481565b6100ec6105eb565b6101156101e8366004610be2565b6105fa565b6101386101fb366004610dad565b6106ab565b61013e61020e366004610e18565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b60606000805461025590610e4b565b80601f016020809104026020016040519081016040528092919081815260200182805461028190610e4b565b80156102ce5780601f106102a3576101008083540402835291602001916102ce565b820191906000526020600020905b8154815290600101906020018083116102b157829003601f168201915b5050505050905090565b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103409086815260200190565b60405180910390a35060015b92915050565b60095460ff16156103c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f414c52454144595f494e495449414c495a45440000000000000000000000000060448201526064015b60405180910390fd5b60006103d08482610eed565b5060016103dd8382610eed565b50600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff83161790556104136109b5565b60065561041e6109ce565b6007555050600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905550565b73ffffffffffffffffffffffffffffffffffffffff831660009081526005602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146104e5576104b38184610a71565b73ffffffffffffffffffffffffffffffffffffffff861660009081526005602090815260408083203384529091529020555b73ffffffffffffffffffffffffffffffffffffffff85166000908152600460205260409020546105159084610a71565b73ffffffffffffffffffffffffffffffffffffffff80871660009081526004602052604080822093909355908616815220546105519084610aee565b73ffffffffffffffffffffffffffffffffffffffff80861660008181526004602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906105b29087815260200190565b60405180910390a3506001949350505050565b60006006546105d26109b5565b146105e4576105df6109ce565b905090565b5060075490565b60606001805461025590610e4b565b336000908152600460205260408120546106149083610a71565b336000908152600460205260408082209290925573ffffffffffffffffffffffffffffffffffffffff85168152205461064d9083610aee565b73ffffffffffffffffffffffffffffffffffffffff84166000818152600460205260409081902092909255905133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103409086815260200190565b42841015610715576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064016103bb565b600060016107216105c5565b73ffffffffffffffffffffffffffffffffffffffff8a16600090815260086020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928d928d928d9290919061077c83611017565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810188905260e0016040516020818303038152906040528051906020012060405160200161081d9291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa15801561087b573d6000803e3d6000fd5b5050604051601f19015191505073ffffffffffffffffffffffffffffffffffffffff8116158015906108d857508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b61093e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e455200000000000000000000000000000000000060448201526064016103bb565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526005602090815260408083208b8516808552908352928190208a90555189815291928b16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35050505050505050565b6000610b67806109c763ffffffff8216565b9250505090565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051610a00919061104f565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6610a316109b5565b604080516020810195909552840192909252606083015260808201523060a082015260c00160405160208183030381529060405280519060200120905090565b600081831015610add576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f45524332303a207375627472616374696f6e20756e646572666c6f770000000060448201526064016103bb565b610ae782846110e2565b9392505050565b600080610afb83856110f5565b905083811015610ae7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45524332303a206164646974696f6e206f766572666c6f77000000000000000060448201526064016103bb565b4690565b602081526000825180602084015260005b81811015610b995760208186018101516040868401015201610b7c565b506000604082850101526040601f19601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bdd57600080fd5b919050565b60008060408385031215610bf557600080fd5b610bfe83610bb9565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112610c4c57600080fd5b813567ffffffffffffffff811115610c6657610c66610c0c565b604051601f19603f601f19601f8501160116810181811067ffffffffffffffff82111715610c9657610c96610c0c565b604052818152838201602001851015610cae57600080fd5b816020850160208301376000918101602001919091529392505050565b803560ff81168114610bdd57600080fd5b600080600060608486031215610cf157600080fd5b833567ffffffffffffffff811115610d0857600080fd5b610d1486828701610c3b565b935050602084013567ffffffffffffffff811115610d3157600080fd5b610d3d86828701610c3b565b925050610d4c60408501610ccb565b90509250925092565b600080600060608486031215610d6a57600080fd5b610d7384610bb9565b9250610d8160208501610bb9565b929592945050506040919091013590565b600060208284031215610da457600080fd5b610ae782610bb9565b600080600080600080600060e0888a031215610dc857600080fd5b610dd188610bb9565b9650610ddf60208901610bb9565b95506040880135945060608801359350610dfb60808901610ccb565b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610e2b57600080fd5b610e3483610bb9565b9150610e4260208401610bb9565b90509250929050565b600181811c90821680610e5f57607f821691505b602082108103610e98577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f821115610ee857806000526020600020601f840160051c81016020851015610ec55750805b601f840160051c820191505b81811015610ee55760008155600101610ed1565b50505b505050565b815167ffffffffffffffff811115610f0757610f07610c0c565b610f1b81610f158454610e4b565b84610e9e565b6020601f821160018114610f6d5760008315610f375750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455610ee5565b600084815260208120601f198516915b82811015610f9d5787850151825560209485019460019092019101610f7d565b5084821015610fd957868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361104857611048610fe8565b5060010190565b600080835461105d81610e4b565b60018216801561107457600181146110a7576110d7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831686528115158202860193506110d7565b86600052602060002060005b838110156110cf578154888201526001909101906020016110b3565b505081860193505b509195945050505050565b8181038181111561034c5761034c610fe8565b8082018082111561034c5761034c610fe856fea26469706673582212204e90d1d8dd8ec2d599f9af8961e20f75b3b78e39769fe3350770227fa7f4e7d264736f6c634300081a0033", + Bin: "0x6080604052348015600f57600080fd5b5061113e8061001f6000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b41146101d2578063a9059cbb146101da578063d505accf146101ed578063dd62ed3e1461020057600080fd5b80633644e5151461017457806370a082311461017c5780637ecebe00146101b257600080fd5b806318160ddd116100bd57806318160ddd1461013a57806323b872dd1461014c578063313ce5671461015f57600080fd5b806306fdde03146100e4578063095ea7b3146101025780631624f6c614610125575b600080fd5b6100ec610246565b6040516100f99190610b6b565b60405180910390f35b610115610110366004610be2565b6102d8565b60405190151581526020016100f9565b610138610133366004610cdc565b610352565b005b6003545b6040519081526020016100f9565b61011561015a366004610d55565b610451565b60025460405160ff90911681526020016100f9565b61013e6105c5565b61013e61018a366004610d92565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b61013e6101c0366004610d92565b60086020526000908152604090205481565b6100ec6105eb565b6101156101e8366004610be2565b6105fa565b6101386101fb366004610dad565b6106ab565b61013e61020e366004610e18565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b60606000805461025590610e4b565b80601f016020809104026020016040519081016040528092919081815260200182805461028190610e4b565b80156102ce5780601f106102a3576101008083540402835291602001916102ce565b820191906000526020600020905b8154815290600101906020018083116102b157829003601f168201915b5050505050905090565b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103409086815260200190565b60405180910390a35060015b92915050565b60095460ff16156103c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f414c52454144595f494e495449414c495a45440000000000000000000000000060448201526064015b60405180910390fd5b60006103d08482610eed565b5060016103dd8382610eed565b50600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff83161790556104136109b5565b60065561041e6109ce565b6007555050600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905550565b73ffffffffffffffffffffffffffffffffffffffff831660009081526005602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146104e5576104b38184610a71565b73ffffffffffffffffffffffffffffffffffffffff861660009081526005602090815260408083203384529091529020555b73ffffffffffffffffffffffffffffffffffffffff85166000908152600460205260409020546105159084610a71565b73ffffffffffffffffffffffffffffffffffffffff80871660009081526004602052604080822093909355908616815220546105519084610aee565b73ffffffffffffffffffffffffffffffffffffffff80861660008181526004602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906105b29087815260200190565b60405180910390a3506001949350505050565b60006006546105d26109b5565b146105e4576105df6109ce565b905090565b5060075490565b60606001805461025590610e4b565b336000908152600460205260408120546106149083610a71565b336000908152600460205260408082209290925573ffffffffffffffffffffffffffffffffffffffff85168152205461064d9083610aee565b73ffffffffffffffffffffffffffffffffffffffff84166000818152600460205260409081902092909255905133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103409086815260200190565b42841015610715576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064016103bb565b600060016107216105c5565b73ffffffffffffffffffffffffffffffffffffffff8a16600090815260086020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928d928d928d9290919061077c83611017565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810188905260e0016040516020818303038152906040528051906020012060405160200161081d9291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa15801561087b573d6000803e3d6000fd5b5050604051601f19015191505073ffffffffffffffffffffffffffffffffffffffff8116158015906108d857508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b61093e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e455200000000000000000000000000000000000060448201526064016103bb565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526005602090815260408083208b8516808552908352928190208a90555189815291928b16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35050505050505050565b6000610b67806109c763ffffffff8216565b9250505090565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051610a00919061104f565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6610a316109b5565b604080516020810195909552840192909252606083015260808201523060a082015260c00160405160208183030381529060405280519060200120905090565b600081831015610add576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f45524332303a207375627472616374696f6e20756e646572666c6f770000000060448201526064016103bb565b610ae782846110e2565b9392505050565b600080610afb83856110f5565b905083811015610ae7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45524332303a206164646974696f6e206f766572666c6f77000000000000000060448201526064016103bb565b4690565b602081526000825180602084015260005b81811015610b995760208186018101516040868401015201610b7c565b506000604082850101526040601f19601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bdd57600080fd5b919050565b60008060408385031215610bf557600080fd5b610bfe83610bb9565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112610c4c57600080fd5b813567ffffffffffffffff811115610c6657610c66610c0c565b604051601f19603f601f19601f8501160116810181811067ffffffffffffffff82111715610c9657610c96610c0c565b604052818152838201602001851015610cae57600080fd5b816020850160208301376000918101602001919091529392505050565b803560ff81168114610bdd57600080fd5b600080600060608486031215610cf157600080fd5b833567ffffffffffffffff811115610d0857600080fd5b610d1486828701610c3b565b935050602084013567ffffffffffffffff811115610d3157600080fd5b610d3d86828701610c3b565b925050610d4c60408501610ccb565b90509250925092565b600080600060608486031215610d6a57600080fd5b610d7384610bb9565b9250610d8160208501610bb9565b929592945050506040919091013590565b600060208284031215610da457600080fd5b610ae782610bb9565b600080600080600080600060e0888a031215610dc857600080fd5b610dd188610bb9565b9650610ddf60208901610bb9565b95506040880135945060608801359350610dfb60808901610ccb565b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610e2b57600080fd5b610e3483610bb9565b9150610e4260208401610bb9565b90509250929050565b600181811c90821680610e5f57607f821691505b602082108103610e98577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f821115610ee857806000526020600020601f840160051c81016020851015610ec55750805b601f840160051c820191505b81811015610ee55760008155600101610ed1565b50505b505050565b815167ffffffffffffffff811115610f0757610f07610c0c565b610f1b81610f158454610e4b565b84610e9e565b6020601f821160018114610f6d5760008315610f375750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455610ee5565b600084815260208120601f198516915b82811015610f9d5787850151825560209485019460019092019101610f7d565b5084821015610fd957868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361104857611048610fe8565b5060010190565b600080835461105d81610e4b565b60018216801561107457600181146110a7576110d7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831686528115158202860193506110d7565b86600052602060002060005b838110156110cf578154888201526001909101906020016110b3565b505081860193505b509195945050505050565b8181038181111561034c5761034c610fe8565b8082018082111561034c5761034c610fe856fea2646970667358221220e60976f3145da4401c14d2c6022f76f2d06cfe9e76a0ae4c57e08d3cced9159964736f6c634300081a0033", } // MockERC20ABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/mockerc721.sol/mockerc721.go b/v2/pkg/mockerc721.sol/mockerc721.go index 10b8b6cb3..29ff5fb60 100644 --- a/v2/pkg/mockerc721.sol/mockerc721.go +++ b/v2/pkg/mockerc721.sol/mockerc721.go @@ -32,7 +32,7 @@ var ( // 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: "0x6080604052348015600f57600080fd5b506114b88061001f6000396000f3fe6080604052600436106100dd5760003560e01c80636352211e1161007f578063a22cb46511610059578063a22cb4651461025f578063b88d4fde1461027f578063c87b56dd14610292578063e985e9c5146102b357600080fd5b80636352211e146101fc57806370a082311461021c57806395d89b411461024a57600080fd5b8063095ea7b3116100bb578063095ea7b3146101a157806323b872dd146101b657806342842e0e146101c95780634cd88b76146101dc57600080fd5b806301ffc9a7146100e257806306fdde0314610117578063081812fc14610139575b600080fd5b3480156100ee57600080fd5b506101026100fd366004610e1f565b610309565b60405190151581526020015b60405180910390f35b34801561012357600080fd5b5061012c6103ee565b60405161010e9190610ea7565b34801561014557600080fd5b5061017c610154366004610eba565b60009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010e565b6101b46101af366004610ef7565b610480565b005b6101b46101c4366004610f21565b6105cf565b6101b46101d7366004610f21565b6108c4565b3480156101e857600080fd5b506101b46101f7366004611045565b610a18565b34801561020857600080fd5b5061017c610217366004610eba565b610ace565b34801561022857600080fd5b5061023c6102373660046110ae565b610b5f565b60405190815260200161010e565b34801561025657600080fd5b5061012c610c07565b34801561026b57600080fd5b506101b461027a3660046110c9565b610c16565b6101b461028d366004611105565b610cad565b34801561029e57600080fd5b5061012c6102ad366004610eba565b50606090565b3480156102bf57600080fd5b506101026102ce366004611181565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061039c57507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806103e857507f5b5e139f000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060600080546103fd906111b4565b80601f0160208091040260200160405190810160405280929190818152602001828054610429906111b4565b80156104765780601f1061044b57610100808354040283529160200191610476565b820191906000526020600020905b81548152906001019060200180831161045957829003601f168201915b5050505050905090565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16338114806104e3575073ffffffffffffffffffffffffffffffffffffffff8116600090815260056020908152604080832033845290915290205460ff165b61054e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064015b60405180910390fd5b60008281526004602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff84811691161461065f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f57524f4e475f46524f4d000000000000000000000000000000000000000000006044820152606401610545565b73ffffffffffffffffffffffffffffffffffffffff82166106dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152606401610545565b3373ffffffffffffffffffffffffffffffffffffffff84161480610730575073ffffffffffffffffffffffffffffffffffffffff8316600090815260056020908152604080832033845290915290205460ff165b8061075e575060008181526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1633145b6107c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610545565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081208054916107f583611236565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040812080549161082b8361126b565b90915550506000818152600260209081526040808320805473ffffffffffffffffffffffffffffffffffffffff8088167fffffffffffffffffffffffff000000000000000000000000000000000000000092831681179093556004909452828520805490911690559051849391928716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6108cf8383836105cf565b813b15806109ad57506040517f150b7a020000000000000000000000000000000000000000000000000000000080825233600483015273ffffffffffffffffffffffffffffffffffffffff858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610965573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098991906112a3565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610a13576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610545565b505050565b60065460ff1615610a85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f414c52454144595f494e495449414c495a4544000000000000000000000000006044820152606401610545565b6000610a91838261130e565b506001610a9e828261130e565b5050600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905550565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610b5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152606401610545565b919050565b600073ffffffffffffffffffffffffffffffffffffffff8216610bde576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152606401610545565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6060600180546103fd906111b4565b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610cb88484846105cf565b823b1580610d8257506040517f150b7a02000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290610d1b903390899088908890600401611427565b6020604051808303816000875af1158015610d3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5e91906112a3565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610de8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610545565b50505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610e1c57600080fd5b50565b600060208284031215610e3157600080fd5b8135610e3c81610dee565b9392505050565b6000815180845260005b81811015610e6957602081850181015186830182015201610e4d565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081526000610e3c6020830184610e43565b600060208284031215610ecc57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610b5a57600080fd5b60008060408385031215610f0a57600080fd5b610f1383610ed3565b946020939093013593505050565b600080600060608486031215610f3657600080fd5b610f3f84610ed3565b9250610f4d60208501610ed3565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff841115610fa857610fa8610f5e565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff82111715610ff557610ff5610f5e565b60405283815290508082840185101561100d57600080fd5b83836020830137600060208583010152509392505050565b600082601f83011261103657600080fd5b610e3c83833560208501610f8d565b6000806040838503121561105857600080fd5b823567ffffffffffffffff81111561106f57600080fd5b61107b85828601611025565b925050602083013567ffffffffffffffff81111561109857600080fd5b6110a485828601611025565b9150509250929050565b6000602082840312156110c057600080fd5b610e3c82610ed3565b600080604083850312156110dc57600080fd5b6110e583610ed3565b9150602083013580151581146110fa57600080fd5b809150509250929050565b6000806000806080858703121561111b57600080fd5b61112485610ed3565b935061113260208601610ed3565b925060408501359150606085013567ffffffffffffffff81111561115557600080fd5b8501601f8101871361116657600080fd5b61117587823560208401610f8d565b91505092959194509250565b6000806040838503121561119457600080fd5b61119d83610ed3565b91506111ab60208401610ed3565b90509250929050565b600181811c908216806111c857607f821691505b602082108103611201577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008161124557611245611207565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361129c5761129c611207565b5060010190565b6000602082840312156112b557600080fd5b8151610e3c81610dee565b601f821115610a1357806000526020600020601f840160051c810160208510156112e75750805b601f840160051c820191505b8181101561130757600081556001016112f3565b5050505050565b815167ffffffffffffffff81111561132857611328610f5e565b61133c8161133684546111b4565b846112c0565b6020601f82116001811461138e57600083156113585750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611307565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156113dc57878501518255602094850194600190920191016113bc565b508482101561141857868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b73ffffffffffffffffffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff841660208201528260408201526080606082015260006114786080830184610e43565b969550505050505056fea264697066735822122099247a35709cc46d2d666002ffd5468b85fdf95bb97ff065765f392a4b68498064736f6c634300081a0033", + Bin: "0x6080604052348015600f57600080fd5b506114b88061001f6000396000f3fe6080604052600436106100dd5760003560e01c80636352211e1161007f578063a22cb46511610059578063a22cb4651461025f578063b88d4fde1461027f578063c87b56dd14610292578063e985e9c5146102b357600080fd5b80636352211e146101fc57806370a082311461021c57806395d89b411461024a57600080fd5b8063095ea7b3116100bb578063095ea7b3146101a157806323b872dd146101b657806342842e0e146101c95780634cd88b76146101dc57600080fd5b806301ffc9a7146100e257806306fdde0314610117578063081812fc14610139575b600080fd5b3480156100ee57600080fd5b506101026100fd366004610e1f565b610309565b60405190151581526020015b60405180910390f35b34801561012357600080fd5b5061012c6103ee565b60405161010e9190610ea7565b34801561014557600080fd5b5061017c610154366004610eba565b60009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010e565b6101b46101af366004610ef7565b610480565b005b6101b46101c4366004610f21565b6105cf565b6101b46101d7366004610f21565b6108c4565b3480156101e857600080fd5b506101b46101f7366004611045565b610a18565b34801561020857600080fd5b5061017c610217366004610eba565b610ace565b34801561022857600080fd5b5061023c6102373660046110ae565b610b5f565b60405190815260200161010e565b34801561025657600080fd5b5061012c610c07565b34801561026b57600080fd5b506101b461027a3660046110c9565b610c16565b6101b461028d366004611105565b610cad565b34801561029e57600080fd5b5061012c6102ad366004610eba565b50606090565b3480156102bf57600080fd5b506101026102ce366004611181565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061039c57507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806103e857507f5b5e139f000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060600080546103fd906111b4565b80601f0160208091040260200160405190810160405280929190818152602001828054610429906111b4565b80156104765780601f1061044b57610100808354040283529160200191610476565b820191906000526020600020905b81548152906001019060200180831161045957829003601f168201915b5050505050905090565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16338114806104e3575073ffffffffffffffffffffffffffffffffffffffff8116600090815260056020908152604080832033845290915290205460ff165b61054e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064015b60405180910390fd5b60008281526004602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff84811691161461065f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f57524f4e475f46524f4d000000000000000000000000000000000000000000006044820152606401610545565b73ffffffffffffffffffffffffffffffffffffffff82166106dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152606401610545565b3373ffffffffffffffffffffffffffffffffffffffff84161480610730575073ffffffffffffffffffffffffffffffffffffffff8316600090815260056020908152604080832033845290915290205460ff165b8061075e575060008181526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1633145b6107c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610545565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081208054916107f583611236565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040812080549161082b8361126b565b90915550506000818152600260209081526040808320805473ffffffffffffffffffffffffffffffffffffffff8088167fffffffffffffffffffffffff000000000000000000000000000000000000000092831681179093556004909452828520805490911690559051849391928716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6108cf8383836105cf565b813b15806109ad57506040517f150b7a020000000000000000000000000000000000000000000000000000000080825233600483015273ffffffffffffffffffffffffffffffffffffffff858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610965573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098991906112a3565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610a13576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610545565b505050565b60065460ff1615610a85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f414c52454144595f494e495449414c495a4544000000000000000000000000006044820152606401610545565b6000610a91838261130e565b506001610a9e828261130e565b5050600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905550565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610b5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152606401610545565b919050565b600073ffffffffffffffffffffffffffffffffffffffff8216610bde576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152606401610545565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6060600180546103fd906111b4565b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610cb88484846105cf565b823b1580610d8257506040517f150b7a02000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290610d1b903390899088908890600401611427565b6020604051808303816000875af1158015610d3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5e91906112a3565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610de8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610545565b50505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610e1c57600080fd5b50565b600060208284031215610e3157600080fd5b8135610e3c81610dee565b9392505050565b6000815180845260005b81811015610e6957602081850181015186830182015201610e4d565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081526000610e3c6020830184610e43565b600060208284031215610ecc57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610b5a57600080fd5b60008060408385031215610f0a57600080fd5b610f1383610ed3565b946020939093013593505050565b600080600060608486031215610f3657600080fd5b610f3f84610ed3565b9250610f4d60208501610ed3565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff841115610fa857610fa8610f5e565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff82111715610ff557610ff5610f5e565b60405283815290508082840185101561100d57600080fd5b83836020830137600060208583010152509392505050565b600082601f83011261103657600080fd5b610e3c83833560208501610f8d565b6000806040838503121561105857600080fd5b823567ffffffffffffffff81111561106f57600080fd5b61107b85828601611025565b925050602083013567ffffffffffffffff81111561109857600080fd5b6110a485828601611025565b9150509250929050565b6000602082840312156110c057600080fd5b610e3c82610ed3565b600080604083850312156110dc57600080fd5b6110e583610ed3565b9150602083013580151581146110fa57600080fd5b809150509250929050565b6000806000806080858703121561111b57600080fd5b61112485610ed3565b935061113260208601610ed3565b925060408501359150606085013567ffffffffffffffff81111561115557600080fd5b8501601f8101871361116657600080fd5b61117587823560208401610f8d565b91505092959194509250565b6000806040838503121561119457600080fd5b61119d83610ed3565b91506111ab60208401610ed3565b90509250929050565b600181811c908216806111c857607f821691505b602082108103611201577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008161124557611245611207565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361129c5761129c611207565b5060010190565b6000602082840312156112b557600080fd5b8151610e3c81610dee565b601f821115610a1357806000526020600020601f840160051c810160208510156112e75750805b601f840160051c820191505b8181101561130757600081556001016112f3565b5050505050565b815167ffffffffffffffff81111561132857611328610f5e565b61133c8161133684546111b4565b846112c0565b6020601f82116001811461138e57600083156113585750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611307565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156113dc57878501518255602094850194600190920191016113bc565b508482101561141857868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b73ffffffffffffffffffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff841660208201528260408201526080606082015260006114786080830184610e43565b969550505050505056fea2646970667358221220b6b495c9b63d00818c09eb284b3a3416b0da31aa8127423e4c3a355d7bba2eb164736f6c634300081a0033", } // MockERC721ABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/proxyadmin.sol/proxyadmin.go b/v2/pkg/proxyadmin.sol/proxyadmin.go index d28df1e8c..20fe3adf7 100644 --- a/v2/pkg/proxyadmin.sol/proxyadmin.go +++ b/v2/pkg/proxyadmin.sol/proxyadmin.go @@ -32,7 +32,7 @@ var ( // 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: "0x608060405234801561001057600080fd5b5060405161068438038061068483398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610587806100fd6000396000f3fe60806040526004361061005a5760003560e01c80639623609d116100435780639623609d146100b0578063ad3cb1cc146100c3578063f2fde38b1461011957600080fd5b8063715018a61461005f5780638da5cb5b14610076575b600080fd5b34801561006b57600080fd5b50610074610139565b005b34801561008257600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100746100be366004610364565b61014d565b3480156100cf57600080fd5b5061010c6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a791906104e3565b34801561012557600080fd5b506100746101343660046104fd565b6101e2565b61014161024b565b61014b600061029e565b565b61015561024b565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101ab908690869060040161051a565b6000604051808303818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b5050505050505050565b6101ea61024b565b73ffffffffffffffffffffffffffffffffffffffff811661023f576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6102488161029e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461014b576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610236565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461024857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561037957600080fd5b833561038481610313565b9250602084013561039481610313565b9150604084013567ffffffffffffffff8111156103b057600080fd5b8401601f810186136103c157600080fd5b803567ffffffffffffffff8111156103db576103db610335565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561044757610447610335565b60405281815282820160200188101561045f57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000815180845260005b818110156104a557602081850181015186830182015201610489565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104f6602083018461047f565b9392505050565b60006020828403121561050f57600080fd5b81356104f681610313565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610549604083018461047f565b94935050505056fea2646970667358221220cc8bbfd5df3920285befce3b27271fc70ad0dfb073ae2b9db9df8353b1cc6fff64736f6c634300081a0033", + Bin: "0x608060405234801561001057600080fd5b5060405161068438038061068483398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610587806100fd6000396000f3fe60806040526004361061005a5760003560e01c80639623609d116100435780639623609d146100b0578063ad3cb1cc146100c3578063f2fde38b1461011957600080fd5b8063715018a61461005f5780638da5cb5b14610076575b600080fd5b34801561006b57600080fd5b50610074610139565b005b34801561008257600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100746100be366004610364565b61014d565b3480156100cf57600080fd5b5061010c6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a791906104e3565b34801561012557600080fd5b506100746101343660046104fd565b6101e2565b61014161024b565b61014b600061029e565b565b61015561024b565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101ab908690869060040161051a565b6000604051808303818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b5050505050505050565b6101ea61024b565b73ffffffffffffffffffffffffffffffffffffffff811661023f576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6102488161029e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461014b576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610236565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461024857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561037957600080fd5b833561038481610313565b9250602084013561039481610313565b9150604084013567ffffffffffffffff8111156103b057600080fd5b8401601f810186136103c157600080fd5b803567ffffffffffffffff8111156103db576103db610335565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561044757610447610335565b60405281815282820160200188101561045f57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000815180845260005b818110156104a557602081850181015186830182015201610489565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104f6602083018461047f565b9392505050565b60006020828403121561050f57600080fd5b81356104f681610313565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610549604083018461047f565b94935050505056fea2646970667358221220bfcb42a89a84dac0635a45bd4013ab76b4d822e9c9c757167dcf256da0cea66f64736f6c634300081a0033", } // ProxyAdminABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/receiverevm.sol/receiverevm.go b/v2/pkg/receiverevm.sol/receiverevm.go index f9a243109..618ac8ad8 100644 --- a/v2/pkg/receiverevm.sol/receiverevm.go +++ b/v2/pkg/receiverevm.sol/receiverevm.go @@ -44,8 +44,8 @@ type RevertContext struct { // 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\":\"onCall\",\"inputs\":[{\"name\":\"messageContext\",\"type\":\"tuple\",\"internalType\":\"structMessageContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"onRevert\",\"inputs\":[{\"name\":\"revertContext\",\"type\":\"tuple\",\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"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\":\"ReceivedOnCall\",\"inputs\":[],\"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\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"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: "0x6080604052348015600f57600080fd5b506001600055610ed6806100246000396000f3fe60806040526004361061006e5760003560e01c8063c51316911161004b578063c5131691146100d5578063c9028a36146100f5578063e04d4f9714610115578063f05b6abf1461012857005b8063357fc5a214610077578063676cc054146100975780636ed70169146100c057005b3661007557005b005b34801561008357600080fd5b50610075610092366004610724565b610148565b6100aa6100a5366004610760565b6101de565b6040516100b7919061085b565b60405180910390f35b3480156100cc57600080fd5b50610075610211565b3480156100e157600080fd5b506100756100f0366004610724565b610246565b34801561010157600080fd5b5061007561011036600461086e565b610321565b6100756101233660046109ce565b61035d565b34801561013457600080fd5b50610075610143366004610aba565b6103a1565b6101506103d6565b61017273ffffffffffffffffffffffffffffffffffffffff8316338386610419565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101d96001600055565b505050565b6040516060907f3658b46bab672c7672b69c2f0feda706eabdb7d2231421c96e9049b2db5e7eee90600090a19392505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b61024e6103d6565b600061025b600285610ba4565b905080600003610297576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102b973ffffffffffffffffffffffffffffffffffffffff8416338484610419565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101d96001600055565b7f689a5a5cb55e795ffe4cd8b419cd3bb0a3373974c54d25f64e734d7388b93e9b3382604051610352929190610c28565b60405180910390a150565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610394959493929190610d1a565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103949493929190610da4565b600260005403610412576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526104ae9085906104b4565b50505050565b60006104d673ffffffffffffffffffffffffffffffffffffffff84168361054f565b905080516000141580156104fb5750808060200190518101906104f99190610e67565b155b156101d9576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061055d83836000610564565b9392505050565b6060814710156105a2576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610546565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105cb9190610e84565b60006040518083038185875af1925050503d8060008114610608576040519150601f19603f3d011682016040523d82523d6000602084013e61060d565b606091505b509150915061061d868383610627565b9695505050505050565b60608261063c57610637826106b6565b61055d565b8151158015610660575073ffffffffffffffffffffffffffffffffffffffff84163b155b156106af576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610546565b508061055d565b8051156106c65780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff8116811461071f57600080fd5b919050565b60008060006060848603121561073957600080fd5b83359250610749602085016106fb565b9150610757604085016106fb565b90509250925092565b6000806000838503604081121561077657600080fd5b602081121561078457600080fd5b50839250602084013567ffffffffffffffff8111156107a257600080fd5b8401601f810186136107b357600080fd5b803567ffffffffffffffff8111156107ca57600080fd5b8660208284010111156107dc57600080fd5b939660209190910195509293505050565b60005b838110156108085781810151838201526020016107f0565b50506000910152565b600081518084526108298160208601602086016107ed565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061055d6020830184610811565b60006020828403121561088057600080fd5b813567ffffffffffffffff81111561089757600080fd5b82016080818503121561055d57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561091f5761091f6108a9565b604052919050565b600082601f83011261093857600080fd5b813567ffffffffffffffff811115610952576109526108a9565b61098360207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016108d8565b81815284602083860101111561099857600080fd5b816020850160208301376000918101602001919091529392505050565b80151581146106f857600080fd5b803561071f816109b5565b6000806000606084860312156109e357600080fd5b833567ffffffffffffffff8111156109fa57600080fd5b610a0686828701610927565b935050602084013591506040840135610a1e816109b5565b809150509250925092565b600067ffffffffffffffff821115610a4357610a436108a9565b5060051b60200190565b600082601f830112610a5e57600080fd5b8135610a71610a6c82610a29565b6108d8565b8082825260208201915060208360051b860101925085831115610a9357600080fd5b602085015b83811015610ab0578035835260209283019201610a98565b5095945050505050565b600080600060608486031215610acf57600080fd5b833567ffffffffffffffff811115610ae657600080fd5b8401601f81018613610af757600080fd5b8035610b05610a6c82610a29565b8082825260208201915060208360051b850101925088831115610b2757600080fd5b602084015b83811015610b6957803567ffffffffffffffff811115610b4b57600080fd5b610b5a8b602083890101610927565b84525060209283019201610b2c565b509550505050602084013567ffffffffffffffff811115610b8957600080fd5b610b9586828701610a4d565b925050610757604085016109c3565b600082610bda577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015273ffffffffffffffffffffffffffffffffffffffff610c66836106fb565b16604082015273ffffffffffffffffffffffffffffffffffffffff610c8d602084016106fb565b166060820152600080604084013590508060808401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610cd957600080fd5b830160208101903567ffffffffffffffff811115610cf657600080fd5b803603821315610d0557600080fd5b608060a085015261061d60c085018284610bdf565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610d4f60a0830186610811565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610d9a578151865260209586019590910190600101610d7c565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610e37577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610e22858351610811565b94506020938401939190910190600101610de8565b505050508281036040840152610e4d8186610d68565b915050610e5e606083018415159052565b95945050505050565b600060208284031215610e7957600080fd5b815161055d816109b5565b60008251610e968184602087016107ed565b919091019291505056fea2646970667358221220db940ec4fecaa3b11f71d6cf6ef0ac3141552c5e39d750c1e2295a761a9396ad64736f6c634300081a0033", + ABI: "[{\"type\":\"fallback\",\"stateMutability\":\"payable\"},{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"onCall\",\"inputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structMessageContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"onRevert\",\"inputs\":[{\"name\":\"revertContext\",\"type\":\"tuple\",\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"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\":\"ReceivedOnCall\",\"inputs\":[],\"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\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"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: "0x6080604052348015600f57600080fd5b506001600055610e9e806100246000396000f3fe60806040526004361061006e5760003560e01c8063c51316911161004b578063c5131691146100d5578063c9028a36146100f5578063e04d4f9714610115578063f05b6abf1461012857005b8063357fc5a214610077578063676cc054146100975780636ed70169146100c057005b3661007557005b005b34801561008357600080fd5b506100756100923660046106ec565b610148565b6100aa6100a5366004610728565b6101de565b6040516100b79190610823565b60405180910390f35b3480156100cc57600080fd5b50610075610222565b3480156100e157600080fd5b506100756100f03660046106ec565b610257565b34801561010157600080fd5b50610075610110366004610836565b610332565b610075610123366004610996565b61036e565b34801561013457600080fd5b50610075610143366004610a82565b6103b2565b6101506103e7565b61017273ffffffffffffffffffffffffffffffffffffffff831633838661042a565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101d96001600055565b505050565b6040516060907f3658b46bab672c7672b69c2f0feda706eabdb7d2231421c96e9049b2db5e7eee90600090a1506040805160208101909152600081525b9392505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b61025f6103e7565b600061026c600285610b6c565b9050806000036102a8576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102ca73ffffffffffffffffffffffffffffffffffffffff841633848461042a565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101d96001600055565b7f689a5a5cb55e795ffe4cd8b419cd3bb0a3373974c54d25f64e734d7388b93e9b3382604051610363929190610bf0565b60405180910390a150565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa33348585856040516103a5959493929190610ce2565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103a59493929190610d6c565b600260005403610423576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526104bf9085906104c5565b50505050565b60006104e773ffffffffffffffffffffffffffffffffffffffff841683610560565b9050805160001415801561050c57508080602001905181019061050a9190610e2f565b155b156101d9576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061021b83836000846000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105939190610e4c565b60006040518083038185875af1925050503d80600081146105d0576040519150601f19603f3d011682016040523d82523d6000602084013e6105d5565b606091505b50915091506105e58683836105ef565b9695505050505050565b606082610604576105ff8261067e565b61021b565b8151158015610628575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610677576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610557565b508061021b565b80511561068e5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106e757600080fd5b919050565b60008060006060848603121561070157600080fd5b83359250610711602085016106c3565b915061071f604085016106c3565b90509250925092565b6000806000838503604081121561073e57600080fd5b602081121561074c57600080fd5b50839250602084013567ffffffffffffffff81111561076a57600080fd5b8401601f8101861361077b57600080fd5b803567ffffffffffffffff81111561079257600080fd5b8660208284010111156107a457600080fd5b939660209190910195509293505050565b60005b838110156107d05781810151838201526020016107b8565b50506000910152565b600081518084526107f18160208601602086016107b5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061021b60208301846107d9565b60006020828403121561084857600080fd5b813567ffffffffffffffff81111561085f57600080fd5b82016080818503121561021b57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156108e7576108e7610871565b604052919050565b600082601f83011261090057600080fd5b813567ffffffffffffffff81111561091a5761091a610871565b61094b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016108a0565b81815284602083860101111561096057600080fd5b816020850160208301376000918101602001919091529392505050565b80151581146106c057600080fd5b80356106e78161097d565b6000806000606084860312156109ab57600080fd5b833567ffffffffffffffff8111156109c257600080fd5b6109ce868287016108ef565b9350506020840135915060408401356109e68161097d565b809150509250925092565b600067ffffffffffffffff821115610a0b57610a0b610871565b5060051b60200190565b600082601f830112610a2657600080fd5b8135610a39610a34826109f1565b6108a0565b8082825260208201915060208360051b860101925085831115610a5b57600080fd5b602085015b83811015610a78578035835260209283019201610a60565b5095945050505050565b600080600060608486031215610a9757600080fd5b833567ffffffffffffffff811115610aae57600080fd5b8401601f81018613610abf57600080fd5b8035610acd610a34826109f1565b8082825260208201915060208360051b850101925088831115610aef57600080fd5b602084015b83811015610b3157803567ffffffffffffffff811115610b1357600080fd5b610b228b6020838901016108ef565b84525060209283019201610af4565b509550505050602084013567ffffffffffffffff811115610b5157600080fd5b610b5d86828701610a15565b92505061071f6040850161098b565b600082610ba2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015273ffffffffffffffffffffffffffffffffffffffff610c2e836106c3565b16604082015273ffffffffffffffffffffffffffffffffffffffff610c55602084016106c3565b166060820152600080604084013590508060808401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610ca157600080fd5b830160208101903567ffffffffffffffff811115610cbe57600080fd5b803603821315610ccd57600080fd5b608060a08501526105e560c085018284610ba7565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610d1760a08301866107d9565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610d62578151865260209586019590910190600101610d44565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610dff577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610dea8583516107d9565b94506020938401939190910190600101610db0565b505050508281036040840152610e158186610d30565b915050610e26606083018415159052565b95945050505050565b600060208284031215610e4157600080fd5b815161021b8161097d565b60008251610e5e8184602087016107b5565b919091019291505056fea26469706673582212200208dfaef53d7ec7d471b3a513486f45b234e5fb6727c50beff735b8aa974ee464736f6c634300081a0033", } // ReceiverEVMABI is the input ABI used to generate the binding from. @@ -217,23 +217,23 @@ func (_ReceiverEVM *ReceiverEVMTransactorRaw) Transact(opts *bind.TransactOpts, // OnCall is a paid mutator transaction binding the contract method 0x676cc054. // -// Solidity: function onCall((address) messageContext, bytes message) payable returns(bytes) -func (_ReceiverEVM *ReceiverEVMTransactor) OnCall(opts *bind.TransactOpts, messageContext MessageContext, message []byte) (*types.Transaction, error) { - return _ReceiverEVM.contract.Transact(opts, "onCall", messageContext, message) +// Solidity: function onCall((address) , bytes ) payable returns(bytes) +func (_ReceiverEVM *ReceiverEVMTransactor) OnCall(opts *bind.TransactOpts, arg0 MessageContext, arg1 []byte) (*types.Transaction, error) { + return _ReceiverEVM.contract.Transact(opts, "onCall", arg0, arg1) } // OnCall is a paid mutator transaction binding the contract method 0x676cc054. // -// Solidity: function onCall((address) messageContext, bytes message) payable returns(bytes) -func (_ReceiverEVM *ReceiverEVMSession) OnCall(messageContext MessageContext, message []byte) (*types.Transaction, error) { - return _ReceiverEVM.Contract.OnCall(&_ReceiverEVM.TransactOpts, messageContext, message) +// Solidity: function onCall((address) , bytes ) payable returns(bytes) +func (_ReceiverEVM *ReceiverEVMSession) OnCall(arg0 MessageContext, arg1 []byte) (*types.Transaction, error) { + return _ReceiverEVM.Contract.OnCall(&_ReceiverEVM.TransactOpts, arg0, arg1) } // OnCall is a paid mutator transaction binding the contract method 0x676cc054. // -// Solidity: function onCall((address) messageContext, bytes message) payable returns(bytes) -func (_ReceiverEVM *ReceiverEVMTransactorSession) OnCall(messageContext MessageContext, message []byte) (*types.Transaction, error) { - return _ReceiverEVM.Contract.OnCall(&_ReceiverEVM.TransactOpts, messageContext, message) +// Solidity: function onCall((address) , bytes ) payable returns(bytes) +func (_ReceiverEVM *ReceiverEVMTransactorSession) OnCall(arg0 MessageContext, arg1 []byte) (*types.Transaction, error) { + return _ReceiverEVM.Contract.OnCall(&_ReceiverEVM.TransactOpts, arg0, arg1) } // OnRevert is a paid mutator transaction binding the contract method 0xc9028a36. diff --git a/v2/pkg/safeconsole.sol/safeconsole.go b/v2/pkg/safeconsole.sol/safeconsole.go index 3cf1b2bcb..ceb3d6820 100644 --- a/v2/pkg/safeconsole.sol/safeconsole.go +++ b/v2/pkg/safeconsole.sol/safeconsole.go @@ -32,7 +32,7 @@ var ( // SafeconsoleMetaData contains all meta data concerning the Safeconsole contract. var SafeconsoleMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d4221554974a4e0dc985d1149714f316b6f2fae2d85dacb3dfeffd47b215b9d964736f6c634300081a0033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220588cd77c00d573cc1ef69bc54587209684829ef06bf561eb5a6f4793f352027364736f6c634300081a0033", } // SafeconsoleABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/safeerc20.sol/safeerc20.go b/v2/pkg/safeerc20.sol/safeerc20.go index 17e51803e..74315cc0c 100644 --- a/v2/pkg/safeerc20.sol/safeerc20.go +++ b/v2/pkg/safeerc20.sol/safeerc20.go @@ -32,7 +32,7 @@ var ( // 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: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202905cd55850035ea20b97ad43d92b09d94f8c95b651a8733a0f08394084a88ec64736f6c634300081a0033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d1e8ca78c7d9a8f7956969bf9e18a306c7fbad4315793a417432f76f34b799d864736f6c634300081a0033", } // SafeERC20ABI 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 9fe2b0409..1e2707a94 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\":\"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\":\"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: "0x6080604052348015600f57600080fd5b50604051610a2c380380610a2c833981016040819052602c916050565b600080546001600160a01b0319166001600160a01b0392909216919091179055607e565b600060208284031215606157600080fd5b81516001600160a01b0381168114607757600080fd5b9392505050565b61099f8061008d6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b5780637a34d8bb146100a4575b600080fd5b6100596100543660046105f5565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b2366004610695565b610313565b60008383836040516024016100ce93929190610791565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490915073ffffffffffffffffffffffffffffffffffffffff8087169163095ea7b391166101758960026107bb565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016020604051808303816000875af11580156101e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020991906107fb565b61023f576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160a0810182526103218082526001602080840182905283850192909252835191820184526000808352606084019290925260808301829052905492517f048ae42c000000000000000000000000000000000000000000000000000000008152919273ffffffffffffffffffffffffffffffffffffffff169163048ae42c916102d7918c918c918c9189918990600401610894565b600060405180830381600087803b1580156102f157600080fd5b505af1158015610305573d6000803e3d6000fd5b505050505050505050505050565b600083838360405160240161032a93929190610791565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f9700000000000000000000000000000000000000000000000000000000179052815160a081018352610321808252600182840181905282850191909152835192830184526000808452606083019390935260808201839052915492517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810183905293945092909188169063095ea7b3906044016020604051808303816000875af1158015610455573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047991906107fb565b506000546040517f1cb5ea7500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690631cb5ea75906102d7908b908b90889087908990600401610902565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261051857600080fd5b81356020830160008067ffffffffffffffff841115610539576105396104d8565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff82111715610586576105866104d8565b60405283815290508082840187101561059e57600080fd5b838360208301376000602085830101528094505050505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146105df57600080fd5b919050565b80151581146105f257600080fd5b50565b60008060008060008060c0878903121561060e57600080fd5b863567ffffffffffffffff81111561062557600080fd5b61063189828a01610507565b96505060208701359450610647604088016105bb565b9350606087013567ffffffffffffffff81111561066357600080fd5b61066f89828a01610507565b9350506080870135915060a0870135610687816105e4565b809150509295509295509295565b600080600080600060a086880312156106ad57600080fd5b853567ffffffffffffffff8111156106c457600080fd5b6106d088828901610507565b9550506106df602087016105bb565b9350604086013567ffffffffffffffff8111156106fb57600080fd5b61070788828901610507565b93505060608601359150608086013561071f816105e4565b809150509295509295909350565b6000815180845260005b8181101561075357602081850181015186830182015201610737565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6060815260006107a4606083018661072d565b602083019490945250901515604090910152919050565b808201808211156107f5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b60006020828403121561080d57600080fd5b8151610818816105e4565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff815116825260208101511515602083015273ffffffffffffffffffffffffffffffffffffffff60408201511660408301526000606082015160a0606085015261088060a085018261072d565b608093840151949093019390935250919050565b60c0815260006108a760c083018961072d565b87602084015273ffffffffffffffffffffffffffffffffffffffff8716604084015282810360608401526108db818761072d565b905084608084015282810360a08401526108f5818561081f565b9998505050505050505050565b60a08152600061091560a083018861072d565b73ffffffffffffffffffffffffffffffffffffffff871660208401528281036040840152610943818761072d565b9050846060840152828103608084015261095d818561081f565b9897505050505050505056fea26469706673582212205fa8242e260218029afa3d89782c3c4b8f593abd55a4428515fbfa47b0bbebf764736f6c634300081a0033", + Bin: "0x6080604052348015600f57600080fd5b50604051610a6f380380610a6f833981016040819052602c916050565b600080546001600160a01b0319166001600160a01b0392909216919091179055607e565b600060208284031215606157600080fd5b81516001600160a01b0381168114607757600080fd5b9392505050565b6109e28061008d6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b5780637a34d8bb146100a4575b600080fd5b61005961005436600461061e565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b23660046106be565b61032a565b60008383836040516024016100ce939291906107ba565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490915073ffffffffffffffffffffffffffffffffffffffff8087169163095ea7b391166101758960026107e4565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016020604051808303816000875af11580156101e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102099190610824565b61023f576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160a081018252610321808252600160208084018290528385019290925283518083018552600080825260608501919091526080840181905284518086018652828152928301919091525492517f7b15118b0000000000000000000000000000000000000000000000000000000081529192909173ffffffffffffffffffffffffffffffffffffffff90911690637b15118b906102ed908c908c908c90899088908a906004016108bd565b600060405180830381600087803b15801561030757600080fd5b505af115801561031b573d6000803e3d6000fd5b50505050505050505050505050565b6000838383604051602401610341939291906107ba565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f9700000000000000000000000000000000000000000000000000000000179052815160a081018352610321808252600182840181905282850191909152835192830184526000808452606083019390935260808201839052915492517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810183905293945092909188169063095ea7b3906044016020604051808303816000875af115801561046c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104909190610824565b506040805180820182528281526001602082015260005491517f06cb8983000000000000000000000000000000000000000000000000000000008152909173ffffffffffffffffffffffffffffffffffffffff16906306cb8983906102ed908c908c90899087908a90600401610938565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261054157600080fd5b81356020830160008067ffffffffffffffff84111561056257610562610501565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff821117156105af576105af610501565b6040528381529050808284018710156105c757600080fd5b838360208301376000602085830101528094505050505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461060857600080fd5b919050565b801515811461061b57600080fd5b50565b60008060008060008060c0878903121561063757600080fd5b863567ffffffffffffffff81111561064e57600080fd5b61065a89828a01610530565b96505060208701359450610670604088016105e4565b9350606087013567ffffffffffffffff81111561068c57600080fd5b61069889828a01610530565b9350506080870135915060a08701356106b08161060d565b809150509295509295509295565b600080600080600060a086880312156106d657600080fd5b853567ffffffffffffffff8111156106ed57600080fd5b6106f988828901610530565b955050610708602087016105e4565b9350604086013567ffffffffffffffff81111561072457600080fd5b61073088828901610530565b9350506060860135915060808601356107488161060d565b809150509295509295909350565b6000815180845260005b8181101561077c57602081850181015186830182015201610760565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6060815260006107cd6060830186610756565b602083019490945250901515604090910152919050565b8082018082111561081e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b60006020828403121561083657600080fd5b81516108418161060d565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff815116825260208101511515602083015273ffffffffffffffffffffffffffffffffffffffff60408201511660408301526000606082015160a060608501526108a960a0850182610756565b608093840151949093019390935250919050565b60e0815260006108d060e0830189610756565b87602084015273ffffffffffffffffffffffffffffffffffffffff8716604084015282810360608401526109048187610756565b855160808501526020860151151560a0850152905082810360c084015261092b8185610848565b9998505050505050505050565b60c08152600061094b60c0830188610756565b73ffffffffffffffffffffffffffffffffffffffff8716602084015282810360408401526109798187610756565b85516060850152602086015115156080850152905082810360a08401526109a08185610848565b9897505050505050505056fea26469706673582212209f622dcab5d8978e2fd5899f3e29df8a3e10b78ba00381cd9537eaa5c325f63464736f6c634300081a0033", } // SenderZEVMABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/signedmath.sol/signedmath.go b/v2/pkg/signedmath.sol/signedmath.go index 21f12ae18..9c6e5e948 100644 --- a/v2/pkg/signedmath.sol/signedmath.go +++ b/v2/pkg/signedmath.sol/signedmath.go @@ -32,7 +32,7 @@ var ( // SignedMathMetaData contains all meta data concerning the SignedMath contract. var SignedMathMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c5f7b2058a3e4c3af57ce92ec918eeccbaefc335e856f5b362cad07b02fb846c64736f6c634300081a0033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a87a5c1924e64adb1051b7a29a90b700930b925dbef14d04d8cf0c44e29ff43064736f6c634300081a0033", } // SignedMathABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/src/strings.sol/strings.go b/v2/pkg/src/strings.sol/strings.go index 0e9d5959c..446816d68 100644 --- a/v2/pkg/src/strings.sol/strings.go +++ b/v2/pkg/src/strings.sol/strings.go @@ -32,7 +32,7 @@ var ( // StringsMetaData contains all meta data concerning the Strings contract. var StringsMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f960653a4fbb8813a227a099e11ce81dff7d1017a2bc6ca171ef698ebeba3c2664736f6c634300081a0033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209ec46b1ac43fb4e77fe34b7e51558a7c925c0f3b9a4a1987de4140814857fdc964736f6c634300081a0033", } // StringsABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/stderror.sol/stderror.go b/v2/pkg/stderror.sol/stderror.go index eae8030d7..a82e30b80 100644 --- a/v2/pkg/stderror.sol/stderror.go +++ b/v2/pkg/stderror.sol/stderror.go @@ -32,7 +32,7 @@ var ( // 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: "0x6102c9610039600b82828239805160001a607314602c57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100ad5760003560e01c8063986c5f6811610080578063b67689da11610065578063b67689da146100f8578063d160e4de14610100578063fa784a441461010857600080fd5b8063986c5f68146100e8578063b22dc54d146100f057600080fd5b806305ee8612146100b257806310332977146100d05780631de45560146100d85780638995290f146100e0575b600080fd5b6100ba610110565b6040516100c79190610227565b60405180910390f35b6100ba610197565b6100ba6101a9565b6100ba6101bb565b6100ba6101cd565b6100ba6101df565b6100ba6101f1565b6100ba610203565b6100ba610215565b604051603260248201526044015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f4e487b710000000000000000000000000000000000000000000000000000000017905281565b6040516001602482015260440161011e565b6040516021602482015260440161011e565b6040516011602482015260440161011e565b6040516041602482015260440161011e565b6040516031602482015260440161011e565b6040516051602482015260440161011e565b6040516022602482015260440161011e565b6040516012602482015260440161011e565b602081526000825180602084015260005b818110156102555760208186018101516040868401015201610238565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168401019150509291505056fea26469706673582212205a231584a6f904510d30e1e9640c6ee4f02df82512523f20aa2706966fcef00364736f6c634300081a0033", + Bin: "0x6102c9610039600b82828239805160001a607314602c57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100ad5760003560e01c8063986c5f6811610080578063b67689da11610065578063b67689da146100f8578063d160e4de14610100578063fa784a441461010857600080fd5b8063986c5f68146100e8578063b22dc54d146100f057600080fd5b806305ee8612146100b257806310332977146100d05780631de45560146100d85780638995290f146100e0575b600080fd5b6100ba610110565b6040516100c79190610227565b60405180910390f35b6100ba610197565b6100ba6101a9565b6100ba6101bb565b6100ba6101cd565b6100ba6101df565b6100ba6101f1565b6100ba610203565b6100ba610215565b604051603260248201526044015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f4e487b710000000000000000000000000000000000000000000000000000000017905281565b6040516001602482015260440161011e565b6040516021602482015260440161011e565b6040516011602482015260440161011e565b6040516041602482015260440161011e565b6040516031602482015260440161011e565b6040516051602482015260440161011e565b6040516022602482015260440161011e565b6040516012602482015260440161011e565b602081526000825180602084015260005b818110156102555760208186018101516040868401015201610238565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168401019150509291505056fea26469706673582212207fb7cfabfc66edcd3015bba7f9f51fdd2883c3b6db832f21033426e3c6440d1e64736f6c634300081a0033", } // StdErrorABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/stdjson.sol/stdjson.go b/v2/pkg/stdjson.sol/stdjson.go index 2fe547f27..fc003ee3f 100644 --- a/v2/pkg/stdjson.sol/stdjson.go +++ b/v2/pkg/stdjson.sol/stdjson.go @@ -32,7 +32,7 @@ var ( // StdJsonMetaData contains all meta data concerning the StdJson contract. var StdJsonMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200e65061a855d97f7d59ec1c080287137f9ca844d5e9bc23cd671cfeb9f57d64864736f6c634300081a0033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b6e353702d0f0dddd10f0ce94444a35e95b2aee9a4660942d783f6b0d8a245c564736f6c634300081a0033", } // StdJsonABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/stdmath.sol/stdmath.go b/v2/pkg/stdmath.sol/stdmath.go index cea5751dd..8d9d8391e 100644 --- a/v2/pkg/stdmath.sol/stdmath.go +++ b/v2/pkg/stdmath.sol/stdmath.go @@ -32,7 +32,7 @@ var ( // StdMathMetaData contains all meta data concerning the StdMath contract. var StdMathMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122079410ea42d5757ed2190c7bdace59cb6c58194513f613a3540c4102554babc8b64736f6c634300081a0033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f3aff2617b7038797f305c76f8741261b413725b2ba53dd2c28c254383a7693364736f6c634300081a0033", } // StdMathABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/stdstorage.sol/stdstorage.go b/v2/pkg/stdstorage.sol/stdstorage.go index 8c92f9463..3a025c0f0 100644 --- a/v2/pkg/stdstorage.sol/stdstorage.go +++ b/v2/pkg/stdstorage.sol/stdstorage.go @@ -32,7 +32,7 @@ var ( // StdStorageMetaData contains all meta data concerning the StdStorage contract. var StdStorageMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122052e6b783962347151aae134005712a28520414b5f1396f6410b6024c19f6f4ee64736f6c634300081a0033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220517bc4ea708b0165770f344549f4f7a76709409f0e23343b33e85882a7dff6e064736f6c634300081a0033", } // StdStorageABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/stdstorage.sol/stdstoragesafe.go b/v2/pkg/stdstorage.sol/stdstoragesafe.go index 5312eac2c..74c454449 100644 --- a/v2/pkg/stdstorage.sol/stdstoragesafe.go +++ b/v2/pkg/stdstorage.sol/stdstoragesafe.go @@ -32,7 +32,7 @@ var ( // 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: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200300b2a3fefbb75d98e75f1192239d81ef17eec1b8e4e59220733faaf4ff33ab64736f6c634300081a0033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206f64b7e1dbbc6026c24d52f1fa6a0ced3aba89a87747eea738880443683416a864736f6c634300081a0033", } // StdStorageSafeABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/stdstyle.sol/stdstyle.go b/v2/pkg/stdstyle.sol/stdstyle.go index 36a94e9f3..5f853fead 100644 --- a/v2/pkg/stdstyle.sol/stdstyle.go +++ b/v2/pkg/stdstyle.sol/stdstyle.go @@ -32,7 +32,7 @@ var ( // StdStyleMetaData contains all meta data concerning the StdStyle contract. var StdStyleMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202e87c53a1d8d5d4cf46c2aa13d7ca3c141c12588948aaff694d538e11f1cf47964736f6c634300081a0033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220da77bfdff45c9d88ebc22748e1d030783bcaf827bf87b1eebc0f20a0aae272f664736f6c634300081a0033", } // StdStyleABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/stdtoml.sol/stdtoml.go b/v2/pkg/stdtoml.sol/stdtoml.go index e22dbe19a..94cd66523 100644 --- a/v2/pkg/stdtoml.sol/stdtoml.go +++ b/v2/pkg/stdtoml.sol/stdtoml.go @@ -32,7 +32,7 @@ var ( // StdTomlMetaData contains all meta data concerning the StdToml contract. var StdTomlMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122093d434d1d4cb2498e69eb05bb6889fee4144718efeb1bd11e20b79e0fc236ddd64736f6c634300081a0033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b350c1c366d1a4f2b0ff702c025d11a23e3d5d32097453b31856e19f4057390964736f6c634300081a0033", } // StdTomlABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/storageslot.sol/storageslot.go b/v2/pkg/storageslot.sol/storageslot.go index 02e886706..d69482434 100644 --- a/v2/pkg/storageslot.sol/storageslot.go +++ b/v2/pkg/storageslot.sol/storageslot.go @@ -32,7 +32,7 @@ var ( // StorageSlotMetaData contains all meta data concerning the StorageSlot contract. var StorageSlotMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205d0bf8e71b2a7bb0f0188cffead6216cd7575e73e038fb0d7d168b3aa898df7264736f6c634300081a0033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f6b735656ad649ec603836af57ef04367bea1722d6899420b8d77d42cd9f202364736f6c634300081a0033", } // StorageSlotABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/strings.sol/strings.go b/v2/pkg/strings.sol/strings.go index 916abefe0..4dc8cff8d 100644 --- a/v2/pkg/strings.sol/strings.go +++ b/v2/pkg/strings.sol/strings.go @@ -32,7 +32,7 @@ var ( // 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: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122054df1ae034bd3cf22b4b583f6a2b4432114d224f44ffb3b28e5f3c6323e3e27f64736f6c634300081a0033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204d82302a12b7f0a06328a3c9a77ba505da0c3bcc1aaa5d00f99298af997827de64736f6c634300081a0033", } // StringsABI 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 739ed85bd..4c75699a5 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: "0x60c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea2646970667358221220b13ccf97234dc9b7f658234f9bf37a57d08f465bb99c431b865174e7a399a30764736f6c634300081a0033", + Bin: "0x60c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea2646970667358221220eaa287ea22d82335c1d97ef661cb17f1296902daa41cca34de107966248e954364736f6c634300081a0033", } // 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 6861c67e3..255ef3d87 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: "0x608060405234801561001057600080fd5b50604051610b3f380380610b3f83398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a348061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fd565b6103a0565b6101416101da36600461081f565b610419565b6101046101ed366004610841565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610884565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108b0565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e90610366908490899089908990899060040161091b565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff8111156107b257600080fd5b8601601f810188136107c357600080fd5b803567ffffffffffffffff8111156107da57600080fd5b8860208284010111156107ec57600080fd5b959894975092955050506020019190565b60006020828403121561080f57600080fd5b61081882610737565b9392505050565b6000806040838503121561083257600080fd5b50508035926020909101359150565b60008060006060848603121561085657600080fd5b61085f84610737565b925061086d60208501610737565b915061087b60408501610737565b90509250925092565b6000806040838503121561089757600080fd5b823591506108a760208401610737565b90509250929050565b6000602082840312156108c257600080fd5b8151801515811461081857600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610953576020818401810151610100878401015201610935565b5060008482016101000152602089015173ffffffffffffffffffffffffffffffffffffffff811660a0860152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168401915050604088015160c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401526101008382030160608401526109f2610100820185876108d2565b9897505050505050505056fea26469706673582212201600a256a4ffaaa4ceb3b81d9f67be9d8f33665245b35eeba52fdc70200176a764736f6c634300081a0033", + Bin: "0x608060405234801561001057600080fd5b50604051610b3f380380610b3f83398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a348061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fd565b6103a0565b6101416101da36600461081f565b610419565b6101046101ed366004610841565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610884565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108b0565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e90610366908490899089908990899060040161091b565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff8111156107b257600080fd5b8601601f810188136107c357600080fd5b803567ffffffffffffffff8111156107da57600080fd5b8860208284010111156107ec57600080fd5b959894975092955050506020019190565b60006020828403121561080f57600080fd5b61081882610737565b9392505050565b6000806040838503121561083257600080fd5b50508035926020909101359150565b60008060006060848603121561085657600080fd5b61085f84610737565b925061086d60208501610737565b915061087b60408501610737565b90509250925092565b6000806040838503121561089757600080fd5b823591506108a760208401610737565b90509250929050565b6000602082840312156108c257600080fd5b8151801515811461081857600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610953576020818401810151610100878401015201610935565b5060008482016101000152602089015173ffffffffffffffffffffffffffffffffffffffff811660a0860152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168401915050604088015160c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401526101008382030160608401526109f2610100820185876108d2565b9897505050505050505056fea2646970667358221220eb281f71b1a10df3d88243dcf9e9ff7f57e8f4bc6018408c57e8ef3bb671313d64736f6c634300081a0033", } // SystemContractMockABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/testerc20.sol/testerc20.go b/v2/pkg/testerc20.sol/testerc20.go index 4d4335255..08235a3cd 100644 --- a/v2/pkg/testerc20.sol/testerc20.go +++ b/v2/pkg/testerc20.sol/testerc20.go @@ -32,7 +32,7 @@ var ( // 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: "0x608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220a043c41353215fce25ecb67a8a4f6f724aaa86dea8dcb0a6975bfb1f10ff3beb64736f6c634300081a0033", + Bin: "0x608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212205f76808fb3dc6dacf4bd766b2d0bf9d6beb64856c952cec8e267368511bd936a64736f6c634300081a0033", } // TestERC20ABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/testuniversalcontract.sol/testuniversalcontract.go b/v2/pkg/testuniversalcontract.sol/testuniversalcontract.go index c13398660..318ab40c2 100644 --- a/v2/pkg/testuniversalcontract.sol/testuniversalcontract.go +++ b/v2/pkg/testuniversalcontract.sol/testuniversalcontract.go @@ -46,8 +46,8 @@ type RevertContext struct { // TestUniversalContractMetaData contains all meta data concerning the TestUniversalContract contract. var TestUniversalContractMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"fallback\",\"stateMutability\":\"payable\"},{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"onCall\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structMessageContext\",\"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\":\"revertContext\",\"type\":\"tuple\",\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"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\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false}]", - Bin: "0x6080604052348015600f57600080fd5b5061061b8061001f6000396000f3fe60806040526004361061002a5760003560e01c80635bcfd61614610033578063c9028a361461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e366004610151565b610073565b34801561005f57600080fd5b5061003161006e36600461020e565b6100ee565b6060811561008a576100878284018461027f565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610375565b6100c560408a0160208b016103e1565b896040013533866040516100de96959493929190610445565b60405180910390a1505050505050565b7fd75bb509c8f32a725aac99ac5c4541060dbfb889a3aca8314d6f00395618c4c48160405161011d9190610507565b60405180910390a150565b803573ffffffffffffffffffffffffffffffffffffffff8116811461014c57600080fd5b919050565b60008060008060006080868803121561016957600080fd5b853567ffffffffffffffff81111561018057600080fd5b86016060818903121561019257600080fd5b94506101a060208701610128565b935060408601359250606086013567ffffffffffffffff8111156101c357600080fd5b8601601f810188136101d457600080fd5b803567ffffffffffffffff8111156101eb57600080fd5b8860208284010111156101fd57600080fd5b959894975092955050506020019190565b60006020828403121561022057600080fd5b813567ffffffffffffffff81111561023757600080fd5b82016080818503121561024957600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561029157600080fd5b813567ffffffffffffffff8111156102a857600080fd5b8201601f810184136102b957600080fd5b803567ffffffffffffffff8111156102d3576102d3610250565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033f5761033f610250565b60405281815282820160200186101561035757600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126103aa57600080fd5b83018035915067ffffffffffffffff8211156103c557600080fd5b6020019150368190038213156103da57600080fd5b9250929050565b6000602082840312156103f357600080fd5b61024982610128565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60a08152600061045960a08301888a6103fc565b73ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff851660608401528281036080840152835180825260005b818110156104c3576020818701810151848301820152016104a7565b5060006020828401015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011683010192505050979650505050505050565b6020815273ffffffffffffffffffffffffffffffffffffffff61052983610128565b16602082015273ffffffffffffffffffffffffffffffffffffffff61055060208401610128565b166040820152600080604084013590508060608401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261059c57600080fd5b830160208101903567ffffffffffffffff8111156105b957600080fd5b8036038213156105c857600080fd5b6080808501526105dc60a0850182846103fc565b9594505050505056fea264697066735822122061cdfae648cbae7594990dcb3c026ac50f91568f9bdbabb7185e35e94b64bb7d64736f6c634300081a0033", + ABI: "[{\"type\":\"fallback\",\"stateMutability\":\"payable\"},{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"onCall\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structMessageContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"onRevert\",\"inputs\":[{\"name\":\"revertContext\",\"type\":\"tuple\",\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"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\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false}]", + Bin: "0x6080604052348015600f57600080fd5b5061061b8061001f6000396000f3fe60806040526004361061002a5760003560e01c80635bcfd61614610033578063c9028a361461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e366004610151565b610073565b34801561005f57600080fd5b5061003161006e36600461020e565b6100ee565b6060811561008a576100878284018461027f565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610375565b6100c560408a0160208b016103e1565b896040013533866040516100de96959493929190610445565b60405180910390a1505050505050565b7fd75bb509c8f32a725aac99ac5c4541060dbfb889a3aca8314d6f00395618c4c48160405161011d9190610507565b60405180910390a150565b803573ffffffffffffffffffffffffffffffffffffffff8116811461014c57600080fd5b919050565b60008060008060006080868803121561016957600080fd5b853567ffffffffffffffff81111561018057600080fd5b86016060818903121561019257600080fd5b94506101a060208701610128565b935060408601359250606086013567ffffffffffffffff8111156101c357600080fd5b8601601f810188136101d457600080fd5b803567ffffffffffffffff8111156101eb57600080fd5b8860208284010111156101fd57600080fd5b959894975092955050506020019190565b60006020828403121561022057600080fd5b813567ffffffffffffffff81111561023757600080fd5b82016080818503121561024957600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561029157600080fd5b813567ffffffffffffffff8111156102a857600080fd5b8201601f810184136102b957600080fd5b803567ffffffffffffffff8111156102d3576102d3610250565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033f5761033f610250565b60405281815282820160200186101561035757600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126103aa57600080fd5b83018035915067ffffffffffffffff8211156103c557600080fd5b6020019150368190038213156103da57600080fd5b9250929050565b6000602082840312156103f357600080fd5b61024982610128565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60a08152600061045960a08301888a6103fc565b73ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff851660608401528281036080840152835180825260005b818110156104c3576020818701810151848301820152016104a7565b5060006020828401015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011683010192505050979650505050505050565b6020815273ffffffffffffffffffffffffffffffffffffffff61052983610128565b16602082015273ffffffffffffffffffffffffffffffffffffffff61055060208401610128565b166040820152600080604084013590508060608401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261059c57600080fd5b830160208101903567ffffffffffffffff8111156105b957600080fd5b8036038213156105c857600080fd5b6080808501526105dc60a0850182846103fc565b9594505050505056fea2646970667358221220dc7a523df5134796579649d41e8953ef32547ff135f22140d4bed3844993809c64736f6c634300081a0033", } // TestUniversalContractABI is the input ABI used to generate the binding from. @@ -219,23 +219,23 @@ func (_TestUniversalContract *TestUniversalContractTransactorRaw) Transact(opts // OnCall is a paid mutator transaction binding the contract method 0x5bcfd616. // -// Solidity: function onCall((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() -func (_TestUniversalContract *TestUniversalContractTransactor) OnCall(opts *bind.TransactOpts, context MessageContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { - return _TestUniversalContract.contract.Transact(opts, "onCall", context, zrc20, amount, message) +// Solidity: function onCall((bytes,address,uint256) context, address , uint256 , bytes message) returns() +func (_TestUniversalContract *TestUniversalContractTransactor) OnCall(opts *bind.TransactOpts, context MessageContext, arg1 common.Address, arg2 *big.Int, message []byte) (*types.Transaction, error) { + return _TestUniversalContract.contract.Transact(opts, "onCall", context, arg1, arg2, message) } // OnCall is a paid mutator transaction binding the contract method 0x5bcfd616. // -// Solidity: function onCall((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() -func (_TestUniversalContract *TestUniversalContractSession) OnCall(context MessageContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { - return _TestUniversalContract.Contract.OnCall(&_TestUniversalContract.TransactOpts, context, zrc20, amount, message) +// Solidity: function onCall((bytes,address,uint256) context, address , uint256 , bytes message) returns() +func (_TestUniversalContract *TestUniversalContractSession) OnCall(context MessageContext, arg1 common.Address, arg2 *big.Int, message []byte) (*types.Transaction, error) { + return _TestUniversalContract.Contract.OnCall(&_TestUniversalContract.TransactOpts, context, arg1, arg2, message) } // OnCall is a paid mutator transaction binding the contract method 0x5bcfd616. // -// Solidity: function onCall((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() -func (_TestUniversalContract *TestUniversalContractTransactorSession) OnCall(context MessageContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { - return _TestUniversalContract.Contract.OnCall(&_TestUniversalContract.TransactOpts, context, zrc20, amount, message) +// Solidity: function onCall((bytes,address,uint256) context, address , uint256 , bytes message) returns() +func (_TestUniversalContract *TestUniversalContractTransactorSession) OnCall(context MessageContext, arg1 common.Address, arg2 *big.Int, message []byte) (*types.Transaction, error) { + return _TestUniversalContract.Contract.OnCall(&_TestUniversalContract.TransactOpts, context, arg1, arg2, message) } // OnRevert is a paid mutator transaction binding the contract method 0xc9028a36. diff --git a/v2/pkg/transparentupgradeableproxy.sol/transparentupgradeableproxy.go b/v2/pkg/transparentupgradeableproxy.sol/transparentupgradeableproxy.go index ea1c77448..a13bc5047 100644 --- a/v2/pkg/transparentupgradeableproxy.sol/transparentupgradeableproxy.go +++ b/v2/pkg/transparentupgradeableproxy.sol/transparentupgradeableproxy.go @@ -32,7 +32,7 @@ var ( // 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: "0x60a060405260405161117a38038061117a8339810160408190526100229161039d565b828161002e828261008f565b50508160405161003d9061033a565b6001600160a01b039091168152602001604051809103906000f080158015610069573d6000803e3d6000fd5b506001600160a01b031660805261008761008260805190565b6100ee565b50505061048f565b6100988261015c565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156100e2576100dd82826101db565b505050565b6100ea610252565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61012e60008051602061115a833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161015981610273565b50565b806001600160a01b03163b60000361019757604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080846001600160a01b0316846040516101f89190610473565b600060405180830381855af49150503d8060008114610233576040519150601f19603f3d011682016040523d82523d6000602084013e610238565b606091505b5090925090506102498583836102b2565b95945050505050565b34156102715760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661029d57604051633173bdd160e11b81526000600482015260240161018e565b8060008051602061115a8339815191526101ba565b6060826102c7576102c282610311565b61030a565b81511580156102de57506001600160a01b0384163b155b1561030757604051639996b31560e01b81526001600160a01b038516600482015260240161018e565b50805b9392505050565b8051156103215780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b61068480610ad683390190565b80516001600160a01b038116811461035e57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561039457818101518382015260200161037c565b50506000910152565b6000806000606084860312156103b257600080fd5b6103bb84610347565b92506103c960208501610347565b60408501519092506001600160401b038111156103e557600080fd5b8401601f810186136103f657600080fd5b80516001600160401b0381111561040f5761040f610363565b604051601f8201601f19908116603f011681016001600160401b038111828210171561043d5761043d610363565b60405281815282820160200188101561045557600080fd5b610466826020830160208601610379565b8093505050509250925092565b60008251610485818460208701610379565b9190910192915050565b60805161062d6104a960003960006010015261062d6000f3fe608060405261000c61000e565b005b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633036100d2576000357fffffffff00000000000000000000000000000000000000000000000000000000167f4f1ef28600000000000000000000000000000000000000000000000000000000146100c8576040517fd2b576ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100d06100da565b565b6100d0610109565b6000806100ea366004818461044d565b8101906100f791906104a6565b915091506101058282610119565b5050565b6100d0610114610181565b6101c6565b610122826101ea565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156101795761017482826102be565b505050565b610105610341565b60006101c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e8080156101e5573d6000f35b3d6000fd5b8073ffffffffffffffffffffffffffffffffffffffff163b600003610258576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60606000808473ffffffffffffffffffffffffffffffffffffffff16846040516102e891906105c8565b600060405180830381855af49150503d8060008114610323576040519150601f19603f3d011682016040523d82523d6000602084013e610328565b606091505b5091509150610338858383610379565b95945050505050565b34156100d0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261038e576103898261040b565b610404565b81511580156103b2575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610401576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161024f565b50805b9392505050565b80511561041b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808585111561045d57600080fd5b8386111561046a57600080fd5b5050820193919092039150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156104b957600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104dd57600080fd5b9150602083013567ffffffffffffffff8111156104f957600080fd5b8301601f8101851361050a57600080fd5b803567ffffffffffffffff81111561052457610524610477565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561059057610590610477565b6040528181528282016020018710156105a857600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000825160005b818110156105e957602081860181015185830152016105cf565b50600092019182525091905056fea2646970667358221220253f136e11d5f63ec3563318e55ad57e885108c3ff50fe7c6397f7ecf53edd5a64736f6c634300081a0033608060405234801561001057600080fd5b5060405161068438038061068483398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610587806100fd6000396000f3fe60806040526004361061005a5760003560e01c80639623609d116100435780639623609d146100b0578063ad3cb1cc146100c3578063f2fde38b1461011957600080fd5b8063715018a61461005f5780638da5cb5b14610076575b600080fd5b34801561006b57600080fd5b50610074610139565b005b34801561008257600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100746100be366004610364565b61014d565b3480156100cf57600080fd5b5061010c6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a791906104e3565b34801561012557600080fd5b506100746101343660046104fd565b6101e2565b61014161024b565b61014b600061029e565b565b61015561024b565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101ab908690869060040161051a565b6000604051808303818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b5050505050505050565b6101ea61024b565b73ffffffffffffffffffffffffffffffffffffffff811661023f576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6102488161029e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461014b576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610236565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461024857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561037957600080fd5b833561038481610313565b9250602084013561039481610313565b9150604084013567ffffffffffffffff8111156103b057600080fd5b8401601f810186136103c157600080fd5b803567ffffffffffffffff8111156103db576103db610335565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561044757610447610335565b60405281815282820160200188101561045f57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000815180845260005b818110156104a557602081850181015186830182015201610489565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104f6602083018461047f565b9392505050565b60006020828403121561050f57600080fd5b81356104f681610313565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610549604083018461047f565b94935050505056fea2646970667358221220cc8bbfd5df3920285befce3b27271fc70ad0dfb073ae2b9db9df8353b1cc6fff64736f6c634300081a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103", + Bin: "0x60a060405260405161117a38038061117a8339810160408190526100229161039d565b828161002e828261008f565b50508160405161003d9061033a565b6001600160a01b039091168152602001604051809103906000f080158015610069573d6000803e3d6000fd5b506001600160a01b031660805261008761008260805190565b6100ee565b50505061048f565b6100988261015c565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156100e2576100dd82826101db565b505050565b6100ea610252565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61012e60008051602061115a833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161015981610273565b50565b806001600160a01b03163b60000361019757604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080846001600160a01b0316846040516101f89190610473565b600060405180830381855af49150503d8060008114610233576040519150601f19603f3d011682016040523d82523d6000602084013e610238565b606091505b5090925090506102498583836102b2565b95945050505050565b34156102715760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661029d57604051633173bdd160e11b81526000600482015260240161018e565b8060008051602061115a8339815191526101ba565b6060826102c7576102c282610311565b61030a565b81511580156102de57506001600160a01b0384163b155b1561030757604051639996b31560e01b81526001600160a01b038516600482015260240161018e565b50805b9392505050565b8051156103215780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b61068480610ad683390190565b80516001600160a01b038116811461035e57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561039457818101518382015260200161037c565b50506000910152565b6000806000606084860312156103b257600080fd5b6103bb84610347565b92506103c960208501610347565b60408501519092506001600160401b038111156103e557600080fd5b8401601f810186136103f657600080fd5b80516001600160401b0381111561040f5761040f610363565b604051601f8201601f19908116603f011681016001600160401b038111828210171561043d5761043d610363565b60405281815282820160200188101561045557600080fd5b610466826020830160208601610379565b8093505050509250925092565b60008251610485818460208701610379565b9190910192915050565b60805161062d6104a960003960006010015261062d6000f3fe608060405261000c61000e565b005b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633036100d2576000357fffffffff00000000000000000000000000000000000000000000000000000000167f4f1ef28600000000000000000000000000000000000000000000000000000000146100c8576040517fd2b576ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100d06100da565b565b6100d0610109565b6000806100ea366004818461044d565b8101906100f791906104a6565b915091506101058282610119565b5050565b6100d0610114610181565b6101c6565b610122826101ea565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156101795761017482826102be565b505050565b610105610341565b60006101c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e8080156101e5573d6000f35b3d6000fd5b8073ffffffffffffffffffffffffffffffffffffffff163b600003610258576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60606000808473ffffffffffffffffffffffffffffffffffffffff16846040516102e891906105c8565b600060405180830381855af49150503d8060008114610323576040519150601f19603f3d011682016040523d82523d6000602084013e610328565b606091505b5091509150610338858383610379565b95945050505050565b34156100d0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261038e576103898261040b565b610404565b81511580156103b2575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610401576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161024f565b50805b9392505050565b80511561041b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808585111561045d57600080fd5b8386111561046a57600080fd5b5050820193919092039150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156104b957600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104dd57600080fd5b9150602083013567ffffffffffffffff8111156104f957600080fd5b8301601f8101851361050a57600080fd5b803567ffffffffffffffff81111561052457610524610477565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561059057610590610477565b6040528181528282016020018710156105a857600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000825160005b818110156105e957602081860181015185830152016105cf565b50600092019182525091905056fea2646970667358221220a4ebc0057fc296295a495e12fd7b1928a56a5810665ef2dd8b0464323df419c964736f6c634300081a0033608060405234801561001057600080fd5b5060405161068438038061068483398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610587806100fd6000396000f3fe60806040526004361061005a5760003560e01c80639623609d116100435780639623609d146100b0578063ad3cb1cc146100c3578063f2fde38b1461011957600080fd5b8063715018a61461005f5780638da5cb5b14610076575b600080fd5b34801561006b57600080fd5b50610074610139565b005b34801561008257600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100746100be366004610364565b61014d565b3480156100cf57600080fd5b5061010c6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a791906104e3565b34801561012557600080fd5b506100746101343660046104fd565b6101e2565b61014161024b565b61014b600061029e565b565b61015561024b565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101ab908690869060040161051a565b6000604051808303818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b5050505050505050565b6101ea61024b565b73ffffffffffffffffffffffffffffffffffffffff811661023f576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6102488161029e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461014b576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610236565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461024857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561037957600080fd5b833561038481610313565b9250602084013561039481610313565b9150604084013567ffffffffffffffff8111156103b057600080fd5b8401601f810186136103c157600080fd5b803567ffffffffffffffff8111156103db576103db610335565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561044757610447610335565b60405281815282820160200188101561045f57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000815180845260005b818110156104a557602081850181015186830182015201610489565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104f6602083018461047f565b9392505050565b60006020828403121561050f57600080fd5b81356104f681610313565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610549604083018461047f565b94935050505056fea2646970667358221220bfcb42a89a84dac0635a45bd4013ab76b4d822e9c9c757167dcf256da0cea66f64736f6c634300081a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103", } // TransparentUpgradeableProxyABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/upgradeablebeacon.sol/upgradeablebeacon.go b/v2/pkg/upgradeablebeacon.sol/upgradeablebeacon.go index c9899529d..4bb5c40d1 100644 --- a/v2/pkg/upgradeablebeacon.sol/upgradeablebeacon.go +++ b/v2/pkg/upgradeablebeacon.sol/upgradeablebeacon.go @@ -32,7 +32,7 @@ var ( // 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: "0x608060405234801561001057600080fd5b5060405161054538038061054583398101604081905261002f91610165565b806001600160a01b03811661005f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61006881610079565b50610072826100c9565b5050610198565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b806001600160a01b03163b6000036100ff5760405163211eb15960e21b81526001600160a01b0382166004820152602401610056565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b80516001600160a01b038116811461016057600080fd5b919050565b6000806040838503121561017857600080fd5b61018183610149565b915061018f60208401610149565b90509250929050565b61039e806101a76000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063715018a611610050578063715018a6146100c45780638da5cb5b146100cc578063f2fde38b146100ea57600080fd5b80633659cfe61461006c5780635c60da1b14610081575b600080fd5b61007f61007a36600461032b565b6100fd565b005b60015473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61007f610111565b60005473ffffffffffffffffffffffffffffffffffffffff1661009b565b61007f6100f836600461032b565b610125565b61010561018b565b61010e816101de565b50565b61011961018b565b61012360006102b6565b565b61012d61018b565b73ffffffffffffffffffffffffffffffffffffffff8116610182576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61010e816102b6565b60005473ffffffffffffffffffffffffffffffffffffffff163314610123576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610179565b8073ffffffffffffffffffffffffffffffffffffffff163b600003610247576040517f847ac56400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610179565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561033d57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461036157600080fd5b939250505056fea2646970667358221220c9c7179481a766b085d2da5ae9750f1c78f5bdec74151fc542064690d3a7e39864736f6c634300081a0033", + Bin: "0x608060405234801561001057600080fd5b5060405161054538038061054583398101604081905261002f91610165565b806001600160a01b03811661005f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61006881610079565b50610072826100c9565b5050610198565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b806001600160a01b03163b6000036100ff5760405163211eb15960e21b81526001600160a01b0382166004820152602401610056565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b80516001600160a01b038116811461016057600080fd5b919050565b6000806040838503121561017857600080fd5b61018183610149565b915061018f60208401610149565b90509250929050565b61039e806101a76000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063715018a611610050578063715018a6146100c45780638da5cb5b146100cc578063f2fde38b146100ea57600080fd5b80633659cfe61461006c5780635c60da1b14610081575b600080fd5b61007f61007a36600461032b565b6100fd565b005b60015473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61007f610111565b60005473ffffffffffffffffffffffffffffffffffffffff1661009b565b61007f6100f836600461032b565b610125565b61010561018b565b61010e816101de565b50565b61011961018b565b61012360006102b6565b565b61012d61018b565b73ffffffffffffffffffffffffffffffffffffffff8116610182576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61010e816102b6565b60005473ffffffffffffffffffffffffffffffffffffffff163314610123576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610179565b8073ffffffffffffffffffffffffffffffffffffffff163b600003610247576040517f847ac56400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610179565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561033d57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461036157600080fd5b939250505056fea2646970667358221220a34903c6e0667f087cb6963c1584e20e97a79adf79b1e49dca433f1edfc474c264736f6c634300081a0033", } // UpgradeableBeaconABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/upgrades.sol/unsafeupgrades.go b/v2/pkg/upgrades.sol/unsafeupgrades.go index ab27c9107..0871e0fb7 100644 --- a/v2/pkg/upgrades.sol/unsafeupgrades.go +++ b/v2/pkg/upgrades.sol/unsafeupgrades.go @@ -32,7 +32,7 @@ var ( // UnsafeUpgradesMetaData contains all meta data concerning the UnsafeUpgrades contract. var UnsafeUpgradesMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208d75a5a4b8bd5d2a8f8ed2ea53314716bfed77e74cf0c92d5cc78c51688a484d64736f6c634300081a0033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d7fdd0d1c8a9acbf7c011272d86bd872f1b9541ecae579ba519475cec3f94ce664736f6c634300081a0033", } // UnsafeUpgradesABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/upgrades.sol/upgrades.go b/v2/pkg/upgrades.sol/upgrades.go index c195a9a54..42513d6b8 100644 --- a/v2/pkg/upgrades.sol/upgrades.go +++ b/v2/pkg/upgrades.sol/upgrades.go @@ -32,7 +32,7 @@ var ( // UpgradesMetaData contains all meta data concerning the Upgrades contract. var UpgradesMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a303a0c26f89f346e9cb714cf7520d61504c021c8a062b23087203e1cd24152064736f6c634300081a0033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205ef11657a2fabdf405a52458398cb29f67a5b16ac6bd3b1c1397df23e59a398564736f6c634300081a0033", } // UpgradesABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/utils.sol/utils.go b/v2/pkg/utils.sol/utils.go index 61f811bb7..12a0beac3 100644 --- a/v2/pkg/utils.sol/utils.go +++ b/v2/pkg/utils.sol/utils.go @@ -32,7 +32,7 @@ var ( // UtilsMetaData contains all meta data concerning the Utils contract. var UtilsMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202b3d885488217a5b6bf6f2fa8c42832673a576595e5bc860aad53eeed191f88f64736f6c634300081a0033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201bb0ec7262284ec22878d83be3f9990f4ad2278ea031bb5f46565c9efa38159a64736f6c634300081a0033", } // UtilsABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/versions.sol/versions.go b/v2/pkg/versions.sol/versions.go index 389f3a317..e79640fed 100644 --- a/v2/pkg/versions.sol/versions.go +++ b/v2/pkg/versions.sol/versions.go @@ -32,7 +32,7 @@ var ( // VersionsMetaData contains all meta data concerning the Versions contract. var VersionsMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d11ccdb9c99813b0643005dd675b677f09856932a5d64b914f9ea8a694a79e8c64736f6c634300081a0033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c4a493b5c9edc7fa5cb348c7906bea8a1bdbc1b812031ebfdb561fb73cb477164736f6c634300081a0033", } // VersionsABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/wzeta.sol/weth9.go b/v2/pkg/wzeta.sol/weth9.go index be240a9be..8f0dee436 100644 --- a/v2/pkg/wzeta.sol/weth9.go +++ b/v2/pkg/wzeta.sol/weth9.go @@ -32,7 +32,7 @@ var ( // 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: "0x60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea2646970667358221220b09c98b42d894b1b92a74ecc691587bcc17012fff7ef3bcfa6fe755f9b6255a564736f6c634300081a0033", + Bin: "0x60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea2646970667358221220c069e4cb3e16bcddc5b07d6ba4019a062fbae92d695877ad19f66fc9ac6047fd64736f6c634300081a0033", } // WETH9ABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/zeta.non-eth.sol/zetanoneth.go b/v2/pkg/zeta.non-eth.sol/zetanoneth.go index 53706a1a9..e091fed4a 100644 --- a/v2/pkg/zeta.non-eth.sol/zetanoneth.go +++ b/v2/pkg/zeta.non-eth.sol/zetanoneth.go @@ -32,7 +32,7 @@ var ( // 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: "0x608060405234801561001057600080fd5b506040516112a63803806112a683398101604081905261002f91610110565b604051806040016040528060048152602001635a65746160e01b815250604051806040016040528060048152602001635a45544160e01b815250816003908161007891906101e2565b50600461008582826101e2565b5050506001600160a01b03821615806100a557506001600160a01b038116155b156100c35760405163e6c4247b60e01b815260040160405180910390fd5b600680546001600160a01b039384166001600160a01b031991821617909155600780549290931691161790556102a0565b80516001600160a01b038116811461010b57600080fd5b919050565b6000806040838503121561012357600080fd5b61012c836100f4565b915061013a602084016100f4565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061016d57607f821691505b60208210810361018d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101dd57806000526020600020601f840160051c810160208510156101ba5750805b601f840160051c820191505b818110156101da57600081556001016101c6565b50505b505050565b81516001600160401b038111156101fb576101fb610143565b61020f816102098454610159565b84610193565b6020601f821160018114610243576000831561022b5750848201515b600019600385901b1c1916600184901b1784556101da565b600084815260208120601f198516915b828110156102735787850151825560209485019460019092019101610253565b50848210156102915786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610ff7806102af6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806342966c68116100b257806379cc679011610081578063a9059cbb11610066578063a9059cbb1461028e578063bff9662a146102a1578063dd62ed3e146102c157600080fd5b806379cc67901461027357806395d89b411461028657600080fd5b806342966c68146102025780635b1125911461021557806370a0823114610235578063779e3b631461026b57600080fd5b80631e458bee116100ee5780631e458bee1461018857806323b872dd1461019b578063313ce567146101ae578063328a01d0146101bd57600080fd5b806306fdde0314610120578063095ea7b31461013e57806315d57fd41461016157806318160ddd14610176575b600080fd5b610128610307565b6040516101359190610d97565b60405180910390f35b61015161014c366004610e2c565b610399565b6040519015158152602001610135565b61017461016f366004610e56565b6103b3565b005b6002545b604051908152602001610135565b610174610196366004610e89565b61057e565b6101516101a9366004610ebc565b610631565b60405160128152602001610135565b6007546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610135565b610174610210366004610ef9565b610655565b6006546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a610243366004610f12565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b610174610662565b610174610281366004610e2c565b610786565b610128610837565b61015161029c366004610e2c565b610846565b6005546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a6102cf366004610e56565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461031690610f34565b80601f016020809104026020016040519081016040528092919081815260200182805461034290610f34565b801561038f5780601f106103645761010080835404028352916020019161038f565b820191906000526020600020905b81548152906001019060200180831161037257829003601f168201915b5050505050905090565b6000336103a7818585610854565b60019150505b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff1633148015906103f3575060065473ffffffffffffffffffffffffffffffffffffffff163314155b15610431576040517fcdfcef970000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82161580610468575073ffffffffffffffffffffffffffffffffffffffff8116155b1561049f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006805473ffffffffffffffffffffffffffffffffffffffff8481167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316811790935560058054918516919092161790556040805133815260208101929092527fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff910160405180910390a16040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f1b9352454524a57a51f24f67dc66d898f616922cd1f7a12d73570ece12b1975c910160405180910390a15050565b60055473ffffffffffffffffffffffffffffffffffffffff1633146105d1576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6105db8383610866565b808373ffffffffffffffffffffffffffffffffffffffff167fc263b302aec62d29105026245f19e16f8e0137066ccd4a8bd941f716bd4096bb8460405161062491815260200190565b60405180910390a3505050565b60003361063f8582856108c6565b61064a858585610995565b506001949350505050565b61065f3382610a40565b50565b60075473ffffffffffffffffffffffffffffffffffffffff1633146106b5576040517fe700765e000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b60065473ffffffffffffffffffffffffffffffffffffffff16610704576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0910160405180910390a1565b60055473ffffffffffffffffffffffffffffffffffffffff1633146107d9576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6107e38282610a9c565b8173ffffffffffffffffffffffffffffffffffffffff167f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b18260405161082b91815260200190565b60405180910390a25050565b60606004805461031690610f34565b6000336103a7818585610995565b6108618383836001610ab1565b505050565b73ffffffffffffffffffffffffffffffffffffffff82166108b6576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c260008383610bf9565b5050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461098f5781811015610980576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401610428565b61098f84848484036000610ab1565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166109e5576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8216610a35576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b610861838383610bf9565b73ffffffffffffffffffffffffffffffffffffffff8216610a90576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c282600083610bf9565b610aa78233836108c6565b6108c28282610a40565b73ffffffffffffffffffffffffffffffffffffffff8416610b01576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8316610b51576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160209081526040808320938716835292905220829055801561098f578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610beb91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8316610c31578060026000828254610c269190610f87565b90915550610ce39050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610cb7576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810182905260448101839052606401610428565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff8216610d0c57600280548290039055610d38565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161062491815260200190565b602081526000825180602084015260005b81811015610dc55760208186018101516040868401015201610da8565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e2757600080fd5b919050565b60008060408385031215610e3f57600080fd5b610e4883610e03565b946020939093013593505050565b60008060408385031215610e6957600080fd5b610e7283610e03565b9150610e8060208401610e03565b90509250929050565b600080600060608486031215610e9e57600080fd5b610ea784610e03565b95602085013595506040909401359392505050565b600080600060608486031215610ed157600080fd5b610eda84610e03565b9250610ee860208501610e03565b929592945050506040919091013590565b600060208284031215610f0b57600080fd5b5035919050565b600060208284031215610f2457600080fd5b610f2d82610e03565b9392505050565b600181811c90821680610f4857607f821691505b602082108103610f81577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156103ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea264697066735822122001ec0ce060384773f3d3389fab7bed652c6b8ee389a7471cce10d00d87a75a0c64736f6c634300081a0033", + Bin: "0x608060405234801561001057600080fd5b506040516112a63803806112a683398101604081905261002f91610110565b604051806040016040528060048152602001635a65746160e01b815250604051806040016040528060048152602001635a45544160e01b815250816003908161007891906101e2565b50600461008582826101e2565b5050506001600160a01b03821615806100a557506001600160a01b038116155b156100c35760405163e6c4247b60e01b815260040160405180910390fd5b600680546001600160a01b039384166001600160a01b031991821617909155600780549290931691161790556102a0565b80516001600160a01b038116811461010b57600080fd5b919050565b6000806040838503121561012357600080fd5b61012c836100f4565b915061013a602084016100f4565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061016d57607f821691505b60208210810361018d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101dd57806000526020600020601f840160051c810160208510156101ba5750805b601f840160051c820191505b818110156101da57600081556001016101c6565b50505b505050565b81516001600160401b038111156101fb576101fb610143565b61020f816102098454610159565b84610193565b6020601f821160018114610243576000831561022b5750848201515b600019600385901b1c1916600184901b1784556101da565b600084815260208120601f198516915b828110156102735787850151825560209485019460019092019101610253565b50848210156102915786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610ff7806102af6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806342966c68116100b257806379cc679011610081578063a9059cbb11610066578063a9059cbb1461028e578063bff9662a146102a1578063dd62ed3e146102c157600080fd5b806379cc67901461027357806395d89b411461028657600080fd5b806342966c68146102025780635b1125911461021557806370a0823114610235578063779e3b631461026b57600080fd5b80631e458bee116100ee5780631e458bee1461018857806323b872dd1461019b578063313ce567146101ae578063328a01d0146101bd57600080fd5b806306fdde0314610120578063095ea7b31461013e57806315d57fd41461016157806318160ddd14610176575b600080fd5b610128610307565b6040516101359190610d97565b60405180910390f35b61015161014c366004610e2c565b610399565b6040519015158152602001610135565b61017461016f366004610e56565b6103b3565b005b6002545b604051908152602001610135565b610174610196366004610e89565b61057e565b6101516101a9366004610ebc565b610631565b60405160128152602001610135565b6007546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610135565b610174610210366004610ef9565b610655565b6006546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a610243366004610f12565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b610174610662565b610174610281366004610e2c565b610786565b610128610837565b61015161029c366004610e2c565b610846565b6005546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a6102cf366004610e56565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461031690610f34565b80601f016020809104026020016040519081016040528092919081815260200182805461034290610f34565b801561038f5780601f106103645761010080835404028352916020019161038f565b820191906000526020600020905b81548152906001019060200180831161037257829003601f168201915b5050505050905090565b6000336103a7818585610854565b60019150505b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff1633148015906103f3575060065473ffffffffffffffffffffffffffffffffffffffff163314155b15610431576040517fcdfcef970000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82161580610468575073ffffffffffffffffffffffffffffffffffffffff8116155b1561049f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006805473ffffffffffffffffffffffffffffffffffffffff8481167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316811790935560058054918516919092161790556040805133815260208101929092527fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff910160405180910390a16040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f1b9352454524a57a51f24f67dc66d898f616922cd1f7a12d73570ece12b1975c910160405180910390a15050565b60055473ffffffffffffffffffffffffffffffffffffffff1633146105d1576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6105db8383610866565b808373ffffffffffffffffffffffffffffffffffffffff167fc263b302aec62d29105026245f19e16f8e0137066ccd4a8bd941f716bd4096bb8460405161062491815260200190565b60405180910390a3505050565b60003361063f8582856108c6565b61064a858585610995565b506001949350505050565b61065f3382610a40565b50565b60075473ffffffffffffffffffffffffffffffffffffffff1633146106b5576040517fe700765e000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b60065473ffffffffffffffffffffffffffffffffffffffff16610704576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0910160405180910390a1565b60055473ffffffffffffffffffffffffffffffffffffffff1633146107d9576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6107e38282610a9c565b8173ffffffffffffffffffffffffffffffffffffffff167f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b18260405161082b91815260200190565b60405180910390a25050565b60606004805461031690610f34565b6000336103a7818585610995565b6108618383836001610ab1565b505050565b73ffffffffffffffffffffffffffffffffffffffff82166108b6576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c260008383610bf9565b5050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461098f5781811015610980576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401610428565b61098f84848484036000610ab1565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166109e5576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8216610a35576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b610861838383610bf9565b73ffffffffffffffffffffffffffffffffffffffff8216610a90576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c282600083610bf9565b610aa78233836108c6565b6108c28282610a40565b73ffffffffffffffffffffffffffffffffffffffff8416610b01576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8316610b51576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160209081526040808320938716835292905220829055801561098f578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610beb91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8316610c31578060026000828254610c269190610f87565b90915550610ce39050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610cb7576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810182905260448101839052606401610428565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff8216610d0c57600280548290039055610d38565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161062491815260200190565b602081526000825180602084015260005b81811015610dc55760208186018101516040868401015201610da8565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e2757600080fd5b919050565b60008060408385031215610e3f57600080fd5b610e4883610e03565b946020939093013593505050565b60008060408385031215610e6957600080fd5b610e7283610e03565b9150610e8060208401610e03565b90509250929050565b600080600060608486031215610e9e57600080fd5b610ea784610e03565b95602085013595506040909401359392505050565b600080600060608486031215610ed157600080fd5b610eda84610e03565b9250610ee860208501610e03565b929592945050506040919091013590565b600060208284031215610f0b57600080fd5b5035919050565b600060208284031215610f2457600080fd5b610f2d82610e03565b9392505050565b600181811c90821680610f4857607f821691505b602082108103610f81577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156103ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220e8a1f6a00b1b9c77fd6d8724e3829463441aaedd6b65190c6dc6c18bcc5810e364736f6c634300081a0033", } // ZetaNonEthABI 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 430ebe648..44aec5017 100644 --- a/v2/pkg/zetaconnectornative.sol/zetaconnectornative.go +++ b/v2/pkg/zetaconnectornative.sol/zetaconnectornative.go @@ -39,8 +39,8 @@ type RevertContext struct { // ZetaConnectorNativeMetaData contains all meta data concerning the ZetaConnectorNative contract. var ZetaConnectorNativeMetaData = &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\":\"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\":\"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\":\"initialize\",\"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\"}],\"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\":\"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\":\"updateTSSAddress\",\"inputs\":[{\"name\":\"newTSSAddress\",\"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\":\"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\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"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\":\"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\":\"UpdatedZetaConnectorTSSAddress\",\"inputs\":[{\"name\":\"oldTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newTSSAddress\",\"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\":\"Withdrawn\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawnAndCalled\",\"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\":\"WithdrawnAndReverted\",\"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\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"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\":\"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\":\"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: "0x60a060405230608052348015601357600080fd5b5060805161248461003d6000396000818161125d01528181611286015261145c01526124846000f3fe6080604052600436106101965760003560e01c80635e3e9fef116100e1578063950837aa1161008a578063ad3cb1cc11610064578063ad3cb1cc146104f2578063d547741f14610548578063e63ab1e914610568578063f8c8765e1461059c57600080fd5b8063950837aa14610489578063a217fddf146104a9578063a783c789146104be57600080fd5b80638456cb59116100bb5780638456cb59146103db57806385f438c1146103f057806391d148541461042457600080fd5b80635e3e9fef1461037b5780636f8728ad1461039b578063743e0c9b146103bb57600080fd5b806336568abe1161014357806352d1902d1161011d57806352d1902d1461030f5780635b112591146103245780635c975abb1461034457600080fd5b806336568abe146102c75780633f4ba83a146102e75780634f1ef286146102fc57600080fd5b806321e093b11161017457806321e093b11461022a578063248a9ca31461024a5780632f2ff15d146102a757600080fd5b806301ffc9a71461019b578063106e6290146101d0578063116191b6146101f2575b600080fd5b3480156101a757600080fd5b506101bb6101b6366004611dea565b6105bc565b60405190151581526020015b60405180910390f35b3480156101dc57600080fd5b506101f06101eb366004611e48565b610655565b005b3480156101fe57600080fd5b50600054610212906001600160a01b031681565b6040516001600160a01b0390911681526020016101c7565b34801561023657600080fd5b50600154610212906001600160a01b031681565b34801561025657600080fd5b50610299610265366004611e7b565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101c7565b3480156102b357600080fd5b506101f06102c2366004611e94565b610718565b3480156102d357600080fd5b506101f06102e2366004611e94565b610762565b3480156102f357600080fd5b506101f06107ae565b6101f061030a366004611eef565b6107e3565b34801561031b57600080fd5b50610299610802565b34801561033057600080fd5b50600254610212906001600160a01b031681565b34801561035057600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101bb565b34801561038757600080fd5b506101f061039636600461203f565b610831565b3480156103a757600080fd5b506101f06103b63660046120a1565b610985565b3480156103c757600080fd5b506101f06103d6366004611e7b565b610ade565b3480156103e757600080fd5b506101f0610afe565b3480156103fc57600080fd5b506102997f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b34801561043057600080fd5b506101bb61043f366004611e94565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561049557600080fd5b506101f06104a4366004612139565b610b30565b3480156104b557600080fd5b50610299600081565b3480156104ca57600080fd5b506102997f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b3480156104fe57600080fd5b5061053b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101c79190612178565b34801561055457600080fd5b506101f0610563366004611e94565b610cc3565b34801561057457600080fd5b506102997f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b3480156105a857600080fd5b506101f06105b73660046121c9565b610d07565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061064f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61065d610e8e565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461068781610f0f565b61068f610f19565b6001546106a6906001600160a01b03168585610f77565b836001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5846040516106e191815260200190565b60405180910390a25061071360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461075281610f0f565b61075c8383611011565b50505050565b6001600160a01b03811633146107a4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61071382826110fe565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6107d881610f0f565b6107e06111c2565b50565b6107eb611252565b6107f482611322565b6107fe828261132d565b5050565b600061080c611451565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610839610e8e565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461086381610f0f565b61086b610f19565b600054600154610888916001600160a01b03918216911687610f77565b6000546001546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692635131ab59926108dd929116908a908a908a908a90600401612266565b600060405180830381600087803b1580156108f757600080fd5b505af115801561090b573d6000803e3d6000fd5b50505050856001600160a01b03167f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d86868660405161094c939291906122a9565b60405180910390a25061097e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b61098d610e8e565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46109b781610f0f565b6109bf610f19565b6000546001546109dc916001600160a01b03918216911688610f77565b6000546001546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526001600160a01b039283169263aa0c0fc192610a33929116908b908b908b908b908a90600401612374565b600060405180830381600087803b158015610a4d57600080fd5b505af1158015610a61573d6000803e3d6000fd5b50505050866001600160a01b03167f5272d2fee39bff41b2e763562526315906046373ce08a7bacf76c3080d731ff087878786604051610aa494939291906123cb565b60405180910390a250610ad660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b610ae6610f19565b6001546107e0906001600160a01b03163330846114b3565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610b2881610f0f565b6107e06114ec565b6000610b3b81610f0f565b6001600160a01b038216610b7b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254610bb2907f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4906001600160a01b03166110fe565b50600254610bea907f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb906001600160a01b03166110fe565b50610c157f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483611011565b50610c407f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb83611011565b50600254604080516001600160a01b03928316815291841660208301527f33770ab682353c17917ad3e667f05905fc8dda00671ef1ed33bef9bc8db0323e910160405180910390a150600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610cfd81610f0f565b61075c83836110fe565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610d525750825b905060008267ffffffffffffffff166001148015610d6f5750303b155b905081158015610d7d575080155b15610db4576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610e155784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610e2189898989611565565b8315610e835784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b505050505050505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01610f09576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6107e08133611870565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615610f75576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040516001600160a01b0383811660248301526044820183905261071391859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506118fd565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166110f4576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556110aa3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061064f565b600091505061064f565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156110f4576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061064f565b6111ca611979565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806112eb57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166112df7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610f75576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006107fe81610f0f565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156113a5575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526113a2918101906123f7565b60015b6113eb576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611447576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016113e2565b61071383836119d4565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f75576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040516001600160a01b03848116602483015283811660448301526064820183905261075c9186918216906323b872dd90608401610fa4565b6114f4610f19565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611234565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156115b05750825b905060008267ffffffffffffffff1660011480156115cd5750303b155b9050811580156115db575080155b15611612576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156116735784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038916158061169057506001600160a01b038816155b806116a257506001600160a01b038716155b806116b457506001600160a01b038616155b156116eb576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116f3611a2a565b6116fb611a32565b611703611a2a565b61170b611a42565b600080546001600160a01b03808c167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316178355600180548c831690841617905560028054918b16919092161790556117669087611011565b506117917f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e488611011565b506117bc7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb88611011565b506117e77f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611011565b506118127f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a88611011565b508315610e835784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001610e7a565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166107fe576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016113e2565b60006119126001600160a01b03841683611a52565b905080516000141580156119375750808060200190518101906119359190612410565b155b15610713576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016113e2565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610f75576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119dd82611a67565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611a22576107138282611b0f565b6107fe611b85565b610f75611bbd565b611a3a611bbd565b610f75611c24565b611a4a611bbd565b610f75611c2c565b6060611a6083836000611c7d565b9392505050565b806001600160a01b03163b600003611ab6576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016113e2565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611b2c9190612432565b600060405180830381855af49150503d8060008114611b67576040519150601f19603f3d011682016040523d82523d6000602084013e611b6c565b606091505b5091509150611b7c858383611d33565b95945050505050565b3415610f75576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610f75576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610feb611bbd565b611c34611bbd565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b606081471015611cbb576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016113e2565b600080856001600160a01b03168486604051611cd79190612432565b60006040518083038185875af1925050503d8060008114611d14576040519150601f19603f3d011682016040523d82523d6000602084013e611d19565b606091505b5091509150611d29868383611d33565b9695505050505050565b606082611d4857611d4382611da8565b611a60565b8151158015611d5f57506001600160a01b0384163b155b15611da1576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016113e2565b5080611a60565b805115611db85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215611dfc57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611a6057600080fd5b80356001600160a01b0381168114611e4357600080fd5b919050565b600080600060608486031215611e5d57600080fd5b611e6684611e2c565b95602085013595506040909401359392505050565b600060208284031215611e8d57600080fd5b5035919050565b60008060408385031215611ea757600080fd5b82359150611eb760208401611e2c565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215611f0257600080fd5b611f0b83611e2c565b9150602083013567ffffffffffffffff811115611f2757600080fd5b8301601f81018513611f3857600080fd5b803567ffffffffffffffff811115611f5257611f52611ec0565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715611fbe57611fbe611ec0565b604052818152828201602001871015611fd657600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008083601f84011261200857600080fd5b50813567ffffffffffffffff81111561202057600080fd5b60208301915083602082850101111561203857600080fd5b9250929050565b60008060008060006080868803121561205757600080fd5b61206086611e2c565b945060208601359350604086013567ffffffffffffffff81111561208357600080fd5b61208f88828901611ff6565b96999598509660600135949350505050565b60008060008060008060a087890312156120ba57600080fd5b6120c387611e2c565b955060208701359450604087013567ffffffffffffffff8111156120e657600080fd5b6120f289828a01611ff6565b90955093505060608701359150608087013567ffffffffffffffff81111561211957600080fd5b87016080818a03121561212b57600080fd5b809150509295509295509295565b60006020828403121561214b57600080fd5b611a6082611e2c565b60005b8381101561216f578181015183820152602001612157565b50506000910152565b6020815260008251806020840152612197816040850160208701612154565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b600080600080608085870312156121df57600080fd5b6121e885611e2c565b93506121f660208601611e2c565b925061220460408601611e2c565b915061221260608601611e2c565b905092959194509250565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015260806060820152600061229e60808301848661221d565b979650505050505050565b838152604060208201526000611b7c60408301848661221d565b6001600160a01b036122d482611e2c565b1682526001600160a01b036122eb60208301611e2c565b1660208301526040818101359083015260006060820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe101811261233357600080fd5b820160208101903567ffffffffffffffff81111561235057600080fd5b80360382131561235f57600080fd5b60806060860152611b7c60808601828461221d565b6001600160a01b03871681526001600160a01b038616602082015284604082015260a0606082015260006123ac60a08301858761221d565b82810360808401526123be81856122c3565b9998505050505050505050565b8481526060602082015260006123e560608301858761221d565b828103604084015261229e81856122c3565b60006020828403121561240957600080fd5b5051919050565b60006020828403121561242257600080fd5b81518015158114611a6057600080fd5b60008251612444818460208701612154565b919091019291505056fea264697066735822122058bc11cc028ce867ac5a6edc7b1fe3e7c1a367c0953fe630938523d2581ba13e64736f6c634300081a0033", + 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\":\"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\":\"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\":\"initialize\",\"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\"}],\"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\":\"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\":\"updateTSSAddress\",\"inputs\":[{\"name\":\"newTSSAddress\",\"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\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"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\":\"\",\"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\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"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\":\"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\":\"UpdatedZetaConnectorTSSAddress\",\"inputs\":[{\"name\":\"oldTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newTSSAddress\",\"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\":\"Withdrawn\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawnAndCalled\",\"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\":\"WithdrawnAndReverted\",\"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\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"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\":\"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\":\"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: "0x60a060405230608052348015601357600080fd5b5060805161248461003d6000396000818161125d01528181611286015261145c01526124846000f3fe6080604052600436106101965760003560e01c80635e3e9fef116100e1578063950837aa1161008a578063ad3cb1cc11610064578063ad3cb1cc146104f2578063d547741f14610548578063e63ab1e914610568578063f8c8765e1461059c57600080fd5b8063950837aa14610489578063a217fddf146104a9578063a783c789146104be57600080fd5b80638456cb59116100bb5780638456cb59146103db57806385f438c1146103f057806391d148541461042457600080fd5b80635e3e9fef1461037b5780636f8728ad1461039b578063743e0c9b146103bb57600080fd5b806336568abe1161014357806352d1902d1161011d57806352d1902d1461030f5780635b112591146103245780635c975abb1461034457600080fd5b806336568abe146102c75780633f4ba83a146102e75780634f1ef286146102fc57600080fd5b806321e093b11161017457806321e093b11461022a578063248a9ca31461024a5780632f2ff15d146102a757600080fd5b806301ffc9a71461019b578063106e6290146101d0578063116191b6146101f2575b600080fd5b3480156101a757600080fd5b506101bb6101b6366004611dea565b6105bc565b60405190151581526020015b60405180910390f35b3480156101dc57600080fd5b506101f06101eb366004611e48565b610655565b005b3480156101fe57600080fd5b50600054610212906001600160a01b031681565b6040516001600160a01b0390911681526020016101c7565b34801561023657600080fd5b50600154610212906001600160a01b031681565b34801561025657600080fd5b50610299610265366004611e7b565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101c7565b3480156102b357600080fd5b506101f06102c2366004611e94565b610718565b3480156102d357600080fd5b506101f06102e2366004611e94565b610762565b3480156102f357600080fd5b506101f06107ae565b6101f061030a366004611eef565b6107e3565b34801561031b57600080fd5b50610299610802565b34801561033057600080fd5b50600254610212906001600160a01b031681565b34801561035057600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101bb565b34801561038757600080fd5b506101f061039636600461203f565b610831565b3480156103a757600080fd5b506101f06103b63660046120a1565b610985565b3480156103c757600080fd5b506101f06103d6366004611e7b565b610ade565b3480156103e757600080fd5b506101f0610afe565b3480156103fc57600080fd5b506102997f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b34801561043057600080fd5b506101bb61043f366004611e94565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561049557600080fd5b506101f06104a4366004612139565b610b30565b3480156104b557600080fd5b50610299600081565b3480156104ca57600080fd5b506102997f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b3480156104fe57600080fd5b5061053b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101c79190612178565b34801561055457600080fd5b506101f0610563366004611e94565b610cc3565b34801561057457600080fd5b506102997f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b3480156105a857600080fd5b506101f06105b73660046121c9565b610d07565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061064f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61065d610e8e565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461068781610f0f565b61068f610f19565b6001546106a6906001600160a01b03168585610f77565b836001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5846040516106e191815260200190565b60405180910390a25061071360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461075281610f0f565b61075c8383611011565b50505050565b6001600160a01b03811633146107a4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61071382826110fe565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6107d881610f0f565b6107e06111c2565b50565b6107eb611252565b6107f482611322565b6107fe828261132d565b5050565b600061080c611451565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610839610e8e565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461086381610f0f565b61086b610f19565b600054600154610888916001600160a01b03918216911687610f77565b6000546001546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692635131ab59926108dd929116908a908a908a908a90600401612266565b600060405180830381600087803b1580156108f757600080fd5b505af115801561090b573d6000803e3d6000fd5b50505050856001600160a01b03167f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d86868660405161094c939291906122a9565b60405180910390a25061097e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b61098d610e8e565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46109b781610f0f565b6109bf610f19565b6000546001546109dc916001600160a01b03918216911688610f77565b6000546001546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526001600160a01b039283169263aa0c0fc192610a33929116908b908b908b908b908a90600401612374565b600060405180830381600087803b158015610a4d57600080fd5b505af1158015610a61573d6000803e3d6000fd5b50505050866001600160a01b03167f5272d2fee39bff41b2e763562526315906046373ce08a7bacf76c3080d731ff087878786604051610aa494939291906123cb565b60405180910390a250610ad660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b610ae6610f19565b6001546107e0906001600160a01b03163330846114b3565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610b2881610f0f565b6107e06114ec565b6000610b3b81610f0f565b6001600160a01b038216610b7b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254610bb2907f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4906001600160a01b03166110fe565b50600254610bea907f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb906001600160a01b03166110fe565b50610c157f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483611011565b50610c407f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb83611011565b50600254604080516001600160a01b03928316815291841660208301527f33770ab682353c17917ad3e667f05905fc8dda00671ef1ed33bef9bc8db0323e910160405180910390a150600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610cfd81610f0f565b61075c83836110fe565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610d525750825b905060008267ffffffffffffffff166001148015610d6f5750303b155b905081158015610d7d575080155b15610db4576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610e155784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610e2189898989611565565b8315610e835784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b505050505050505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01610f09576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6107e08133611870565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615610f75576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040516001600160a01b0383811660248301526044820183905261071391859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506118fd565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166110f4576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556110aa3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061064f565b600091505061064f565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156110f4576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061064f565b6111ca611979565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806112eb57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166112df7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610f75576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006107fe81610f0f565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156113a5575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526113a2918101906123f7565b60015b6113eb576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611447576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016113e2565b61071383836119d4565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f75576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040516001600160a01b03848116602483015283811660448301526064820183905261075c9186918216906323b872dd90608401610fa4565b6114f4610f19565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611234565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156115b05750825b905060008267ffffffffffffffff1660011480156115cd5750303b155b9050811580156115db575080155b15611612576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156116735784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038916158061169057506001600160a01b038816155b806116a257506001600160a01b038716155b806116b457506001600160a01b038616155b156116eb576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116f3611a2a565b6116fb611a32565b611703611a2a565b61170b611a42565b600080546001600160a01b03808c167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316178355600180548c831690841617905560028054918b16919092161790556117669087611011565b506117917f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e488611011565b506117bc7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb88611011565b506117e77f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611011565b506118127f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a88611011565b508315610e835784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001610e7a565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166107fe576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016113e2565b60006119126001600160a01b03841683611a52565b905080516000141580156119375750808060200190518101906119359190612410565b155b15610713576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016113e2565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610f75576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119dd82611a67565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611a22576107138282611b0f565b6107fe611b85565b610f75611bbd565b611a3a611bbd565b610f75611c24565b611a4a611bbd565b610f75611c2c565b6060611a6083836000611c7d565b9392505050565b806001600160a01b03163b600003611ab6576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016113e2565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611b2c9190612432565b600060405180830381855af49150503d8060008114611b67576040519150601f19603f3d011682016040523d82523d6000602084013e611b6c565b606091505b5091509150611b7c858383611d33565b95945050505050565b3415610f75576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610f75576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610feb611bbd565b611c34611bbd565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b606081471015611cbb576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016113e2565b600080856001600160a01b03168486604051611cd79190612432565b60006040518083038185875af1925050503d8060008114611d14576040519150601f19603f3d011682016040523d82523d6000602084013e611d19565b606091505b5091509150611d29868383611d33565b9695505050505050565b606082611d4857611d4382611da8565b611a60565b8151158015611d5f57506001600160a01b0384163b155b15611da1576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016113e2565b5080611a60565b805115611db85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215611dfc57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611a6057600080fd5b80356001600160a01b0381168114611e4357600080fd5b919050565b600080600060608486031215611e5d57600080fd5b611e6684611e2c565b95602085013595506040909401359392505050565b600060208284031215611e8d57600080fd5b5035919050565b60008060408385031215611ea757600080fd5b82359150611eb760208401611e2c565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215611f0257600080fd5b611f0b83611e2c565b9150602083013567ffffffffffffffff811115611f2757600080fd5b8301601f81018513611f3857600080fd5b803567ffffffffffffffff811115611f5257611f52611ec0565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715611fbe57611fbe611ec0565b604052818152828201602001871015611fd657600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008083601f84011261200857600080fd5b50813567ffffffffffffffff81111561202057600080fd5b60208301915083602082850101111561203857600080fd5b9250929050565b60008060008060006080868803121561205757600080fd5b61206086611e2c565b945060208601359350604086013567ffffffffffffffff81111561208357600080fd5b61208f88828901611ff6565b96999598509660600135949350505050565b60008060008060008060a087890312156120ba57600080fd5b6120c387611e2c565b955060208701359450604087013567ffffffffffffffff8111156120e657600080fd5b6120f289828a01611ff6565b90955093505060608701359150608087013567ffffffffffffffff81111561211957600080fd5b87016080818a03121561212b57600080fd5b809150509295509295509295565b60006020828403121561214b57600080fd5b611a6082611e2c565b60005b8381101561216f578181015183820152602001612157565b50506000910152565b6020815260008251806020840152612197816040850160208701612154565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b600080600080608085870312156121df57600080fd5b6121e885611e2c565b93506121f660208601611e2c565b925061220460408601611e2c565b915061221260608601611e2c565b905092959194509250565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015260806060820152600061229e60808301848661221d565b979650505050505050565b838152604060208201526000611b7c60408301848661221d565b6001600160a01b036122d482611e2c565b1682526001600160a01b036122eb60208301611e2c565b1660208301526040818101359083015260006060820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe101811261233357600080fd5b820160208101903567ffffffffffffffff81111561235057600080fd5b80360382131561235f57600080fd5b60806060860152611b7c60808601828461221d565b6001600160a01b03871681526001600160a01b038616602082015284604082015260a0606082015260006123ac60a08301858761221d565b82810360808401526123be81856122c3565b9998505050505050505050565b8481526060602082015260006123e560608301858761221d565b828103604084015261229e81856122c3565b60006020828403121561240957600080fd5b5051919050565b60006020828403121561242257600080fd5b81518015158114611a6057600080fd5b60008251612444818460208701612154565b919091019291505056fea26469706673582212201adb39f0b6ab7848ec5c476199d4fd1fa0c035dfd4f2aa61d558d86c854a13ac64736f6c634300081a0033", } // ZetaConnectorNativeABI is the input ABI used to generate the binding from. @@ -804,65 +804,65 @@ func (_ZetaConnectorNative *ZetaConnectorNativeTransactorSession) UpgradeToAndCa // 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) +// Solidity: function withdraw(address to, uint256 amount, bytes32 ) returns() +func (_ZetaConnectorNative *ZetaConnectorNativeTransactor) Withdraw(opts *bind.TransactOpts, to common.Address, amount *big.Int, arg2 [32]byte) (*types.Transaction, error) { + return _ZetaConnectorNative.contract.Transact(opts, "withdraw", to, amount, arg2) } // 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) +// Solidity: function withdraw(address to, uint256 amount, bytes32 ) returns() +func (_ZetaConnectorNative *ZetaConnectorNativeSession) Withdraw(to common.Address, amount *big.Int, arg2 [32]byte) (*types.Transaction, error) { + return _ZetaConnectorNative.Contract.Withdraw(&_ZetaConnectorNative.TransactOpts, to, amount, arg2) } // 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) +// Solidity: function withdraw(address to, uint256 amount, bytes32 ) returns() +func (_ZetaConnectorNative *ZetaConnectorNativeTransactorSession) Withdraw(to common.Address, amount *big.Int, arg2 [32]byte) (*types.Transaction, error) { + return _ZetaConnectorNative.Contract.Withdraw(&_ZetaConnectorNative.TransactOpts, to, amount, arg2) } // 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) +// Solidity: function withdrawAndCall(address to, uint256 amount, bytes data, bytes32 ) returns() +func (_ZetaConnectorNative *ZetaConnectorNativeTransactor) WithdrawAndCall(opts *bind.TransactOpts, to common.Address, amount *big.Int, data []byte, arg3 [32]byte) (*types.Transaction, error) { + return _ZetaConnectorNative.contract.Transact(opts, "withdrawAndCall", to, amount, data, arg3) } // 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) +// Solidity: function withdrawAndCall(address to, uint256 amount, bytes data, bytes32 ) returns() +func (_ZetaConnectorNative *ZetaConnectorNativeSession) WithdrawAndCall(to common.Address, amount *big.Int, data []byte, arg3 [32]byte) (*types.Transaction, error) { + return _ZetaConnectorNative.Contract.WithdrawAndCall(&_ZetaConnectorNative.TransactOpts, to, amount, data, arg3) } // 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) +// Solidity: function withdrawAndCall(address to, uint256 amount, bytes data, bytes32 ) returns() +func (_ZetaConnectorNative *ZetaConnectorNativeTransactorSession) WithdrawAndCall(to common.Address, amount *big.Int, data []byte, arg3 [32]byte) (*types.Transaction, error) { + return _ZetaConnectorNative.Contract.WithdrawAndCall(&_ZetaConnectorNative.TransactOpts, to, amount, data, arg3) } // WithdrawAndRevert is a paid mutator transaction binding the contract method 0x6f8728ad. // -// Solidity: function withdrawAndRevert(address to, uint256 amount, bytes data, bytes32 internalSendHash, (address,address,uint256,bytes) revertContext) returns() -func (_ZetaConnectorNative *ZetaConnectorNativeTransactor) WithdrawAndRevert(opts *bind.TransactOpts, to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte, revertContext RevertContext) (*types.Transaction, error) { - return _ZetaConnectorNative.contract.Transact(opts, "withdrawAndRevert", to, amount, data, internalSendHash, revertContext) +// Solidity: function withdrawAndRevert(address to, uint256 amount, bytes data, bytes32 , (address,address,uint256,bytes) revertContext) returns() +func (_ZetaConnectorNative *ZetaConnectorNativeTransactor) WithdrawAndRevert(opts *bind.TransactOpts, to common.Address, amount *big.Int, data []byte, arg3 [32]byte, revertContext RevertContext) (*types.Transaction, error) { + return _ZetaConnectorNative.contract.Transact(opts, "withdrawAndRevert", to, amount, data, arg3, revertContext) } // WithdrawAndRevert is a paid mutator transaction binding the contract method 0x6f8728ad. // -// Solidity: function withdrawAndRevert(address to, uint256 amount, bytes data, bytes32 internalSendHash, (address,address,uint256,bytes) revertContext) returns() -func (_ZetaConnectorNative *ZetaConnectorNativeSession) WithdrawAndRevert(to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte, revertContext RevertContext) (*types.Transaction, error) { - return _ZetaConnectorNative.Contract.WithdrawAndRevert(&_ZetaConnectorNative.TransactOpts, to, amount, data, internalSendHash, revertContext) +// Solidity: function withdrawAndRevert(address to, uint256 amount, bytes data, bytes32 , (address,address,uint256,bytes) revertContext) returns() +func (_ZetaConnectorNative *ZetaConnectorNativeSession) WithdrawAndRevert(to common.Address, amount *big.Int, data []byte, arg3 [32]byte, revertContext RevertContext) (*types.Transaction, error) { + return _ZetaConnectorNative.Contract.WithdrawAndRevert(&_ZetaConnectorNative.TransactOpts, to, amount, data, arg3, revertContext) } // WithdrawAndRevert is a paid mutator transaction binding the contract method 0x6f8728ad. // -// Solidity: function withdrawAndRevert(address to, uint256 amount, bytes data, bytes32 internalSendHash, (address,address,uint256,bytes) revertContext) returns() -func (_ZetaConnectorNative *ZetaConnectorNativeTransactorSession) WithdrawAndRevert(to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte, revertContext RevertContext) (*types.Transaction, error) { - return _ZetaConnectorNative.Contract.WithdrawAndRevert(&_ZetaConnectorNative.TransactOpts, to, amount, data, internalSendHash, revertContext) +// Solidity: function withdrawAndRevert(address to, uint256 amount, bytes data, bytes32 , (address,address,uint256,bytes) revertContext) returns() +func (_ZetaConnectorNative *ZetaConnectorNativeTransactorSession) WithdrawAndRevert(to common.Address, amount *big.Int, data []byte, arg3 [32]byte, revertContext RevertContext) (*types.Transaction, error) { + return _ZetaConnectorNative.Contract.WithdrawAndRevert(&_ZetaConnectorNative.TransactOpts, to, amount, data, arg3, revertContext) } // ZetaConnectorNativeInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the ZetaConnectorNative contract. diff --git a/v2/pkg/zetaconnectornative.t.sol/zetaconnectornativetest.go b/v2/pkg/zetaconnectornative.t.sol/zetaconnectornativetest.go index ce3ec4b9e..43d6a6032 100644 --- a/v2/pkg/zetaconnectornative.t.sol/zetaconnectornativetest.go +++ b/v2/pkg/zetaconnectornative.t.sol/zetaconnectornativetest.go @@ -67,7 +67,7 @@ type StdInvariantFuzzSelector struct { // ZetaConnectorNativeTestMetaData contains all meta data concerning the ZetaConnectorNativeTest contract. var ZetaConnectorNativeTestMetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"DEFAULT_ADMIN_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\":\"testTSSUpgrade\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTSSUpgradeFailsIfSenderIsNotTSSUpdater\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTSSUpgradeFailsIfZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpgradeAndWithdraw\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"function\",\"name\":\"testWithdrawTogglePause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Called\",\"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\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposited\",\"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\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\":\"ReceivedOnCall\",\"inputs\":[],\"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\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedGatewayTSSAddress\",\"inputs\":[{\"name\":\"oldTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedZetaConnectorTSSAddress\",\"inputs\":[{\"name\":\"oldTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawn\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawnAndCalled\",\"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\":\"WithdrawnAndReverted\",\"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\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawnV2\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"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\":\"ConnectorInitialized\",\"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\":\"NotAllowedToCallOnCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotAllowedToCallOnRevert\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotWhitelistedInCustody\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PayloadSizeExceeded\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061d06e8061003c6000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c8063a217fddf11610104578063ccb0e3f2116100a2578063e20c9f7111610071578063e20c9f7114610357578063e63ab1e91461035f578063fa7626d414610386578063fe574f841461039357600080fd5b8063ccb0e3f214610337578063d509b16c1461033f578063dcf7d03714610347578063de1cb76c1461034f57600080fd5b8063b0464fdc116100de578063b0464fdc14610307578063b5508aa91461030f578063ba414fa614610317578063c19099721461032f57600080fd5b8063a217fddf146102d0578063a783c789146102d8578063af298bb1146102ff57600080fd5b8063493465581161017c578063828320141161014b578063828320141461026957806385226c811461027157806385f438c114610286578063916a17c6146102bb57600080fd5b8063493465581461023c5780634df42da11461024457806352ff59391461024c57806366d9a9a01461025457600080fd5b80632ade3880116101b85780632ade38801461020f5780633cba0107146102245780633e5e3c231461022c5780633f7286f41461023457600080fd5b8063070f2ad0146101df5780630a9254e4146101e95780631ed7831c146101f1575b600080fd5b6101e761039b565b005b6101e761059b565b6101f9610dec565b6040516102069190619b1c565b60405180910390f35b610217610e4e565b6040516102069190619bb8565b6101e7610f90565b6101f9611753565b6101f96117b3565b6101e7611813565b6101e7611e57565b6101e7611fc7565b61025c612816565b6040516102069190619d1e565b6101e7612998565b610279612bf8565b6040516102069190619dbc565b6102ad7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b604051908152602001610206565b6102c3612cc8565b6040516102069190619e33565b6102ad600081565b6102ad7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b6101e7612dc3565b6102c361320f565b61027961330a565b61031f6133da565b6040519015158152602001610206565b6101e76134ae565b6101e761371e565b6101e7614244565b6101e7614282565b6101e761492c565b6101f9614f89565b6102ad7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b601f5461031f9060ff1681565b6101e7614fe9565b6026546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b15801561040d57600080fd5b505af1158015610421573d6000803e3d6000fd5b5050602654604080516001600160a01b039092166024830152600060448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506104ed9190600401619eca565b600060405180830381600087803b15801561050757600080fd5b505af115801561051b573d6000803e3d6000fd5b5050602254602480546040517f950837aa0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529216935063950837aa9250015b600060405180830381600087803b15801561058157600080fd5b505af1158015610595573d6000803e3d6000fd5b50505050565b602480547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602580548216611234179055602680548216615678179055602780549091166198761790556040516105f990619a49565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f08015801561067d573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600e81527f4761746577617945564d2e736f6c00000000000000000000000000000000000060208201526026546024805493519186169082015260448101939093529216606482015260009161076f916084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc0c53b8b00000000000000000000000000000000000000000000000000000000179052615202565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0384811682029290921792839055604080518082018252601081527f4552433230437573746f64792e736f6c000000000000000000000000000000006020820152602654602480549351949096048516958401959095529383166044830152909116606482015291925061081591608401610712565b602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383811691909117909155604080518082018252601781527f5a657461436f6e6e6563746f724e61746976652e736f6c0000000000000000006020820152601f5460235460265460248054955161010090940487169084015290851660448301528416606482015291909216608482015291925061091a9160a40160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff8c8765e00000000000000000000000000000000000000000000000000000000179052615202565b602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03831617905560405190915061095c90619a56565b604051809103906000f080158015610978573d6000803e3d6000fd5b50602080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556026546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b158015610a2457600080fd5b505af1158015610a38573d6000803e3d6000fd5b5050602480546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d93506306447d56925001600060405180830381600087803b158015610aad57600080fd5b505af1158015610ac1573d6000803e3d6000fd5b5050601f546021546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261010090920416925063ae7a3a6f9150602401600060405180830381600087803b158015610b2c57600080fd5b505af1158015610b40573d6000803e3d6000fd5b5050601f546022546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526101009092041692506310188aef9150602401600060405180830381600087803b158015610bab57600080fd5b505af1158015610bbf573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610c2157600080fd5b505af1158015610c35573d6000803e3d6000fd5b50506023546022546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152624c4b406024820152911692506340c10f199150604401600060405180830381600087803b158015610ca457600080fd5b505af1158015610cb8573d6000803e3d6000fd5b50506026546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610d3c57600080fd5b505af1158015610d50573d6000803e3d6000fd5b5050604080516080810182526024546001600160a01b039081168252602354811660208084019182526001848601908152855191820190955260008152606084018190528351602880549185167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316178155925160298054919095169116179092559251602a55909350909150602b906105959082619fa5565b60606016805480602002602001604051908101604052809291908181526020018280548015610e4457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610e26575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015610f8757600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610f70578382906000526020600020018054610ee390619f0c565b80601f0160208091040260200160405190810160405280929190818152602001828054610f0f90619f0c565b8015610f5c5780601f10610f3157610100808354040283529160200191610f5c565b820191906000526020600020905b815481529060010190602001808311610f3f57829003601f168201915b505050505081526020019060010190610ec4565b505050508152505081526020019060010190610e72565b50505050905090565b602354602554604051620186a0602482018190526001600160a01b039384166044830152929091166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a20000000000000000000000000000000000000000000000000000000017905260235460255491516370a0823160e01b81526001600160a01b0392831660048201529293506000929116906370a0823190602401602060405180830381865afa15801561106e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611092919061a064565b905061109f816000615221565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156110f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611114919061a064565b601f54604080516001600160a01b036101009093048316602482015260448082018a905282518083039091018152606490910182526020810180517fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911617905260235491517ff30c7ba300000000000000000000000000000000000000000000000000000000815293945092737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba3926111ef92911690600090869060040161a07d565b600060405180830381600087803b15801561120957600080fd5b505af115801561121d573d6000803e3d6000fd5b50506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156112af57600080fd5b505af11580156112c3573d6000803e3d6000fd5b5050601f54602354602554604080516101009094046001600160a01b039081168552602085018d9052928316908401521660608201527f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609250608001905060405180910390a16022546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156113b757600080fd5b505af11580156113cb573d6000803e3d6000fd5b50506020546040516001600160a01b0390911692507f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d9150611410908990889061a0a5565b60405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561147157600080fd5b505af1158015611485573d6000803e3d6000fd5b50506022546020546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef93506114dd92909116908a9089908b9060040161a0be565b600060405180830381600087803b1580156114f757600080fd5b505af115801561150b573d6000803e3d6000fd5b50506023546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a08231906024015b602060405180830381865afa15801561155f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611583919061a064565b905061158f8188615221565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156115e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611604919061a064565b9050611619816116148a8761a126565b615221565b602354601f546020546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526101009092046001600160a01b0390811660048401529081166024830152600092169063dd62ed3e90604401602060405180830381865afa158015611691573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b5919061a064565b90506116c2816000615221565b602354601f546040516370a0823160e01b81526101009091046001600160a01b03908116600483015260009216906370a0823190602401602060405180830381865afa158015611716573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173a919061a064565b9050611747816000615221565b50505050505050505050565b60606018805480602002602001604051908101604052809291908181526020018280548015610e44576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610e26575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610e44576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610e26575050505050905090565b6040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6ed701690000000000000000000000000000000000000000000000000000000017905260235460255493516370a0823160e01b8152620186a0946000949385936001600160a01b03908116936370a08231936118b593921691016001600160a01b0391909116815260200190565b602060405180830381865afa1580156118d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f6919061a064565b9050611903816000615221565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611954573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611978919061a064565b601f54604080516001600160a01b036101009093048316602482015260448082018a905282518083039091018152606490910182526020810180517fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911617905260235491517ff30c7ba300000000000000000000000000000000000000000000000000000000815293945092737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba392611a5392911690600090869060040161a07d565b600060405180830381600087803b158015611a6d57600080fd5b505af1158015611a81573d6000803e3d6000fd5b50506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015611b1357600080fd5b505af1158015611b27573d6000803e3d6000fd5b5050601f546040516101009091046001600160a01b031681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09250602001905060405180910390a16022546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611bfe57600080fd5b505af1158015611c12573d6000803e3d6000fd5b50506020546040516001600160a01b0390911692507f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d9150611c57908990889061a0a5565b60405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611cb857600080fd5b505af1158015611ccc573d6000803e3d6000fd5b50506022546020546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350611d2492909116908a9089908b9060040161a0be565b600060405180830381600087803b158015611d3e57600080fd5b505af1158015611d52573d6000803e3d6000fd5b50506023546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611da5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc9919061a064565b9050611dd6816000615221565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611e27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4b919061a064565b90506116198185615221565b602480546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d569101600060405180830381600087803b158015611ec857600080fd5b505af1158015611edc573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015611f6557600080fd5b505af1158015611f79573d6000803e3d6000fd5b50506022546040517f950837aa000000000000000000000000000000000000000000000000000000008152600060048201526001600160a01b03909116925063950837aa9150602401610567565b6022546040517f91d148540000000000000000000000000000000000000000000000000000000081527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4600482015261432160248201819052916000916001600160a01b03909116906391d1485490604401602060405180830381865afa158015612056573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207a919061a139565b9050612085816152a1565b6022546040517f91d148540000000000000000000000000000000000000000000000000000000081527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60048201526001600160a01b03848116602483015260009216906391d1485490604401602060405180830381865afa15801561210f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612133919061a139565b905061213e816152a1565b6022546026546040517f91d148540000000000000000000000000000000000000000000000000000000081527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460048201526001600160a01b03918216602482015260009291909116906391d1485490604401602060405180830381865afa1580156121ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f2919061a139565b90506121fd8161531b565b6022546026546040517f91d148540000000000000000000000000000000000000000000000000000000081527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60048201526001600160a01b03918216602482015260009291909116906391d1485490604401602060405180830381865afa15801561228d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122b1919061a139565b90506122bc8161531b565b602480546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d569101600060405180830381600087803b15801561232d57600080fd5b505af1158015612341573d6000803e3d6000fd5b50506022546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156123d357600080fd5b505af11580156123e7573d6000803e3d6000fd5b5050602654604080516001600160a01b03928316815291891660208301527f33770ab682353c17917ad3e667f05905fc8dda00671ef1ed33bef9bc8db0323e935001905060405180910390a16022546040517f950837aa0000000000000000000000000000000000000000000000000000000081526001600160a01b0387811660048301529091169063950837aa90602401600060405180830381600087803b15801561249357600080fd5b505af11580156124a7573d6000803e3d6000fd5b5050505061252b85602260009054906101000a90046001600160a01b03166001600160a01b0316635b1125916040518163ffffffff1660e01b8152600401602060405180830381865afa158015612502573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612526919061a15b565b61536d565b6022546040517f91d148540000000000000000000000000000000000000000000000000000000081527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460048201526001600160a01b038781166024830152909116906391d1485490604401602060405180830381865afa1580156125b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d8919061a139565b93506125e38461531b565b6022546040517f91d148540000000000000000000000000000000000000000000000000000000081527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60048201526001600160a01b038781166024830152909116906391d1485490604401602060405180830381865afa15801561266c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612690919061a139565b925061269b8361531b565b6022546026546040517f91d148540000000000000000000000000000000000000000000000000000000081527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460048201526001600160a01b0391821660248201529116906391d1485490604401602060405180830381865afa158015612726573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061274a919061a139565b9150612755826152a1565b6022546026546040517f91d148540000000000000000000000000000000000000000000000000000000081527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60048201526001600160a01b0391821660248201529116906391d1485490604401602060405180830381865afa1580156127e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612804919061a139565b905061280f816152a1565b5050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610f87578382906000526020600020906002020160405180604001604052908160008201805461286d90619f0c565b80601f016020809104026020016040519081016040528092919081815260200182805461289990619f0c565b80156128e65780601f106128bb576101008083540402835291602001916128e6565b820191906000526020600020905b8154815290600101906020018083116128c957829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561298057602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161292d5790505b5050505050815250508152602001906001019061283a565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f19018152908290526024805463ca669fa760e01b84526001600160a01b03166004840152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa79101600060405180830381600087803b158015612a3557600080fd5b505af1158015612a49573d6000803e3d6000fd5b505060248054604080516001600160a01b03909216928201929092527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448083019190915282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f0000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250612b389190600401619eca565b600060405180830381600087803b158015612b5257600080fd5b505af1158015612b66573d6000803e3d6000fd5b50506022546020546040517f6f8728ad0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450636f8728ad9350612bc1929091169087908690889060289060040161a261565b600060405180830381600087803b158015612bdb57600080fd5b505af1158015612bef573d6000803e3d6000fd5b50505050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610f87578382906000526020600020018054612c3b90619f0c565b80601f0160208091040260200160405190810160405280929190818152602001828054612c6790619f0c565b8015612cb45780601f10612c8957610100808354040283529160200191612cb4565b820191906000526020600020905b815481529060010190602001808311612c9757829003601f168201915b505050505081526020019060010190612c1c565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015610f875760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015612dab57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411612d585790505b50505050508152505081526020019060010190612cec565b602280546040805160608101909152828152612e0d926001600160a01b039092169161d01760208301396040805160208101909152600081526024546001600160a01b03166153ce565b6022546023546025546040516370a0823160e01b81526001600160a01b03918216600482015292811692620186a09260009283929116906370a0823190602401602060405180830381865afa158015612e6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e8e919061a064565b9050612e9b816000615221565b6025546040516001600160a01b0390911660248201526044810184905260009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260235490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391612f7b916001600160a01b039190911690600090869060040161a07d565b600060405180830381600087803b158015612f9557600080fd5b505af1158015612fa9573d6000803e3d6000fd5b50506040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b0388166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561303757600080fd5b505af115801561304b573d6000803e3d6000fd5b50506025546040518781526001600160a01b0390911692507f3e35ef4326151011878c9e8e968a0f3913fe98ca68f72a1e0c2e9be13ffb3ee9915060200160405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156130ea57600080fd5b505af11580156130fe573d6000803e3d6000fd5b50506025546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810188905260448101879052908816925063106e62909150606401600060405180830381600087803b15801561317057600080fd5b505af1158015613184573d6000803e3d6000fd5b50506023546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156131d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131fb919061a064565b90506132078186615221565b505050505050565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015610f875760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156132f257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161329f5790505b50505050508152505081526020019060010190613233565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610f8757838290600052602060002001805461334d90619f0c565b80601f016020809104026020016040519081016040528092919081815260200182805461337990619f0c565b80156133c65780601f1061339b576101008083540402835291602001916133c6565b820191906000526020600020905b8154815290600101906020018083116133a957829003601f168201915b50505050508152602001906001019061332e565b60085460009060ff16156133f2575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015613483573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134a7919061a064565b1415905090565b602354602554604051620186a0602482018190526001600160a01b039384166044830152929091166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a20000000000000000000000000000000000000000000000000000000017905260248054915163ca669fa760e01b81526001600160a01b039092166004830152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa79101600060405180830381600087803b15801561359557600080fd5b505af11580156135a9573d6000803e3d6000fd5b505060248054604080516001600160a01b03909216928201929092527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448083019190915282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f0000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506136989190600401619eca565b600060405180830381600087803b1580156136b257600080fd5b505af11580156136c6573d6000803e3d6000fd5b50506022546020546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350612bc1929091169087908690889060040161a0be565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152620186a090600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561377f57600080fd5b505af1158015613793573d6000803e3d6000fd5b5050602754604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061387e9190600401619eca565b600060405180830381600087803b15801561389857600080fd5b505af11580156138ac573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561390057600080fd5b505af1158015613914573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561397157600080fd5b505af1158015613985573d6000803e3d6000fd5b5050602754604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250613a709190600401619eca565b600060405180830381600087803b158015613a8a57600080fd5b505af1158015613a9e573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613af257600080fd5b505af1158015613b06573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015613b6357600080fd5b505af1158015613b77573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613bcb57600080fd5b505af1158015613bdf573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd93c0665000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015613c6857600080fd5b505af1158015613c7c573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015613cd957600080fd5b505af1158015613ced573d6000803e3d6000fd5b50506022546025546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101879052604481018690529116925063106e62909150606401600060405180830381600087803b158015613d6157600080fd5b505af1158015613d75573d6000803e3d6000fd5b50506024805460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063ca669fa7925001600060405180830381600087803b158015613dd157600080fd5b505af1158015613de5573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613e3957600080fd5b505af1158015613e4d573d6000803e3d6000fd5b50506023546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a08231906024015b602060405180830381865afa158015613ea1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ec5919061a064565b9050613ed2816000615221565b6025546040516001600160a01b0390911660248201526044810184905260009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260235490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391613fb2916001600160a01b039190911690600090869060040161a07d565b600060405180830381600087803b158015613fcc57600080fd5b505af1158015613fe0573d6000803e3d6000fd5b50506022546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561407257600080fd5b505af1158015614086573d6000803e3d6000fd5b50506025546040518781526001600160a01b0390911692507f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5915060200160405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561412557600080fd5b505af1158015614139573d6000803e3d6000fd5b50506022546025546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101899052604481018890529116925063106e62909150606401600060405180830381600087803b1580156141ad57600080fd5b505af11580156141c1573d6000803e3d6000fd5b50506023546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015614214573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614238919061a064565b905061280f8186615221565b6023546025546040516370a0823160e01b81526001600160a01b039182166004820152620186a09260009283929116906370a0823190602401613e84565b602354602554604051620186a0602482018190526001600160a01b039384166044830152929091166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc51316910000000000000000000000000000000000000000000000000000000017905260235460255491516370a0823160e01b81526001600160a01b0392831660048201529293506000929116906370a0823190602401602060405180830381865afa158015614360573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614384919061a064565b9050614391816000615221565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156143e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614406919061a064565b601f54604080516001600160a01b036101009093048316602482015260448082018a905282518083039091018152606490910182526020810180517fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911617905260235491517ff30c7ba300000000000000000000000000000000000000000000000000000000815293945092737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba3926144e192911690600090869060040161a07d565b600060405180830381600087803b1580156144fb57600080fd5b505af115801561450f573d6000803e3d6000fd5b50506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156145a157600080fd5b505af11580156145b5573d6000803e3d6000fd5b5050601f547f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60925061010090046001600160a01b031690506145f860028961a2ad565b602354602554604080516001600160a01b03958616815260208101949094529184168383015292909216606082015290519081900360800190a16022546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156146c057600080fd5b505af11580156146d4573d6000803e3d6000fd5b50506020546040516001600160a01b0390911692507f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d9150614719908990889061a0a5565b60405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561477a57600080fd5b505af115801561478e573d6000803e3d6000fd5b50506022546020546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef93506147e692909116908a9089908b9060040161a0be565b600060405180830381600087803b15801561480057600080fd5b505af1158015614814573d6000803e3d6000fd5b50506023546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015614867573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061488b919061a064565b905061489c8161161460028a61a2ad565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156148ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614911919061a064565b90506116198161492260028b61a2ad565b611614908761a126565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f19018152908290526023546020546370a0823160e01b84526001600160a01b0390811660048501529193506000929116906370a0823190602401602060405180830381865afa1580156149c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906149e6919061a064565b90506149f3816000615221565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015614a44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a68919061a064565b601f54604080516001600160a01b036101009093048316602482015260448082018a905282518083039091018152606490910182526020810180517fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911617905260235491517ff30c7ba300000000000000000000000000000000000000000000000000000000815293945092737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba392614b4392911690600090869060040161a07d565b600060405180830381600087803b158015614b5d57600080fd5b505af1158015614b71573d6000803e3d6000fd5b50506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015614c0357600080fd5b505af1158015614c17573d6000803e3d6000fd5b505050507f689a5a5cb55e795ffe4cd8b419cd3bb0a3373974c54d25f64e734d7388b93e9b601f60019054906101000a90046001600160a01b03166028604051614c6292919061a2e8565b60405180910390a1601f546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015614cfc57600080fd5b505af1158015614d10573d6000803e3d6000fd5b50506023546020546040516001600160a01b039283169450911691507fde7603a6ed5d07c9f43597ccfe9043d15b66d3284f0de321f5cdf56329e6e03590614d5e908a90899060289061a30a565b60405180910390a36022546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015614df457600080fd5b505af1158015614e08573d6000803e3d6000fd5b50506020546040516001600160a01b0390911692507f5272d2fee39bff41b2e763562526315906046373ce08a7bacf76c3080d731ff09150614e50908990889060289061a30a565b60405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614eb157600080fd5b505af1158015614ec5573d6000803e3d6000fd5b50506022546020546040517f6f8728ad0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450636f8728ad9350614f2092909116908a9089908b9060289060040161a261565b600060405180830381600087803b158015614f3a57600080fd5b505af1158015614f4e573d6000803e3d6000fd5b50506023546020546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401611542565b60606015805480602002602001604051908101604052809291908181526020018280548015610e44576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610e26575050505050905090565b6024805460405163ca669fa760e01b81526001600160a01b039091166004820152620186a091600091737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa79101600060405180830381600087803b15801561504957600080fd5b505af115801561505d573d6000803e3d6000fd5b505060248054604080516001600160a01b03909216928201929092527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448083019190915282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f0000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061514c9190600401619eca565b600060405180830381600087803b15801561516657600080fd5b505af115801561517a573d6000803e3d6000fd5b50506022546025546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101879052604481018690529116925063106e62909150606401600060405180830381600087803b1580156151ee57600080fd5b505af1158015613207573d6000803e3d6000fd5b600061520c619a63565b6152178484836153e3565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c54906044015b60006040518083038186803b15801561528d57600080fd5b505afa158015613207573d6000803e3d6000fd5b6040517fa59828850000000000000000000000000000000000000000000000000000000081528115156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063a5982885906024015b60006040518083038186803b15801561530757600080fd5b505afa15801561280f573d6000803e3d6000fd5b6040517f0c9fd5810000000000000000000000000000000000000000000000000000000081528115156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90630c9fd581906024016152ef565b6040517f515361f60000000000000000000000000000000000000000000000000000000081526001600160a01b03808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f690604401615275565b6153d6619a63565b61280f858585848661545e565b6000806153f0858461555e565b90506154536040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f7879000000815250828660405160200161543e92919061a335565b6040516020818303038152906040528561556a565b9150505b9392505050565b6040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201528190737109709ecfa91a80626ff3989d68f67f5b1dd12d9081906306447d5690602401600060405180830381600087803b1580156154d057600080fd5b505af19250505080156154e1575060015b6154f6576154f187878787615598565b612bef565b61550287878787615598565b806001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561553d57600080fd5b505af1158015615551573d6000803e3d6000fd5b5050505050505050505050565b600061545783836155b1565b60c0810151516000901561558e5761558784848460c001516155cc565b9050615457565b6155878484615772565b60006155a4848361585d565b905061280f858285615869565b60006155bd8383615c33565b6154578383602001518461556a565b6000806155d7615c43565b905060006155e58683615d16565b905060006155fc82606001518360200151856161bc565b9050600061560c838389896163ce565b905060006156198261724b565b602081015181519192509060030b1561568c5789826040015160405160200161564392919061a357565b60408051601f19818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261568391600401619eca565b60405180910390fd5b60006156cf6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a20000000000000000000000081525083600161741a565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90615722908490600401619eca565b602060405180830381865afa15801561573f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615763919061a15b565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc925906157c7908790600401619eca565b600060405180830381865afa1580156157e4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261580c919081019061a491565b9050600061583a828560405160200161582692919061a4c6565b60405160208183030381529060405261761a565b90506001600160a01b03811661521757848460405160200161564392919061a4f5565b60006155bd838361762d565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201527fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61036024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90600090829063667f9d7090604401602060405180830381865afa158015615905573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615929919061a064565b905080615ad057600061593b86617639565b604080518082018252600581527f352e302e30000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506159c6905b60408051808201825260008082526020918201528151808301909252845182528085019082015290617731565b806159d2575060008451115b15615a55576040517f4f1ef2860000000000000000000000000000000000000000000000000000000081526001600160a01b03871690634f1ef28690615a1e908890889060040161a335565b600060405180830381600087803b158015615a3857600080fd5b505af1158015615a4c573d6000803e3d6000fd5b50505050615aca565b6040517f3659cfe60000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152871690633659cfe690602401600060405180830381600087803b158015615ab157600080fd5b505af1158015615ac5573d6000803e3d6000fd5b505050505b5061280f565b806000615adc82617639565b604080518082018252600581527f352e302e3000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615b3e90615999565b80615b4a575060008551115b15615bcf576040517f9623609d0000000000000000000000000000000000000000000000000000000081526001600160a01b03831690639623609d90615b98908a908a908a9060040161a5a0565b600060405180830381600087803b158015615bb257600080fd5b505af1158015615bc6573d6000803e3d6000fd5b50505050612bef565b6040517f99a88ec40000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015287811660248301528316906399a88ec490604401600060405180830381600087803b15801561553d57600080fd5b615c3f82826000617745565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90615cca90849060040161a5d1565b600060405180830381865afa158015615ce7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615d0f919081019061a618565b9250505090565b615d486040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050615d936040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b615d9c85617848565b60208201526000615dac86617c2d565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015615dee573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615e16919081019061a618565b86838560200151604051602001615e30949392919061a661565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190615e88908590600401619eca565b600060405180830381865afa158015615ea5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615ecd919081019061a618565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690615f1590849060040161a765565b602060405180830381865afa158015615f32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615f56919061a139565b615f6b5781604051602001615643919061a7b7565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890615fb090849060040161a849565b600060405180830381865afa158015615fcd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615ff5919081019061a618565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f69061603c90849060040161a89b565b602060405180830381865afa158015616059573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061607d919061a139565b15616112576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906160c790849060040161a89b565b600060405180830381865afa1580156160e4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261610c919081019061a618565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001616137919061a8ed565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161616392919061a959565b600060405180830381865afa158015616180573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526161a8919081019061a618565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816161d85790505090506040518060400160405280600481526020017f6772657000000000000000000000000000000000000000000000000000000000815250816000815181106162385761623861a97e565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061628c5761628c61a97e565b6020026020010181905250846040516020016162a8919061a9ad565b604051602081830303815290604052816002815181106162ca576162ca61a97e565b6020026020010181905250826040516020016162e6919061aa19565b604051602081830303815290604052816003815181106163085761630861a97e565b6020026020010181905250600061631e8261724b565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506163af9060408051808201825260008082526020918201528151808301909252845182528085019082015290617eb0565b6163c45785604051602001615643919061aa5a565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d901561641e565b511590565b616592578260200151156164da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401615683565b8260c0015115616592576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401615683565b6040805160ff8082526120008201909252600091816020015b60608152602001906001900390816165ab57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806166069061aaeb565b935060ff168151811061661b5761661b61a97e565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e370000000000000000000000000000000000000081525060405160200161666c919061ab0a565b6040516020818303038152906040528282806166879061aaeb565b935060ff168151811061669c5761669c61a97e565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806166e99061aaeb565b935060ff16815181106166fe576166fe61a97e565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d6500000000000000000000000000000000000081525082828061674b9061aaeb565b935060ff16815181106167605761676061a97e565b6020026020010181905250876020015182828061677c9061aaeb565b935060ff16815181106167915761679161a97e565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806167de9061aaeb565b935060ff16815181106167f3576167f361a97e565b60209081029190910101528751828261680b8161aaeb565b935060ff16815181106168205761682061a97e565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e4964000000000000000000000000000000000000000000000081525082828061686d9061aaeb565b935060ff16815181106168825761688261a97e565b602002602001018190525061689646617f11565b82826168a18161aaeb565b935060ff16815181106168b6576168b661a97e565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c6500000000000000000000000000000000008152508282806169039061aaeb565b935060ff16815181106169185761691861a97e565b6020026020010181905250868282806169309061aaeb565b935060ff16815181106169455761694561a97e565b6020908102919091010152855115616a6c5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826169968161aaeb565b935060ff16815181106169ab576169ab61a97e565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d906169fb908990600401619eca565b600060405180830381865afa158015616a18573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616a40919081019061a618565b8282616a4b8161aaeb565b935060ff1681518110616a6057616a6061a97e565b60200260200101819052505b846020015115616b3c5760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282616ab58161aaeb565b935060ff1681518110616aca57616aca61a97e565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280616b179061aaeb565b935060ff1681518110616b2c57616b2c61a97e565b6020026020010181905250616d03565b616b746164198660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b616c075760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282616bb78161aaeb565b935060ff1681518110616bcc57616bcc61a97e565b60200260200101819052508460a00151604051602001616bec919061a9ad565b604051602081830303815290604052828280616b179061aaeb565b8460c00151158015616c4a575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152616c4890511590565b155b15616d035760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282616c8e8161aaeb565b935060ff1681518110616ca357616ca361a97e565b6020026020010181905250616cb788617fb1565b604051602001616cc7919061a9ad565b604051602081830303815290604052828280616ce29061aaeb565b935060ff1681518110616cf757616cf761a97e565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152616d3790511590565b616dcc5760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282616d7a8161aaeb565b935060ff1681518110616d8f57616d8f61a97e565b60200260200101819052508460400151828280616dab9061aaeb565b935060ff1681518110616dc057616dc061a97e565b60200260200101819052505b606085015115616eed5760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282616e158161aaeb565b935060ff1681518110616e2a57616e2a61a97e565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015616e99573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616ec1919081019061a618565b8282616ecc8161aaeb565b935060ff1681518110616ee157616ee161a97e565b60200260200101819052505b60e08501515115616f945760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282616f378161aaeb565b935060ff1681518110616f4c57616f4c61a97e565b6020026020010181905250616f688560e0015160000151617f11565b8282616f738161aaeb565b935060ff1681518110616f8857616f8861a97e565b60200260200101819052505b60e0850151602001511561703e5760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282616fe18161aaeb565b935060ff1681518110616ff657616ff661a97e565b60200260200101819052506170128560e0015160200151617f11565b828261701d8161aaeb565b935060ff16815181106170325761703261a97e565b60200260200101819052505b60e085015160400151156170e85760408051808201909152600e81527f2d2d6d61784665655065724761730000000000000000000000000000000000006020820152828261708b8161aaeb565b935060ff16815181106170a0576170a061a97e565b60200260200101819052506170bc8560e0015160400151617f11565b82826170c78161aaeb565b935060ff16815181106170dc576170dc61a97e565b60200260200101819052505b60e085015160600151156171925760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826171358161aaeb565b935060ff168151811061714a5761714a61a97e565b60200260200101819052506171668560e0015160600151617f11565b82826171718161aaeb565b935060ff16815181106171865761718661a97e565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156171b0576171b0619edd565b6040519080825280602002602001820160405280156171e357816020015b60608152602001906001900390816171ce5790505b50905060005b8260ff168160ff16101561723c57838160ff168151811061720c5761720c61a97e565b6020026020010151828260ff16815181106172295761722961a97e565b60209081029190910101526001016171e9565b5093505050505b949350505050565b6172726040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916172f89186910161ab75565b600060405180830381865afa158015617315573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261733d919081019061a618565b9050600061734b8683618aa0565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161737b9190619dbc565b6000604051808303816000875af115801561739a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526173c2919081019061abbc565b805190915060030b158015906173db5750602081015151155b80156173ea5750604081015151155b156163c457816000815181106174025761740261a97e565b6020026020010151604051602001615643919061ac72565b6060600061744f8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506174869082905b90618bf5565b156175e3576000617503826174fd846174f76174c98a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90618c1c565b90618c7e565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150617567908290618bf5565b156175d157604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526175ce905b8290618d03565b90505b6175da81618d29565b92505050615457565b82156175fc57848460405160200161564392919061ae5e565b5050604080516020810190915260008152615457565b509392505050565b6000808251602084016000f09392505050565b615c3f82826001617745565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fad3cb1cc00000000000000000000000000000000000000000000000000000000179052905160609160009182916001600160a01b038616916176ae919061af05565b600060405180830381855afa9150503d80600081146176e9576040519150601f19603f3d011682016040523d82523d6000602084013e6176ee565b606091505b5091509150818015617701575060208151115b1561771a5780806020019051810190617243919061a618565b505060408051602081019091526000815292915050565b600061773d8383618d92565b159392505050565b8160a001511561775457505050565b6000617761848484618e6d565b9050600061776e8261724b565b602081015181519192509060030b15801561780a5750604080518082018252600781527f53554343455353000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261780a90604080518082018252600080825260209182015281518083019092528451825280850190820152617480565b1561781757505050505050565b60408201515115617837578160400151604051602001615643919061af21565b80604051602001615643919061af7f565b6060600061787d8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506178e2905b8290617eb0565b1561795157604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526154579061794c908390619408565b618d29565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526179b3905b8290619492565b600103617a8057604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617a19906175c7565b50604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526154579061794c905b8390618d03565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617adf906178db565b15617c1657604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290617b4790839061952c565b905060008160018351617b5a919061a126565b81518110617b6a57617b6a61a97e565b60200260200101519050617c0d61794c617be06040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290619408565b95945050505050565b82604051602001615643919061afea565b50919050565b60606000617c628360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150617cc4906178db565b15617cd25761545781618d29565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617d31906179ac565b600103617d9b57604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526154579061794c90617a79565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617dfa906178db565b15617c1657604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290617e6290839061952c565b9050600181511115617e9e578060028251617e7d919061a126565b81518110617e8d57617e8d61a97e565b602002602001015192505050919050565b5082604051602001615643919061afea565b805182516000911115617ec55750600061521b565b81518351602085015160009291617edb9161b0c8565b617ee5919061a126565b905082602001518103617efc57600191505061521b565b82516020840151819020912014905092915050565b60606000617f1e836195d1565b600101905060008167ffffffffffffffff811115617f3e57617f3e619edd565b6040519080825280601f01601f191660200182016040528015617f68576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084617f7257509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e534544000000000000000000000000000000000000000000008184019081528551808701875283815284019290925284518086019095525184529083015260609161803d905b8290617731565b1561807d57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e73650000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526180dc90618036565b1561811c57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d495400000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261817b90618036565b156181bb57505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261821a90618036565b8061827f5750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261827f90618036565b156182bf57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261831e90618036565b806183835750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261838390618036565b156183c357505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261842290618036565b806184875750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261848790618036565b156184c757505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261852690618036565b8061858b5750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261858b90618036565b156185cb57505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261862a90618036565b1561866a57505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526186c990618036565b1561870957505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261876890618036565b156187a857505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261880790618036565b1561884757505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e3000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526188a690618036565b156188e657505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261894590618036565b806189aa5750604080518082018252601181527f4147504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526189aa90618036565b156189ea57505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e3100000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618a4990618036565b15618a8957505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151615643929060200161b0db565b60608060005b8451811015618b2b5781858281518110618ac257618ac261a97e565b6020026020010151604051602001618adb92919061a4c6565b604051602081830303815290604052915060018551618afa919061a126565b8114618b235781604051602001618b11919061b244565b60405160208183030381529060405291505b600101618aa6565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081618b445790505090508381600081518110618b6f57618b6f61a97e565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110618bc357618bc361a97e565b60200260200101819052508181600281518110618be257618be261a97e565b6020908102919091010152949350505050565b6020808301518351835192840151600093618c1392918491906196b3565b14159392505050565b60408051808201909152600080825260208201526000618c4e84600001518560200151856000015186602001516197c4565b9050836020015181618c60919061a126565b84518590618c6f90839061a126565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015618ca357508161521b565b6020808301519084015160019114618cca5750815160208481015190840151829020919020145b8015618cfb57825184518590618ce190839061a126565b9052508251602085018051618cf790839061b0c8565b9052505b509192915050565b6040805180820190915260008082526020820152618d228383836198e4565b5092915050565b60606000826000015167ffffffffffffffff811115618d4a57618d4a619edd565b6040519080825280601f01601f191660200182016040528015618d74576020820181803683370190505b5090506000602082019050618d22818560200151866000015161998f565b8151815160009190811115618da5575081515b6020808501519084015160005b83811015618e5e5782518251808214618e2e576000196020871015618e0d57600184618ddf89602061a126565b618de9919061b0c8565b618df490600861b285565b618dff90600261b383565b618e09919061a126565b1990505b8181168382168181039114618e2b57975061521b9650505050505050565b50505b618e3960208661b0c8565b9450618e4660208561b0c8565b93505050602081618e57919061b0c8565b9050618db2565b50845186516163c4919061b38f565b60606000618e79615c43565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081618e9657905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280618ef19061aaeb565b935060ff1681518110618f0657618f0661a97e565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001618f57919061b3af565b604051602081830303815290604052828280618f729061aaeb565b935060ff1681518110618f8757618f8761a97e565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280618fd49061aaeb565b935060ff1681518110618fe957618fe961a97e565b602002602001018190525082604051602001619005919061aa19565b6040516020818303038152906040528282806190209061aaeb565b935060ff16815181106190355761903561a97e565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e7472616374000000000000000000000000000000000000000000008152508282806190829061aaeb565b935060ff16815181106190975761909761a97e565b60200260200101819052506190ac8784619a09565b82826190b78161aaeb565b935060ff16815181106190cc576190cc61a97e565b6020908102919091010152855151156191785760408051808201909152600b81527f2d2d7265666572656e63650000000000000000000000000000000000000000006020820152828261911e8161aaeb565b935060ff16815181106191335761913361a97e565b602002602001018190525061914c866000015184619a09565b82826191578161aaeb565b935060ff168151811061916c5761916c61a97e565b60200260200101819052505b8560800151156191e65760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b0000000000000000602082015282826191c18161aaeb565b935060ff16815181106191d6576191d661a97e565b602002602001018190525061924c565b841561924c5760408051808201909152601281527f2d2d726571756972655265666572656e636500000000000000000000000000006020820152828261922b8161aaeb565b935060ff16815181106192405761924061a97e565b60200260200101819052505b604086015151156192e85760408051808201909152600d81527f2d2d756e73616665416c6c6f7700000000000000000000000000000000000000602082015282826192968161aaeb565b935060ff16815181106192ab576192ab61a97e565b602002602001018190525085604001518282806192c79061aaeb565b935060ff16815181106192dc576192dc61a97e565b60200260200101819052505b8560600151156193525760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d6573000000000000000000000000602082015282826193318161aaeb565b935060ff16815181106193465761934661a97e565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561937057619370619edd565b6040519080825280602002602001820160405280156193a357816020015b606081526020019060019003908161938e5790505b50905060005b8260ff168160ff1610156193fc57838160ff16815181106193cc576193cc61a97e565b6020026020010151828260ff16815181106193e9576193e961a97e565b60209081029190910101526001016193a9565b50979650505050505050565b604080518082019091526000808252602082015281518351101561942d57508161521b565b815183516020850151600092916194439161b0c8565b61944d919061a126565b6020840151909150600190821461946e575082516020840151819020908220145b80156194895783518551869061948590839061a126565b9052505b50929392505050565b60008082600001516194b685600001518660200151866000015187602001516197c4565b6194c0919061b0c8565b90505b835160208501516194d4919061b0c8565b8111618d2257816194e48161b3f4565b925050826000015161951b8560200151836194ff919061a126565b865161950b919061a126565b83866000015187602001516197c4565b619525919061b0c8565b90506194c3565b6060600061953a8484619492565b61954590600161b0c8565b67ffffffffffffffff81111561955d5761955d619edd565b60405190808252806020026020018201604052801561959057816020015b606081526020019060019003908161957b5790505b50905060005b8151811015617612576195ac61794c8686618d03565b8282815181106195be576195be61a97e565b6020908102919091010152600101619596565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061961a577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310619646576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061966457662386f26fc10000830492506010015b6305f5e100831061967c576305f5e100830492506008015b612710831061969057612710830492506004015b606483106196a2576064830492506002015b600a831061521b5760010192915050565b6000808584116197ba576020841161976657600084156196fe5760016196da86602061a126565b6196e590600861b285565b6196f090600261b383565b6196fa919061a126565b1990505b835181168561970d898961b0c8565b619717919061a126565b805190935082165b818114619751578784116197395787945050505050617243565b836197438161b40e565b94505082845116905061971f565b61975b878561b0c8565b945050505050617243565b838320619773858861a126565b61977d908761b0c8565b91505b8582106197b8578482208082036197a55761979b868461b0c8565b9350505050617243565b6197b060018461a126565b925050619780565b505b5092949350505050565b600083818685116198cf576020851161987e57600085156198105760016197ec87602061a126565b6197f790600861b285565b61980290600261b383565b61980c919061a126565b1990505b845181166000876198218b8b61b0c8565b61982b919061a126565b855190915083165b828114619870578186106198585761984b8b8b61b0c8565b9650505050505050617243565b856198628161b3f4565b965050838651169050619833565b859650505050505050617243565b508383206000905b619890868961a126565b82116198cd578583208082036198ac5783945050505050617243565b6198b760018561b0c8565b93505081806198c59061b3f4565b925050619886565b505b6198d9878761b0c8565b979650505050505050565b6040805180820190915260008082526020820152600061991685600001518660200151866000015187602001516197c4565b602080870180519186019190915251909150619932908261a126565b835284516020860151619945919061b0c8565b81036199545760008552619986565b83518351619962919061b0c8565b8551869061997190839061a126565b9052508351619980908261b0c8565b60208601525b50909392505050565b602081106199c757815183526199a660208461b0c8565b92506199b360208361b0c8565b91506199c060208261a126565b905061998f565b60001981156199f65760016199dd83602061a126565b6199e99061010061b383565b6199f3919061a126565b90505b9151835183169219169190911790915250565b60606000619a178484615d16565b8051602080830151604051939450619a319390910161b425565b60405160208183030381529060405291505092915050565b610c9f8061b47e83390190565b610efa8061c11d83390190565b6040518060e00160405280606081526020016060815260200160608152602001600015158152602001600015158152602001600015158152602001619aa6619aab565b905290565b60405180610100016040528060001515815260200160001515815260200160608152602001600080191681526020016060815260200160608152602001600015158152602001619aa66040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b81811015619b5d5783516001600160a01b0316835260209384019390920191600101619b36565b509095945050505050565b60005b83811015619b83578181015183820152602001619b6b565b50506000910152565b60008151808452619ba4816020860160208601619b68565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015619cb4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015619c9a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352619c84848651619b8c565b6020958601959094509290920191600101619c4a565b509197505050602094850194929092019150600101619be0565b50929695505050505050565b600081518084526020840193506020830160005b82811015619d145781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101619cd4565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015619cb4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752619d8a6040880182619b8c565b9050602082015191508681036020880152619da58183619cc0565b965050506020938401939190910190600101619d46565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015619cb4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452619e1e858351619b8c565b94506020938401939190910190600101619de4565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015619cb4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152619eb46040870182619cc0565b9550506020938401939190910190600101619e5b565b6020815260006154576020830184619b8c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600181811c90821680619f2057607f821691505b602082108103617c27577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b601f821115619fa057806000526020600020601f840160051c81016020851015619f805750805b601f840160051c820191505b8181101561280f5760008155600101619f8c565b505050565b815167ffffffffffffffff811115619fbf57619fbf619edd565b619fd381619fcd8454619f0c565b84619f59565b6020601f82116001811461a0075760008315619fef5750848201515b600019600385901b1c1916600184901b17845561280f565b600084815260208120601f198516915b8281101561a037578785015182556020948501946001909201910161a017565b508482101561a0555786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b60006020828403121561a07657600080fd5b5051919050565b6001600160a01b0384168152826020820152606060408201526000617c0d6060830184619b8c565b8281526040602082015260006172436040830184619b8c565b6001600160a01b038516815283602082015260806040820152600061a0e66080830185619b8c565b905082606083015295945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561521b5761521b61a0f7565b60006020828403121561a14b57600080fd5b8151801515811461545757600080fd5b60006020828403121561a16d57600080fd5b81516001600160a01b038116811461545757600080fd5b6001600160a01b0381541682526001600160a01b03600182015416602083015260028101546040830152600060038201608060608501526000815461a1c881619f0c565b806080880152600182166000811461a1e7576001811461a2215761a255565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831660a089015260a082151560051b890101935061a255565b84600052602060002060005b8381101561a24c5781548a820160a0015260019091019060200161a22d565b890160a0019450505b50919695505050505050565b6001600160a01b038616815284602082015260a06040820152600061a28960a0830186619b8c565b846060840152828103608084015261a2a1818561a184565b98975050505050505050565b60008261a2e3577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6001600160a01b0383168152604060208201526000617243604083018461a184565b83815260606020820152600061a3236060830185619b8c565b82810360408401526163c4818561a184565b6001600160a01b03831681526040602082015260006172436040830184619b8c565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161a38f81601a850160208801619b68565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161a3cc81601c840160208801619b68565b01601c01949350505050565b6040516060810167ffffffffffffffff8111828210171561a3fb5761a3fb619edd565b60405290565b60008067ffffffffffffffff84111561a41c5761a41c619edd565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561a44b5761a44b619edd565b60405283815290508082840185101561a46357600080fd5b617612846020830185619b68565b600082601f83011261a48257600080fd5b6154578383516020850161a401565b60006020828403121561a4a357600080fd5b815167ffffffffffffffff81111561a4ba57600080fd5b6152178482850161a471565b6000835161a4d8818460208801619b68565b83519083019061a4ec818360208801619b68565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161a52d81601a850160208801619b68565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161a56a816033840160208801619b68565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b6001600160a01b03841681526001600160a01b0383166020820152606060408201526000617c0d6060830184619b8c565b60408152600b60408201527f464f554e4452595f4f555400000000000000000000000000000000000000000060608201526080602082015260006154576080830184619b8c565b60006020828403121561a62a57600080fd5b815167ffffffffffffffff81111561a64157600080fd5b8201601f8101841361a65257600080fd5b6152178482516020840161a401565b6000855161a673818460208a01619b68565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161a6ad816001840160208a01619b68565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161a6eb816002840160208901619b68565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161a72d816002840160208801619b68565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061a7786040830184619b8c565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161a7ef81601f850160208701619b68565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061a85c6040830184619b8c565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061a8ae6040830184619b8c565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161a925816014850160208701619b68565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061a96c6040830185619b8c565b82810360208401526154538185619b8c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161a9e5816001850160208701619b68565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161aa2b818460208701619b68565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161aade81604b850160208701619b68565b91909101604b0192915050565b600060ff821660ff810361ab015761ab0161a0f7565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161ab68816029850160208701619b68565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f504154480000000000000000000060608201526080602082015260006154576080830184619b8c565b60006020828403121561abce57600080fd5b815167ffffffffffffffff81111561abe557600080fd5b82016060818503121561abf757600080fd5b61abff61a3d8565b81518060030b811461ac1057600080fd5b8152602082015167ffffffffffffffff81111561ac2c57600080fd5b61ac388682850161a471565b602083015250604082015167ffffffffffffffff81111561ac5857600080fd5b61ac648682850161a471565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161acd0816021850160208701619b68565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161aebc816021850160208801619b68565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161aef981602e840160208801619b68565b01602e01949350505050565b6000825161af17818460208701619b68565b9190910192915050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161ab68816029850160208701619b68565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161afdd816022850160208701619b68565b9190910160220192915050565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161b02281600e850160208701619b68565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b8082018082111561521b5761521b61a0f7565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161b113816018850160208801619b68565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161b15081601c840160208801619b68565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161b256818460208701619b68565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b808202811582820484141761521b5761521b61a0f7565b6001815b600184111561b2d75780850481111561b2bb5761b2bb61a0f7565b600184161561b2c957908102905b60019390931c92800261b2a0565b935093915050565b60008261b2ee5750600161521b565b8161b2fb5750600061521b565b816001811461b311576002811461b31b5761b337565b600191505061521b565b60ff84111561b32c5761b32c61a0f7565b50506001821b61521b565b5060208310610133831016604e8410600b841016171561b35a575081810a61521b565b61b367600019848461b29c565b806000190482111561b37b5761b37b61a0f7565b029392505050565b6000615457838361b2df565b8181036000831280158383131683831282161715618d2257618d2261a0f7565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161b3e781601c850160208701619b68565b91909101601c0192915050565b6000600019820361b4075761b40761a0f7565b5060010190565b60008161b41d5761b41d61a0f7565b506000190190565b6000835161b437818460208801619b68565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161b471816001840160208801619b68565b0160010194935050505056fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220a043c41353215fce25ecb67a8a4f6f724aaa86dea8dcb0a6975bfb1f10ff3beb64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610ed6806100246000396000f3fe60806040526004361061006e5760003560e01c8063c51316911161004b578063c5131691146100d5578063c9028a36146100f5578063e04d4f9714610115578063f05b6abf1461012857005b8063357fc5a214610077578063676cc054146100975780636ed70169146100c057005b3661007557005b005b34801561008357600080fd5b50610075610092366004610724565b610148565b6100aa6100a5366004610760565b6101de565b6040516100b7919061085b565b60405180910390f35b3480156100cc57600080fd5b50610075610211565b3480156100e157600080fd5b506100756100f0366004610724565b610246565b34801561010157600080fd5b5061007561011036600461086e565b610321565b6100756101233660046109ce565b61035d565b34801561013457600080fd5b50610075610143366004610aba565b6103a1565b6101506103d6565b61017273ffffffffffffffffffffffffffffffffffffffff8316338386610419565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101d96001600055565b505050565b6040516060907f3658b46bab672c7672b69c2f0feda706eabdb7d2231421c96e9049b2db5e7eee90600090a19392505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b61024e6103d6565b600061025b600285610ba4565b905080600003610297576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102b973ffffffffffffffffffffffffffffffffffffffff8416338484610419565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101d96001600055565b7f689a5a5cb55e795ffe4cd8b419cd3bb0a3373974c54d25f64e734d7388b93e9b3382604051610352929190610c28565b60405180910390a150565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610394959493929190610d1a565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103949493929190610da4565b600260005403610412576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526104ae9085906104b4565b50505050565b60006104d673ffffffffffffffffffffffffffffffffffffffff84168361054f565b905080516000141580156104fb5750808060200190518101906104f99190610e67565b155b156101d9576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061055d83836000610564565b9392505050565b6060814710156105a2576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610546565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105cb9190610e84565b60006040518083038185875af1925050503d8060008114610608576040519150601f19603f3d011682016040523d82523d6000602084013e61060d565b606091505b509150915061061d868383610627565b9695505050505050565b60608261063c57610637826106b6565b61055d565b8151158015610660575073ffffffffffffffffffffffffffffffffffffffff84163b155b156106af576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610546565b508061055d565b8051156106c65780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff8116811461071f57600080fd5b919050565b60008060006060848603121561073957600080fd5b83359250610749602085016106fb565b9150610757604085016106fb565b90509250925092565b6000806000838503604081121561077657600080fd5b602081121561078457600080fd5b50839250602084013567ffffffffffffffff8111156107a257600080fd5b8401601f810186136107b357600080fd5b803567ffffffffffffffff8111156107ca57600080fd5b8660208284010111156107dc57600080fd5b939660209190910195509293505050565b60005b838110156108085781810151838201526020016107f0565b50506000910152565b600081518084526108298160208601602086016107ed565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061055d6020830184610811565b60006020828403121561088057600080fd5b813567ffffffffffffffff81111561089757600080fd5b82016080818503121561055d57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561091f5761091f6108a9565b604052919050565b600082601f83011261093857600080fd5b813567ffffffffffffffff811115610952576109526108a9565b61098360207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016108d8565b81815284602083860101111561099857600080fd5b816020850160208301376000918101602001919091529392505050565b80151581146106f857600080fd5b803561071f816109b5565b6000806000606084860312156109e357600080fd5b833567ffffffffffffffff8111156109fa57600080fd5b610a0686828701610927565b935050602084013591506040840135610a1e816109b5565b809150509250925092565b600067ffffffffffffffff821115610a4357610a436108a9565b5060051b60200190565b600082601f830112610a5e57600080fd5b8135610a71610a6c82610a29565b6108d8565b8082825260208201915060208360051b860101925085831115610a9357600080fd5b602085015b83811015610ab0578035835260209283019201610a98565b5095945050505050565b600080600060608486031215610acf57600080fd5b833567ffffffffffffffff811115610ae657600080fd5b8401601f81018613610af757600080fd5b8035610b05610a6c82610a29565b8082825260208201915060208360051b850101925088831115610b2757600080fd5b602084015b83811015610b6957803567ffffffffffffffff811115610b4b57600080fd5b610b5a8b602083890101610927565b84525060209283019201610b2c565b509550505050602084013567ffffffffffffffff811115610b8957600080fd5b610b9586828701610a4d565b925050610757604085016109c3565b600082610bda577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015273ffffffffffffffffffffffffffffffffffffffff610c66836106fb565b16604082015273ffffffffffffffffffffffffffffffffffffffff610c8d602084016106fb565b166060820152600080604084013590508060808401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610cd957600080fd5b830160208101903567ffffffffffffffff811115610cf657600080fd5b803603821315610d0557600080fd5b608060a085015261061d60c085018284610bdf565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610d4f60a0830186610811565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610d9a578151865260209586019590910190600101610d7c565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610e37577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610e22858351610811565b94506020938401939190910190600101610de8565b505050508281036040840152610e4d8186610d68565b915050610e5e606083018415159052565b95945050505050565b600060208284031215610e7957600080fd5b815161055d816109b5565b60008251610e968184602087016107ed565b919091019291505056fea2646970667358221220db940ec4fecaa3b11f71d6cf6ef0ac3141552c5e39d750c1e2295a761a9396ad64736f6c634300081a00335a657461436f6e6e6563746f724e617469766555706772616465546573742e736f6ca2646970667358221220efeebeed7edcd3fa9bf4a44d81a03c7e3ff388a4c11f84bf05af3f431dce4bf764736f6c634300081a0033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061d0368061003c6000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c8063a217fddf11610104578063ccb0e3f2116100a2578063e20c9f7111610071578063e20c9f7114610357578063e63ab1e91461035f578063fa7626d414610386578063fe574f841461039357600080fd5b8063ccb0e3f214610337578063d509b16c1461033f578063dcf7d03714610347578063de1cb76c1461034f57600080fd5b8063b0464fdc116100de578063b0464fdc14610307578063b5508aa91461030f578063ba414fa614610317578063c19099721461032f57600080fd5b8063a217fddf146102d0578063a783c789146102d8578063af298bb1146102ff57600080fd5b8063493465581161017c578063828320141161014b578063828320141461026957806385226c811461027157806385f438c114610286578063916a17c6146102bb57600080fd5b8063493465581461023c5780634df42da11461024457806352ff59391461024c57806366d9a9a01461025457600080fd5b80632ade3880116101b85780632ade38801461020f5780633cba0107146102245780633e5e3c231461022c5780633f7286f41461023457600080fd5b8063070f2ad0146101df5780630a9254e4146101e95780631ed7831c146101f1575b600080fd5b6101e761039b565b005b6101e761059b565b6101f9610dec565b6040516102069190619b1c565b60405180910390f35b610217610e4e565b6040516102069190619bb8565b6101e7610f90565b6101f9611753565b6101f96117b3565b6101e7611813565b6101e7611e57565b6101e7611fc7565b61025c612816565b6040516102069190619d1e565b6101e7612998565b610279612bf8565b6040516102069190619dbc565b6102ad7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b604051908152602001610206565b6102c3612cc8565b6040516102069190619e33565b6102ad600081565b6102ad7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b6101e7612dc3565b6102c361320f565b61027961330a565b61031f6133da565b6040519015158152602001610206565b6101e76134ae565b6101e761371e565b6101e7614244565b6101e7614282565b6101e761492c565b6101f9614f89565b6102ad7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b601f5461031f9060ff1681565b6101e7614fe9565b6026546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b15801561040d57600080fd5b505af1158015610421573d6000803e3d6000fd5b5050602654604080516001600160a01b039092166024830152600060448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506104ed9190600401619eca565b600060405180830381600087803b15801561050757600080fd5b505af115801561051b573d6000803e3d6000fd5b5050602254602480546040517f950837aa0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529216935063950837aa9250015b600060405180830381600087803b15801561058157600080fd5b505af1158015610595573d6000803e3d6000fd5b50505050565b602480547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602580548216611234179055602680548216615678179055602780549091166198761790556040516105f990619a49565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f08015801561067d573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600e81527f4761746577617945564d2e736f6c00000000000000000000000000000000000060208201526026546024805493519186169082015260448101939093529216606482015260009161076f916084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc0c53b8b00000000000000000000000000000000000000000000000000000000179052615202565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0384811682029290921792839055604080518082018252601081527f4552433230437573746f64792e736f6c000000000000000000000000000000006020820152602654602480549351949096048516958401959095529383166044830152909116606482015291925061081591608401610712565b602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383811691909117909155604080518082018252601781527f5a657461436f6e6e6563746f724e61746976652e736f6c0000000000000000006020820152601f5460235460265460248054955161010090940487169084015290851660448301528416606482015291909216608482015291925061091a9160a40160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff8c8765e00000000000000000000000000000000000000000000000000000000179052615202565b602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03831617905560405190915061095c90619a56565b604051809103906000f080158015610978573d6000803e3d6000fd5b50602080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556026546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b158015610a2457600080fd5b505af1158015610a38573d6000803e3d6000fd5b5050602480546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d93506306447d56925001600060405180830381600087803b158015610aad57600080fd5b505af1158015610ac1573d6000803e3d6000fd5b5050601f546021546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261010090920416925063ae7a3a6f9150602401600060405180830381600087803b158015610b2c57600080fd5b505af1158015610b40573d6000803e3d6000fd5b5050601f546022546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526101009092041692506310188aef9150602401600060405180830381600087803b158015610bab57600080fd5b505af1158015610bbf573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610c2157600080fd5b505af1158015610c35573d6000803e3d6000fd5b50506023546022546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152624c4b406024820152911692506340c10f199150604401600060405180830381600087803b158015610ca457600080fd5b505af1158015610cb8573d6000803e3d6000fd5b50506026546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610d3c57600080fd5b505af1158015610d50573d6000803e3d6000fd5b5050604080516080810182526024546001600160a01b039081168252602354811660208084019182526001848601908152855191820190955260008152606084018190528351602880549185167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316178155925160298054919095169116179092559251602a55909350909150602b906105959082619fa5565b60606016805480602002602001604051908101604052809291908181526020018280548015610e4457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610e26575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015610f8757600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610f70578382906000526020600020018054610ee390619f0c565b80601f0160208091040260200160405190810160405280929190818152602001828054610f0f90619f0c565b8015610f5c5780601f10610f3157610100808354040283529160200191610f5c565b820191906000526020600020905b815481529060010190602001808311610f3f57829003601f168201915b505050505081526020019060010190610ec4565b505050508152505081526020019060010190610e72565b50505050905090565b602354602554604051620186a0602482018190526001600160a01b039384166044830152929091166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a20000000000000000000000000000000000000000000000000000000017905260235460255491516370a0823160e01b81526001600160a01b0392831660048201529293506000929116906370a0823190602401602060405180830381865afa15801561106e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611092919061a064565b905061109f816000615221565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156110f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611114919061a064565b601f54604080516001600160a01b036101009093048316602482015260448082018a905282518083039091018152606490910182526020810180517fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911617905260235491517ff30c7ba300000000000000000000000000000000000000000000000000000000815293945092737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba3926111ef92911690600090869060040161a07d565b600060405180830381600087803b15801561120957600080fd5b505af115801561121d573d6000803e3d6000fd5b50506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156112af57600080fd5b505af11580156112c3573d6000803e3d6000fd5b5050601f54602354602554604080516101009094046001600160a01b039081168552602085018d9052928316908401521660608201527f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609250608001905060405180910390a16022546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156113b757600080fd5b505af11580156113cb573d6000803e3d6000fd5b50506020546040516001600160a01b0390911692507f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d9150611410908990889061a0a5565b60405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561147157600080fd5b505af1158015611485573d6000803e3d6000fd5b50506022546020546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef93506114dd92909116908a9089908b9060040161a0be565b600060405180830381600087803b1580156114f757600080fd5b505af115801561150b573d6000803e3d6000fd5b50506023546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a08231906024015b602060405180830381865afa15801561155f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611583919061a064565b905061158f8188615221565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156115e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611604919061a064565b9050611619816116148a8761a126565b615221565b602354601f546020546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526101009092046001600160a01b0390811660048401529081166024830152600092169063dd62ed3e90604401602060405180830381865afa158015611691573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b5919061a064565b90506116c2816000615221565b602354601f546040516370a0823160e01b81526101009091046001600160a01b03908116600483015260009216906370a0823190602401602060405180830381865afa158015611716573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173a919061a064565b9050611747816000615221565b50505050505050505050565b60606018805480602002602001604051908101604052809291908181526020018280548015610e44576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610e26575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610e44576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610e26575050505050905090565b6040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6ed701690000000000000000000000000000000000000000000000000000000017905260235460255493516370a0823160e01b8152620186a0946000949385936001600160a01b03908116936370a08231936118b593921691016001600160a01b0391909116815260200190565b602060405180830381865afa1580156118d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f6919061a064565b9050611903816000615221565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611954573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611978919061a064565b601f54604080516001600160a01b036101009093048316602482015260448082018a905282518083039091018152606490910182526020810180517fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911617905260235491517ff30c7ba300000000000000000000000000000000000000000000000000000000815293945092737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba392611a5392911690600090869060040161a07d565b600060405180830381600087803b158015611a6d57600080fd5b505af1158015611a81573d6000803e3d6000fd5b50506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015611b1357600080fd5b505af1158015611b27573d6000803e3d6000fd5b5050601f546040516101009091046001600160a01b031681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09250602001905060405180910390a16022546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611bfe57600080fd5b505af1158015611c12573d6000803e3d6000fd5b50506020546040516001600160a01b0390911692507f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d9150611c57908990889061a0a5565b60405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611cb857600080fd5b505af1158015611ccc573d6000803e3d6000fd5b50506022546020546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350611d2492909116908a9089908b9060040161a0be565b600060405180830381600087803b158015611d3e57600080fd5b505af1158015611d52573d6000803e3d6000fd5b50506023546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611da5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc9919061a064565b9050611dd6816000615221565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611e27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4b919061a064565b90506116198185615221565b602480546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d569101600060405180830381600087803b158015611ec857600080fd5b505af1158015611edc573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015611f6557600080fd5b505af1158015611f79573d6000803e3d6000fd5b50506022546040517f950837aa000000000000000000000000000000000000000000000000000000008152600060048201526001600160a01b03909116925063950837aa9150602401610567565b6022546040517f91d148540000000000000000000000000000000000000000000000000000000081527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4600482015261432160248201819052916000916001600160a01b03909116906391d1485490604401602060405180830381865afa158015612056573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207a919061a139565b9050612085816152a1565b6022546040517f91d148540000000000000000000000000000000000000000000000000000000081527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60048201526001600160a01b03848116602483015260009216906391d1485490604401602060405180830381865afa15801561210f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612133919061a139565b905061213e816152a1565b6022546026546040517f91d148540000000000000000000000000000000000000000000000000000000081527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460048201526001600160a01b03918216602482015260009291909116906391d1485490604401602060405180830381865afa1580156121ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f2919061a139565b90506121fd8161531b565b6022546026546040517f91d148540000000000000000000000000000000000000000000000000000000081527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60048201526001600160a01b03918216602482015260009291909116906391d1485490604401602060405180830381865afa15801561228d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122b1919061a139565b90506122bc8161531b565b602480546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d569101600060405180830381600087803b15801561232d57600080fd5b505af1158015612341573d6000803e3d6000fd5b50506022546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156123d357600080fd5b505af11580156123e7573d6000803e3d6000fd5b5050602654604080516001600160a01b03928316815291891660208301527f33770ab682353c17917ad3e667f05905fc8dda00671ef1ed33bef9bc8db0323e935001905060405180910390a16022546040517f950837aa0000000000000000000000000000000000000000000000000000000081526001600160a01b0387811660048301529091169063950837aa90602401600060405180830381600087803b15801561249357600080fd5b505af11580156124a7573d6000803e3d6000fd5b5050505061252b85602260009054906101000a90046001600160a01b03166001600160a01b0316635b1125916040518163ffffffff1660e01b8152600401602060405180830381865afa158015612502573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612526919061a15b565b61536d565b6022546040517f91d148540000000000000000000000000000000000000000000000000000000081527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460048201526001600160a01b038781166024830152909116906391d1485490604401602060405180830381865afa1580156125b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d8919061a139565b93506125e38461531b565b6022546040517f91d148540000000000000000000000000000000000000000000000000000000081527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60048201526001600160a01b038781166024830152909116906391d1485490604401602060405180830381865afa15801561266c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612690919061a139565b925061269b8361531b565b6022546026546040517f91d148540000000000000000000000000000000000000000000000000000000081527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460048201526001600160a01b0391821660248201529116906391d1485490604401602060405180830381865afa158015612726573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061274a919061a139565b9150612755826152a1565b6022546026546040517f91d148540000000000000000000000000000000000000000000000000000000081527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60048201526001600160a01b0391821660248201529116906391d1485490604401602060405180830381865afa1580156127e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612804919061a139565b905061280f816152a1565b5050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610f87578382906000526020600020906002020160405180604001604052908160008201805461286d90619f0c565b80601f016020809104026020016040519081016040528092919081815260200182805461289990619f0c565b80156128e65780601f106128bb576101008083540402835291602001916128e6565b820191906000526020600020905b8154815290600101906020018083116128c957829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561298057602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161292d5790505b5050505050815250508152602001906001019061283a565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f19018152908290526024805463ca669fa760e01b84526001600160a01b03166004840152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa79101600060405180830381600087803b158015612a3557600080fd5b505af1158015612a49573d6000803e3d6000fd5b505060248054604080516001600160a01b03909216928201929092527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448083019190915282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f0000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250612b389190600401619eca565b600060405180830381600087803b158015612b5257600080fd5b505af1158015612b66573d6000803e3d6000fd5b50506022546020546040517f6f8728ad0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450636f8728ad9350612bc1929091169087908690889060289060040161a261565b600060405180830381600087803b158015612bdb57600080fd5b505af1158015612bef573d6000803e3d6000fd5b50505050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610f87578382906000526020600020018054612c3b90619f0c565b80601f0160208091040260200160405190810160405280929190818152602001828054612c6790619f0c565b8015612cb45780601f10612c8957610100808354040283529160200191612cb4565b820191906000526020600020905b815481529060010190602001808311612c9757829003601f168201915b505050505081526020019060010190612c1c565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015610f875760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015612dab57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411612d585790505b50505050508152505081526020019060010190612cec565b602280546040805160608101909152828152612e0d926001600160a01b039092169161cfdf60208301396040805160208101909152600081526024546001600160a01b03166153ce565b6022546023546025546040516370a0823160e01b81526001600160a01b03918216600482015292811692620186a09260009283929116906370a0823190602401602060405180830381865afa158015612e6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e8e919061a064565b9050612e9b816000615221565b6025546040516001600160a01b0390911660248201526044810184905260009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260235490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391612f7b916001600160a01b039190911690600090869060040161a07d565b600060405180830381600087803b158015612f9557600080fd5b505af1158015612fa9573d6000803e3d6000fd5b50506040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b0388166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561303757600080fd5b505af115801561304b573d6000803e3d6000fd5b50506025546040518781526001600160a01b0390911692507f3e35ef4326151011878c9e8e968a0f3913fe98ca68f72a1e0c2e9be13ffb3ee9915060200160405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156130ea57600080fd5b505af11580156130fe573d6000803e3d6000fd5b50506025546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810188905260448101879052908816925063106e62909150606401600060405180830381600087803b15801561317057600080fd5b505af1158015613184573d6000803e3d6000fd5b50506023546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156131d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131fb919061a064565b90506132078186615221565b505050505050565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015610f875760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156132f257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161329f5790505b50505050508152505081526020019060010190613233565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610f8757838290600052602060002001805461334d90619f0c565b80601f016020809104026020016040519081016040528092919081815260200182805461337990619f0c565b80156133c65780601f1061339b576101008083540402835291602001916133c6565b820191906000526020600020905b8154815290600101906020018083116133a957829003601f168201915b50505050508152602001906001019061332e565b60085460009060ff16156133f2575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015613483573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134a7919061a064565b1415905090565b602354602554604051620186a0602482018190526001600160a01b039384166044830152929091166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a20000000000000000000000000000000000000000000000000000000017905260248054915163ca669fa760e01b81526001600160a01b039092166004830152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa79101600060405180830381600087803b15801561359557600080fd5b505af11580156135a9573d6000803e3d6000fd5b505060248054604080516001600160a01b03909216928201929092527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448083019190915282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f0000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506136989190600401619eca565b600060405180830381600087803b1580156136b257600080fd5b505af11580156136c6573d6000803e3d6000fd5b50506022546020546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350612bc1929091169087908690889060040161a0be565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152620186a090600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561377f57600080fd5b505af1158015613793573d6000803e3d6000fd5b5050602754604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061387e9190600401619eca565b600060405180830381600087803b15801561389857600080fd5b505af11580156138ac573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561390057600080fd5b505af1158015613914573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561397157600080fd5b505af1158015613985573d6000803e3d6000fd5b5050602754604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250613a709190600401619eca565b600060405180830381600087803b158015613a8a57600080fd5b505af1158015613a9e573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613af257600080fd5b505af1158015613b06573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015613b6357600080fd5b505af1158015613b77573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613bcb57600080fd5b505af1158015613bdf573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd93c0665000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015613c6857600080fd5b505af1158015613c7c573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015613cd957600080fd5b505af1158015613ced573d6000803e3d6000fd5b50506022546025546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101879052604481018690529116925063106e62909150606401600060405180830381600087803b158015613d6157600080fd5b505af1158015613d75573d6000803e3d6000fd5b50506024805460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063ca669fa7925001600060405180830381600087803b158015613dd157600080fd5b505af1158015613de5573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613e3957600080fd5b505af1158015613e4d573d6000803e3d6000fd5b50506023546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a08231906024015b602060405180830381865afa158015613ea1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ec5919061a064565b9050613ed2816000615221565b6025546040516001600160a01b0390911660248201526044810184905260009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260235490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391613fb2916001600160a01b039190911690600090869060040161a07d565b600060405180830381600087803b158015613fcc57600080fd5b505af1158015613fe0573d6000803e3d6000fd5b50506022546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561407257600080fd5b505af1158015614086573d6000803e3d6000fd5b50506025546040518781526001600160a01b0390911692507f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5915060200160405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561412557600080fd5b505af1158015614139573d6000803e3d6000fd5b50506022546025546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101899052604481018890529116925063106e62909150606401600060405180830381600087803b1580156141ad57600080fd5b505af11580156141c1573d6000803e3d6000fd5b50506023546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015614214573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614238919061a064565b905061280f8186615221565b6023546025546040516370a0823160e01b81526001600160a01b039182166004820152620186a09260009283929116906370a0823190602401613e84565b602354602554604051620186a0602482018190526001600160a01b039384166044830152929091166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc51316910000000000000000000000000000000000000000000000000000000017905260235460255491516370a0823160e01b81526001600160a01b0392831660048201529293506000929116906370a0823190602401602060405180830381865afa158015614360573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614384919061a064565b9050614391816000615221565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156143e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614406919061a064565b601f54604080516001600160a01b036101009093048316602482015260448082018a905282518083039091018152606490910182526020810180517fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911617905260235491517ff30c7ba300000000000000000000000000000000000000000000000000000000815293945092737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba3926144e192911690600090869060040161a07d565b600060405180830381600087803b1580156144fb57600080fd5b505af115801561450f573d6000803e3d6000fd5b50506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156145a157600080fd5b505af11580156145b5573d6000803e3d6000fd5b5050601f547f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60925061010090046001600160a01b031690506145f860028961a2ad565b602354602554604080516001600160a01b03958616815260208101949094529184168383015292909216606082015290519081900360800190a16022546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156146c057600080fd5b505af11580156146d4573d6000803e3d6000fd5b50506020546040516001600160a01b0390911692507f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d9150614719908990889061a0a5565b60405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561477a57600080fd5b505af115801561478e573d6000803e3d6000fd5b50506022546020546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef93506147e692909116908a9089908b9060040161a0be565b600060405180830381600087803b15801561480057600080fd5b505af1158015614814573d6000803e3d6000fd5b50506023546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015614867573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061488b919061a064565b905061489c8161161460028a61a2ad565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156148ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614911919061a064565b90506116198161492260028b61a2ad565b611614908761a126565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f19018152908290526023546020546370a0823160e01b84526001600160a01b0390811660048501529193506000929116906370a0823190602401602060405180830381865afa1580156149c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906149e6919061a064565b90506149f3816000615221565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015614a44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a68919061a064565b601f54604080516001600160a01b036101009093048316602482015260448082018a905282518083039091018152606490910182526020810180517fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911617905260235491517ff30c7ba300000000000000000000000000000000000000000000000000000000815293945092737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba392614b4392911690600090869060040161a07d565b600060405180830381600087803b158015614b5d57600080fd5b505af1158015614b71573d6000803e3d6000fd5b50506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015614c0357600080fd5b505af1158015614c17573d6000803e3d6000fd5b505050507f689a5a5cb55e795ffe4cd8b419cd3bb0a3373974c54d25f64e734d7388b93e9b601f60019054906101000a90046001600160a01b03166028604051614c6292919061a2e8565b60405180910390a1601f546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015614cfc57600080fd5b505af1158015614d10573d6000803e3d6000fd5b50506023546020546040516001600160a01b039283169450911691507fde7603a6ed5d07c9f43597ccfe9043d15b66d3284f0de321f5cdf56329e6e03590614d5e908a90899060289061a30a565b60405180910390a36022546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015614df457600080fd5b505af1158015614e08573d6000803e3d6000fd5b50506020546040516001600160a01b0390911692507f5272d2fee39bff41b2e763562526315906046373ce08a7bacf76c3080d731ff09150614e50908990889060289061a30a565b60405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614eb157600080fd5b505af1158015614ec5573d6000803e3d6000fd5b50506022546020546040517f6f8728ad0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450636f8728ad9350614f2092909116908a9089908b9060289060040161a261565b600060405180830381600087803b158015614f3a57600080fd5b505af1158015614f4e573d6000803e3d6000fd5b50506023546020546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401611542565b60606015805480602002602001604051908101604052809291908181526020018280548015610e44576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610e26575050505050905090565b6024805460405163ca669fa760e01b81526001600160a01b039091166004820152620186a091600091737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa79101600060405180830381600087803b15801561504957600080fd5b505af115801561505d573d6000803e3d6000fd5b505060248054604080516001600160a01b03909216928201929092527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448083019190915282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f0000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061514c9190600401619eca565b600060405180830381600087803b15801561516657600080fd5b505af115801561517a573d6000803e3d6000fd5b50506022546025546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101879052604481018690529116925063106e62909150606401600060405180830381600087803b1580156151ee57600080fd5b505af1158015613207573d6000803e3d6000fd5b600061520c619a63565b6152178484836153e3565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c54906044015b60006040518083038186803b15801561528d57600080fd5b505afa158015613207573d6000803e3d6000fd5b6040517fa59828850000000000000000000000000000000000000000000000000000000081528115156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063a5982885906024015b60006040518083038186803b15801561530757600080fd5b505afa15801561280f573d6000803e3d6000fd5b6040517f0c9fd5810000000000000000000000000000000000000000000000000000000081528115156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90630c9fd581906024016152ef565b6040517f515361f60000000000000000000000000000000000000000000000000000000081526001600160a01b03808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f690604401615275565b6153d6619a63565b61280f858585848661545e565b6000806153f0858461555e565b90506154536040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f7879000000815250828660405160200161543e92919061a335565b6040516020818303038152906040528561556a565b9150505b9392505050565b6040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201528190737109709ecfa91a80626ff3989d68f67f5b1dd12d9081906306447d5690602401600060405180830381600087803b1580156154d057600080fd5b505af19250505080156154e1575060015b6154f6576154f187878787615598565b612bef565b61550287878787615598565b806001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561553d57600080fd5b505af1158015615551573d6000803e3d6000fd5b5050505050505050505050565b600061545783836155b1565b60c0810151516000901561558e5761558784848460c001516155cc565b9050615457565b6155878484615772565b60006155a4848361585d565b905061280f858285615869565b60006155bd8383615c33565b6154578383602001518461556a565b6000806155d7615c43565b905060006155e58683615d16565b905060006155fc82606001518360200151856161bc565b9050600061560c838389896163ce565b905060006156198261724b565b602081015181519192509060030b1561568c5789826040015160405160200161564392919061a357565b60408051601f19818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261568391600401619eca565b60405180910390fd5b60006156cf6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a20000000000000000000000081525083600161741a565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90615722908490600401619eca565b602060405180830381865afa15801561573f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615763919061a15b565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc925906157c7908790600401619eca565b600060405180830381865afa1580156157e4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261580c919081019061a491565b9050600061583a828560405160200161582692919061a4c6565b60405160208183030381529060405261761a565b90506001600160a01b03811661521757848460405160200161564392919061a4f5565b60006155bd838361762d565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201527fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61036024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90600090829063667f9d7090604401602060405180830381865afa158015615905573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615929919061a064565b905080615ad057600061593b86617639565b604080518082018252600581527f352e302e30000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506159c6905b60408051808201825260008082526020918201528151808301909252845182528085019082015290617731565b806159d2575060008451115b15615a55576040517f4f1ef2860000000000000000000000000000000000000000000000000000000081526001600160a01b03871690634f1ef28690615a1e908890889060040161a335565b600060405180830381600087803b158015615a3857600080fd5b505af1158015615a4c573d6000803e3d6000fd5b50505050615aca565b6040517f3659cfe60000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152871690633659cfe690602401600060405180830381600087803b158015615ab157600080fd5b505af1158015615ac5573d6000803e3d6000fd5b505050505b5061280f565b806000615adc82617639565b604080518082018252600581527f352e302e3000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615b3e90615999565b80615b4a575060008551115b15615bcf576040517f9623609d0000000000000000000000000000000000000000000000000000000081526001600160a01b03831690639623609d90615b98908a908a908a9060040161a5a0565b600060405180830381600087803b158015615bb257600080fd5b505af1158015615bc6573d6000803e3d6000fd5b50505050612bef565b6040517f99a88ec40000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015287811660248301528316906399a88ec490604401600060405180830381600087803b15801561553d57600080fd5b615c3f82826000617745565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90615cca90849060040161a5d1565b600060405180830381865afa158015615ce7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615d0f919081019061a618565b9250505090565b615d486040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050615d936040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b615d9c85617848565b60208201526000615dac86617c2d565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015615dee573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615e16919081019061a618565b86838560200151604051602001615e30949392919061a661565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190615e88908590600401619eca565b600060405180830381865afa158015615ea5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615ecd919081019061a618565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690615f1590849060040161a765565b602060405180830381865afa158015615f32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615f56919061a139565b615f6b5781604051602001615643919061a7b7565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890615fb090849060040161a849565b600060405180830381865afa158015615fcd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615ff5919081019061a618565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f69061603c90849060040161a89b565b602060405180830381865afa158015616059573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061607d919061a139565b15616112576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906160c790849060040161a89b565b600060405180830381865afa1580156160e4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261610c919081019061a618565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001616137919061a8ed565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161616392919061a959565b600060405180830381865afa158015616180573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526161a8919081019061a618565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816161d85790505090506040518060400160405280600481526020017f6772657000000000000000000000000000000000000000000000000000000000815250816000815181106162385761623861a97e565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061628c5761628c61a97e565b6020026020010181905250846040516020016162a8919061a9ad565b604051602081830303815290604052816002815181106162ca576162ca61a97e565b6020026020010181905250826040516020016162e6919061aa19565b604051602081830303815290604052816003815181106163085761630861a97e565b6020026020010181905250600061631e8261724b565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506163af9060408051808201825260008082526020918201528151808301909252845182528085019082015290617eb0565b6163c45785604051602001615643919061aa5a565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d901561641e565b511590565b616592578260200151156164da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401615683565b8260c0015115616592576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401615683565b6040805160ff8082526120008201909252600091816020015b60608152602001906001900390816165ab57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806166069061aaeb565b935060ff168151811061661b5761661b61a97e565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e370000000000000000000000000000000000000081525060405160200161666c919061ab0a565b6040516020818303038152906040528282806166879061aaeb565b935060ff168151811061669c5761669c61a97e565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806166e99061aaeb565b935060ff16815181106166fe576166fe61a97e565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d6500000000000000000000000000000000000081525082828061674b9061aaeb565b935060ff16815181106167605761676061a97e565b6020026020010181905250876020015182828061677c9061aaeb565b935060ff16815181106167915761679161a97e565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806167de9061aaeb565b935060ff16815181106167f3576167f361a97e565b60209081029190910101528751828261680b8161aaeb565b935060ff16815181106168205761682061a97e565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e4964000000000000000000000000000000000000000000000081525082828061686d9061aaeb565b935060ff16815181106168825761688261a97e565b602002602001018190525061689646617f11565b82826168a18161aaeb565b935060ff16815181106168b6576168b661a97e565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c6500000000000000000000000000000000008152508282806169039061aaeb565b935060ff16815181106169185761691861a97e565b6020026020010181905250868282806169309061aaeb565b935060ff16815181106169455761694561a97e565b6020908102919091010152855115616a6c5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826169968161aaeb565b935060ff16815181106169ab576169ab61a97e565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d906169fb908990600401619eca565b600060405180830381865afa158015616a18573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616a40919081019061a618565b8282616a4b8161aaeb565b935060ff1681518110616a6057616a6061a97e565b60200260200101819052505b846020015115616b3c5760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282616ab58161aaeb565b935060ff1681518110616aca57616aca61a97e565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280616b179061aaeb565b935060ff1681518110616b2c57616b2c61a97e565b6020026020010181905250616d03565b616b746164198660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b616c075760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282616bb78161aaeb565b935060ff1681518110616bcc57616bcc61a97e565b60200260200101819052508460a00151604051602001616bec919061a9ad565b604051602081830303815290604052828280616b179061aaeb565b8460c00151158015616c4a575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152616c4890511590565b155b15616d035760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282616c8e8161aaeb565b935060ff1681518110616ca357616ca361a97e565b6020026020010181905250616cb788617fb1565b604051602001616cc7919061a9ad565b604051602081830303815290604052828280616ce29061aaeb565b935060ff1681518110616cf757616cf761a97e565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152616d3790511590565b616dcc5760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282616d7a8161aaeb565b935060ff1681518110616d8f57616d8f61a97e565b60200260200101819052508460400151828280616dab9061aaeb565b935060ff1681518110616dc057616dc061a97e565b60200260200101819052505b606085015115616eed5760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282616e158161aaeb565b935060ff1681518110616e2a57616e2a61a97e565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015616e99573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616ec1919081019061a618565b8282616ecc8161aaeb565b935060ff1681518110616ee157616ee161a97e565b60200260200101819052505b60e08501515115616f945760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282616f378161aaeb565b935060ff1681518110616f4c57616f4c61a97e565b6020026020010181905250616f688560e0015160000151617f11565b8282616f738161aaeb565b935060ff1681518110616f8857616f8861a97e565b60200260200101819052505b60e0850151602001511561703e5760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282616fe18161aaeb565b935060ff1681518110616ff657616ff661a97e565b60200260200101819052506170128560e0015160200151617f11565b828261701d8161aaeb565b935060ff16815181106170325761703261a97e565b60200260200101819052505b60e085015160400151156170e85760408051808201909152600e81527f2d2d6d61784665655065724761730000000000000000000000000000000000006020820152828261708b8161aaeb565b935060ff16815181106170a0576170a061a97e565b60200260200101819052506170bc8560e0015160400151617f11565b82826170c78161aaeb565b935060ff16815181106170dc576170dc61a97e565b60200260200101819052505b60e085015160600151156171925760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826171358161aaeb565b935060ff168151811061714a5761714a61a97e565b60200260200101819052506171668560e0015160600151617f11565b82826171718161aaeb565b935060ff16815181106171865761718661a97e565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156171b0576171b0619edd565b6040519080825280602002602001820160405280156171e357816020015b60608152602001906001900390816171ce5790505b50905060005b8260ff168160ff16101561723c57838160ff168151811061720c5761720c61a97e565b6020026020010151828260ff16815181106172295761722961a97e565b60209081029190910101526001016171e9565b5093505050505b949350505050565b6172726040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916172f89186910161ab75565b600060405180830381865afa158015617315573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261733d919081019061a618565b9050600061734b8683618aa0565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161737b9190619dbc565b6000604051808303816000875af115801561739a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526173c2919081019061abbc565b805190915060030b158015906173db5750602081015151155b80156173ea5750604081015151155b156163c457816000815181106174025761740261a97e565b6020026020010151604051602001615643919061ac72565b6060600061744f8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506174869082905b90618bf5565b156175e3576000617503826174fd846174f76174c98a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90618c1c565b90618c7e565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150617567908290618bf5565b156175d157604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526175ce905b8290618d03565b90505b6175da81618d29565b92505050615457565b82156175fc57848460405160200161564392919061ae5e565b5050604080516020810190915260008152615457565b509392505050565b6000808251602084016000f09392505050565b615c3f82826001617745565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fad3cb1cc00000000000000000000000000000000000000000000000000000000179052905160609160009182916001600160a01b038616916176ae919061af05565b600060405180830381855afa9150503d80600081146176e9576040519150601f19603f3d011682016040523d82523d6000602084013e6176ee565b606091505b5091509150818015617701575060208151115b1561771a5780806020019051810190617243919061a618565b505060408051602081019091526000815292915050565b600061773d8383618d92565b159392505050565b8160a001511561775457505050565b6000617761848484618e6d565b9050600061776e8261724b565b602081015181519192509060030b15801561780a5750604080518082018252600781527f53554343455353000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261780a90604080518082018252600080825260209182015281518083019092528451825280850190820152617480565b1561781757505050505050565b60408201515115617837578160400151604051602001615643919061af21565b80604051602001615643919061af7f565b6060600061787d8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506178e2905b8290617eb0565b1561795157604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526154579061794c908390619408565b618d29565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526179b3905b8290619492565b600103617a8057604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617a19906175c7565b50604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526154579061794c905b8390618d03565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617adf906178db565b15617c1657604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290617b4790839061952c565b905060008160018351617b5a919061a126565b81518110617b6a57617b6a61a97e565b60200260200101519050617c0d61794c617be06040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290619408565b95945050505050565b82604051602001615643919061afea565b50919050565b60606000617c628360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150617cc4906178db565b15617cd25761545781618d29565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617d31906179ac565b600103617d9b57604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526154579061794c90617a79565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617dfa906178db565b15617c1657604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290617e6290839061952c565b9050600181511115617e9e578060028251617e7d919061a126565b81518110617e8d57617e8d61a97e565b602002602001015192505050919050565b5082604051602001615643919061afea565b805182516000911115617ec55750600061521b565b81518351602085015160009291617edb9161b0c8565b617ee5919061a126565b905082602001518103617efc57600191505061521b565b82516020840151819020912014905092915050565b60606000617f1e836195d1565b600101905060008167ffffffffffffffff811115617f3e57617f3e619edd565b6040519080825280601f01601f191660200182016040528015617f68576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084617f7257509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e534544000000000000000000000000000000000000000000008184019081528551808701875283815284019290925284518086019095525184529083015260609161803d905b8290617731565b1561807d57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e73650000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526180dc90618036565b1561811c57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d495400000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261817b90618036565b156181bb57505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261821a90618036565b8061827f5750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261827f90618036565b156182bf57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261831e90618036565b806183835750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261838390618036565b156183c357505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261842290618036565b806184875750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261848790618036565b156184c757505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261852690618036565b8061858b5750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261858b90618036565b156185cb57505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261862a90618036565b1561866a57505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526186c990618036565b1561870957505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261876890618036565b156187a857505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261880790618036565b1561884757505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e3000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526188a690618036565b156188e657505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261894590618036565b806189aa5750604080518082018252601181527f4147504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526189aa90618036565b156189ea57505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e3100000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618a4990618036565b15618a8957505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151615643929060200161b0db565b60608060005b8451811015618b2b5781858281518110618ac257618ac261a97e565b6020026020010151604051602001618adb92919061a4c6565b604051602081830303815290604052915060018551618afa919061a126565b8114618b235781604051602001618b11919061b244565b60405160208183030381529060405291505b600101618aa6565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081618b445790505090508381600081518110618b6f57618b6f61a97e565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110618bc357618bc361a97e565b60200260200101819052508181600281518110618be257618be261a97e565b6020908102919091010152949350505050565b6020808301518351835192840151600093618c1392918491906196b3565b14159392505050565b60408051808201909152600080825260208201526000618c4e84600001518560200151856000015186602001516197c4565b9050836020015181618c60919061a126565b84518590618c6f90839061a126565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015618ca357508161521b565b6020808301519084015160019114618cca5750815160208481015190840151829020919020145b8015618cfb57825184518590618ce190839061a126565b9052508251602085018051618cf790839061b0c8565b9052505b509192915050565b6040805180820190915260008082526020820152618d228383836198e4565b5092915050565b60606000826000015167ffffffffffffffff811115618d4a57618d4a619edd565b6040519080825280601f01601f191660200182016040528015618d74576020820181803683370190505b5090506000602082019050618d22818560200151866000015161998f565b8151815160009190811115618da5575081515b6020808501519084015160005b83811015618e5e5782518251808214618e2e576000196020871015618e0d57600184618ddf89602061a126565b618de9919061b0c8565b618df490600861b285565b618dff90600261b383565b618e09919061a126565b1990505b8181168382168181039114618e2b57975061521b9650505050505050565b50505b618e3960208661b0c8565b9450618e4660208561b0c8565b93505050602081618e57919061b0c8565b9050618db2565b50845186516163c4919061b38f565b60606000618e79615c43565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081618e9657905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280618ef19061aaeb565b935060ff1681518110618f0657618f0661a97e565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001618f57919061b3af565b604051602081830303815290604052828280618f729061aaeb565b935060ff1681518110618f8757618f8761a97e565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280618fd49061aaeb565b935060ff1681518110618fe957618fe961a97e565b602002602001018190525082604051602001619005919061aa19565b6040516020818303038152906040528282806190209061aaeb565b935060ff16815181106190355761903561a97e565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e7472616374000000000000000000000000000000000000000000008152508282806190829061aaeb565b935060ff16815181106190975761909761a97e565b60200260200101819052506190ac8784619a09565b82826190b78161aaeb565b935060ff16815181106190cc576190cc61a97e565b6020908102919091010152855151156191785760408051808201909152600b81527f2d2d7265666572656e63650000000000000000000000000000000000000000006020820152828261911e8161aaeb565b935060ff16815181106191335761913361a97e565b602002602001018190525061914c866000015184619a09565b82826191578161aaeb565b935060ff168151811061916c5761916c61a97e565b60200260200101819052505b8560800151156191e65760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b0000000000000000602082015282826191c18161aaeb565b935060ff16815181106191d6576191d661a97e565b602002602001018190525061924c565b841561924c5760408051808201909152601281527f2d2d726571756972655265666572656e636500000000000000000000000000006020820152828261922b8161aaeb565b935060ff16815181106192405761924061a97e565b60200260200101819052505b604086015151156192e85760408051808201909152600d81527f2d2d756e73616665416c6c6f7700000000000000000000000000000000000000602082015282826192968161aaeb565b935060ff16815181106192ab576192ab61a97e565b602002602001018190525085604001518282806192c79061aaeb565b935060ff16815181106192dc576192dc61a97e565b60200260200101819052505b8560600151156193525760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d6573000000000000000000000000602082015282826193318161aaeb565b935060ff16815181106193465761934661a97e565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561937057619370619edd565b6040519080825280602002602001820160405280156193a357816020015b606081526020019060019003908161938e5790505b50905060005b8260ff168160ff1610156193fc57838160ff16815181106193cc576193cc61a97e565b6020026020010151828260ff16815181106193e9576193e961a97e565b60209081029190910101526001016193a9565b50979650505050505050565b604080518082019091526000808252602082015281518351101561942d57508161521b565b815183516020850151600092916194439161b0c8565b61944d919061a126565b6020840151909150600190821461946e575082516020840151819020908220145b80156194895783518551869061948590839061a126565b9052505b50929392505050565b60008082600001516194b685600001518660200151866000015187602001516197c4565b6194c0919061b0c8565b90505b835160208501516194d4919061b0c8565b8111618d2257816194e48161b3f4565b925050826000015161951b8560200151836194ff919061a126565b865161950b919061a126565b83866000015187602001516197c4565b619525919061b0c8565b90506194c3565b6060600061953a8484619492565b61954590600161b0c8565b67ffffffffffffffff81111561955d5761955d619edd565b60405190808252806020026020018201604052801561959057816020015b606081526020019060019003908161957b5790505b50905060005b8151811015617612576195ac61794c8686618d03565b8282815181106195be576195be61a97e565b6020908102919091010152600101619596565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061961a577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310619646576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061966457662386f26fc10000830492506010015b6305f5e100831061967c576305f5e100830492506008015b612710831061969057612710830492506004015b606483106196a2576064830492506002015b600a831061521b5760010192915050565b6000808584116197ba576020841161976657600084156196fe5760016196da86602061a126565b6196e590600861b285565b6196f090600261b383565b6196fa919061a126565b1990505b835181168561970d898961b0c8565b619717919061a126565b805190935082165b818114619751578784116197395787945050505050617243565b836197438161b40e565b94505082845116905061971f565b61975b878561b0c8565b945050505050617243565b838320619773858861a126565b61977d908761b0c8565b91505b8582106197b8578482208082036197a55761979b868461b0c8565b9350505050617243565b6197b060018461a126565b925050619780565b505b5092949350505050565b600083818685116198cf576020851161987e57600085156198105760016197ec87602061a126565b6197f790600861b285565b61980290600261b383565b61980c919061a126565b1990505b845181166000876198218b8b61b0c8565b61982b919061a126565b855190915083165b828114619870578186106198585761984b8b8b61b0c8565b9650505050505050617243565b856198628161b3f4565b965050838651169050619833565b859650505050505050617243565b508383206000905b619890868961a126565b82116198cd578583208082036198ac5783945050505050617243565b6198b760018561b0c8565b93505081806198c59061b3f4565b925050619886565b505b6198d9878761b0c8565b979650505050505050565b6040805180820190915260008082526020820152600061991685600001518660200151866000015187602001516197c4565b602080870180519186019190915251909150619932908261a126565b835284516020860151619945919061b0c8565b81036199545760008552619986565b83518351619962919061b0c8565b8551869061997190839061a126565b9052508351619980908261b0c8565b60208601525b50909392505050565b602081106199c757815183526199a660208461b0c8565b92506199b360208361b0c8565b91506199c060208261a126565b905061998f565b60001981156199f65760016199dd83602061a126565b6199e99061010061b383565b6199f3919061a126565b90505b9151835183169219169190911790915250565b60606000619a178484615d16565b8051602080830151604051939450619a319390910161b425565b60405160208183030381529060405291505092915050565b610c9f8061b47e83390190565b610ec28061c11d83390190565b6040518060e00160405280606081526020016060815260200160608152602001600015158152602001600015158152602001600015158152602001619aa6619aab565b905290565b60405180610100016040528060001515815260200160001515815260200160608152602001600080191681526020016060815260200160608152602001600015158152602001619aa66040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b81811015619b5d5783516001600160a01b0316835260209384019390920191600101619b36565b509095945050505050565b60005b83811015619b83578181015183820152602001619b6b565b50506000910152565b60008151808452619ba4816020860160208601619b68565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015619cb4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015619c9a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352619c84848651619b8c565b6020958601959094509290920191600101619c4a565b509197505050602094850194929092019150600101619be0565b50929695505050505050565b600081518084526020840193506020830160005b82811015619d145781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101619cd4565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015619cb4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752619d8a6040880182619b8c565b9050602082015191508681036020880152619da58183619cc0565b965050506020938401939190910190600101619d46565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015619cb4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452619e1e858351619b8c565b94506020938401939190910190600101619de4565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015619cb4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152619eb46040870182619cc0565b9550506020938401939190910190600101619e5b565b6020815260006154576020830184619b8c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600181811c90821680619f2057607f821691505b602082108103617c27577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b601f821115619fa057806000526020600020601f840160051c81016020851015619f805750805b601f840160051c820191505b8181101561280f5760008155600101619f8c565b505050565b815167ffffffffffffffff811115619fbf57619fbf619edd565b619fd381619fcd8454619f0c565b84619f59565b6020601f82116001811461a0075760008315619fef5750848201515b600019600385901b1c1916600184901b17845561280f565b600084815260208120601f198516915b8281101561a037578785015182556020948501946001909201910161a017565b508482101561a0555786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b60006020828403121561a07657600080fd5b5051919050565b6001600160a01b0384168152826020820152606060408201526000617c0d6060830184619b8c565b8281526040602082015260006172436040830184619b8c565b6001600160a01b038516815283602082015260806040820152600061a0e66080830185619b8c565b905082606083015295945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561521b5761521b61a0f7565b60006020828403121561a14b57600080fd5b8151801515811461545757600080fd5b60006020828403121561a16d57600080fd5b81516001600160a01b038116811461545757600080fd5b6001600160a01b0381541682526001600160a01b03600182015416602083015260028101546040830152600060038201608060608501526000815461a1c881619f0c565b806080880152600182166000811461a1e7576001811461a2215761a255565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831660a089015260a082151560051b890101935061a255565b84600052602060002060005b8381101561a24c5781548a820160a0015260019091019060200161a22d565b890160a0019450505b50919695505050505050565b6001600160a01b038616815284602082015260a06040820152600061a28960a0830186619b8c565b846060840152828103608084015261a2a1818561a184565b98975050505050505050565b60008261a2e3577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6001600160a01b0383168152604060208201526000617243604083018461a184565b83815260606020820152600061a3236060830185619b8c565b82810360408401526163c4818561a184565b6001600160a01b03831681526040602082015260006172436040830184619b8c565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161a38f81601a850160208801619b68565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161a3cc81601c840160208801619b68565b01601c01949350505050565b6040516060810167ffffffffffffffff8111828210171561a3fb5761a3fb619edd565b60405290565b60008067ffffffffffffffff84111561a41c5761a41c619edd565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561a44b5761a44b619edd565b60405283815290508082840185101561a46357600080fd5b617612846020830185619b68565b600082601f83011261a48257600080fd5b6154578383516020850161a401565b60006020828403121561a4a357600080fd5b815167ffffffffffffffff81111561a4ba57600080fd5b6152178482850161a471565b6000835161a4d8818460208801619b68565b83519083019061a4ec818360208801619b68565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161a52d81601a850160208801619b68565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161a56a816033840160208801619b68565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b6001600160a01b03841681526001600160a01b0383166020820152606060408201526000617c0d6060830184619b8c565b60408152600b60408201527f464f554e4452595f4f555400000000000000000000000000000000000000000060608201526080602082015260006154576080830184619b8c565b60006020828403121561a62a57600080fd5b815167ffffffffffffffff81111561a64157600080fd5b8201601f8101841361a65257600080fd5b6152178482516020840161a401565b6000855161a673818460208a01619b68565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161a6ad816001840160208a01619b68565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161a6eb816002840160208901619b68565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161a72d816002840160208801619b68565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061a7786040830184619b8c565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161a7ef81601f850160208701619b68565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061a85c6040830184619b8c565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061a8ae6040830184619b8c565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161a925816014850160208701619b68565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061a96c6040830185619b8c565b82810360208401526154538185619b8c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161a9e5816001850160208701619b68565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161aa2b818460208701619b68565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161aade81604b850160208701619b68565b91909101604b0192915050565b600060ff821660ff810361ab015761ab0161a0f7565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161ab68816029850160208701619b68565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f504154480000000000000000000060608201526080602082015260006154576080830184619b8c565b60006020828403121561abce57600080fd5b815167ffffffffffffffff81111561abe557600080fd5b82016060818503121561abf757600080fd5b61abff61a3d8565b81518060030b811461ac1057600080fd5b8152602082015167ffffffffffffffff81111561ac2c57600080fd5b61ac388682850161a471565b602083015250604082015167ffffffffffffffff81111561ac5857600080fd5b61ac648682850161a471565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161acd0816021850160208701619b68565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161aebc816021850160208801619b68565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161aef981602e840160208801619b68565b01602e01949350505050565b6000825161af17818460208701619b68565b9190910192915050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161ab68816029850160208701619b68565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161afdd816022850160208701619b68565b9190910160220192915050565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161b02281600e850160208701619b68565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b8082018082111561521b5761521b61a0f7565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161b113816018850160208801619b68565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161b15081601c840160208801619b68565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161b256818460208701619b68565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b808202811582820484141761521b5761521b61a0f7565b6001815b600184111561b2d75780850481111561b2bb5761b2bb61a0f7565b600184161561b2c957908102905b60019390931c92800261b2a0565b935093915050565b60008261b2ee5750600161521b565b8161b2fb5750600061521b565b816001811461b311576002811461b31b5761b337565b600191505061521b565b60ff84111561b32c5761b32c61a0f7565b50506001821b61521b565b5060208310610133831016604e8410600b841016171561b35a575081810a61521b565b61b367600019848461b29c565b806000190482111561b37b5761b37b61a0f7565b029392505050565b6000615457838361b2df565b8181036000831280158383131683831282161715618d2257618d2261a0f7565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161b3e781601c850160208701619b68565b91909101601c0192915050565b6000600019820361b4075761b40761a0f7565b5060010190565b60008161b41d5761b41d61a0f7565b506000190190565b6000835161b437818460208801619b68565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161b471816001840160208801619b68565b0160010194935050505056fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212205f76808fb3dc6dacf4bd766b2d0bf9d6beb64856c952cec8e267368511bd936a64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610e9e806100246000396000f3fe60806040526004361061006e5760003560e01c8063c51316911161004b578063c5131691146100d5578063c9028a36146100f5578063e04d4f9714610115578063f05b6abf1461012857005b8063357fc5a214610077578063676cc054146100975780636ed70169146100c057005b3661007557005b005b34801561008357600080fd5b506100756100923660046106ec565b610148565b6100aa6100a5366004610728565b6101de565b6040516100b79190610823565b60405180910390f35b3480156100cc57600080fd5b50610075610222565b3480156100e157600080fd5b506100756100f03660046106ec565b610257565b34801561010157600080fd5b50610075610110366004610836565b610332565b610075610123366004610996565b61036e565b34801561013457600080fd5b50610075610143366004610a82565b6103b2565b6101506103e7565b61017273ffffffffffffffffffffffffffffffffffffffff831633838661042a565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101d96001600055565b505050565b6040516060907f3658b46bab672c7672b69c2f0feda706eabdb7d2231421c96e9049b2db5e7eee90600090a1506040805160208101909152600081525b9392505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b61025f6103e7565b600061026c600285610b6c565b9050806000036102a8576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102ca73ffffffffffffffffffffffffffffffffffffffff841633848461042a565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101d96001600055565b7f689a5a5cb55e795ffe4cd8b419cd3bb0a3373974c54d25f64e734d7388b93e9b3382604051610363929190610bf0565b60405180910390a150565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa33348585856040516103a5959493929190610ce2565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103a59493929190610d6c565b600260005403610423576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526104bf9085906104c5565b50505050565b60006104e773ffffffffffffffffffffffffffffffffffffffff841683610560565b9050805160001415801561050c57508080602001905181019061050a9190610e2f565b155b156101d9576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061021b83836000846000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105939190610e4c565b60006040518083038185875af1925050503d80600081146105d0576040519150601f19603f3d011682016040523d82523d6000602084013e6105d5565b606091505b50915091506105e58683836105ef565b9695505050505050565b606082610604576105ff8261067e565b61021b565b8151158015610628575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610677576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610557565b508061021b565b80511561068e5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106e757600080fd5b919050565b60008060006060848603121561070157600080fd5b83359250610711602085016106c3565b915061071f604085016106c3565b90509250925092565b6000806000838503604081121561073e57600080fd5b602081121561074c57600080fd5b50839250602084013567ffffffffffffffff81111561076a57600080fd5b8401601f8101861361077b57600080fd5b803567ffffffffffffffff81111561079257600080fd5b8660208284010111156107a457600080fd5b939660209190910195509293505050565b60005b838110156107d05781810151838201526020016107b8565b50506000910152565b600081518084526107f18160208601602086016107b5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061021b60208301846107d9565b60006020828403121561084857600080fd5b813567ffffffffffffffff81111561085f57600080fd5b82016080818503121561021b57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156108e7576108e7610871565b604052919050565b600082601f83011261090057600080fd5b813567ffffffffffffffff81111561091a5761091a610871565b61094b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016108a0565b81815284602083860101111561096057600080fd5b816020850160208301376000918101602001919091529392505050565b80151581146106c057600080fd5b80356106e78161097d565b6000806000606084860312156109ab57600080fd5b833567ffffffffffffffff8111156109c257600080fd5b6109ce868287016108ef565b9350506020840135915060408401356109e68161097d565b809150509250925092565b600067ffffffffffffffff821115610a0b57610a0b610871565b5060051b60200190565b600082601f830112610a2657600080fd5b8135610a39610a34826109f1565b6108a0565b8082825260208201915060208360051b860101925085831115610a5b57600080fd5b602085015b83811015610a78578035835260209283019201610a60565b5095945050505050565b600080600060608486031215610a9757600080fd5b833567ffffffffffffffff811115610aae57600080fd5b8401601f81018613610abf57600080fd5b8035610acd610a34826109f1565b8082825260208201915060208360051b850101925088831115610aef57600080fd5b602084015b83811015610b3157803567ffffffffffffffff811115610b1357600080fd5b610b228b6020838901016108ef565b84525060209283019201610af4565b509550505050602084013567ffffffffffffffff811115610b5157600080fd5b610b5d86828701610a15565b92505061071f6040850161098b565b600082610ba2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015273ffffffffffffffffffffffffffffffffffffffff610c2e836106c3565b16604082015273ffffffffffffffffffffffffffffffffffffffff610c55602084016106c3565b166060820152600080604084013590508060808401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610ca157600080fd5b830160208101903567ffffffffffffffff811115610cbe57600080fd5b803603821315610ccd57600080fd5b608060a08501526105e560c085018284610ba7565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610d1760a08301866107d9565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610d62578151865260209586019590910190600101610d44565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610dff577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610dea8583516107d9565b94506020938401939190910190600101610db0565b505050508281036040840152610e158186610d30565b915050610e26606083018415159052565b95945050505050565b600060208284031215610e4157600080fd5b815161021b8161097d565b60008251610e5e8184602087016107b5565b919091019291505056fea26469706673582212200208dfaef53d7ec7d471b3a513486f45b234e5fb6727c50beff735b8aa974ee464736f6c634300081a00335a657461436f6e6e6563746f724e617469766555706772616465546573742e736f6ca2646970667358221220bff23f8362f085c14d66186c557a477500dac14174a0fe283b71823da9cb384f64736f6c634300081a0033", } // ZetaConnectorNativeTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/zetaconnectornativeupgradetest.sol/zetaconnectornativeupgradetest.go b/v2/pkg/zetaconnectornativeupgradetest.sol/zetaconnectornativeupgradetest.go index 8e7b83050..5f98faf2c 100644 --- a/v2/pkg/zetaconnectornativeupgradetest.sol/zetaconnectornativeupgradetest.go +++ b/v2/pkg/zetaconnectornativeupgradetest.sol/zetaconnectornativeupgradetest.go @@ -39,8 +39,8 @@ type RevertContext struct { // ZetaConnectorNativeUpgradeTestMetaData contains all meta data concerning the ZetaConnectorNativeUpgradeTest contract. var ZetaConnectorNativeUpgradeTestMetaData = &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\":\"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\":\"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\":\"initialize\",\"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\"}],\"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\":\"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\":\"updateTSSAddress\",\"inputs\":[{\"name\":\"newTSSAddress\",\"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\":\"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\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"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\":\"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\":\"UpdatedZetaConnectorTSSAddress\",\"inputs\":[{\"name\":\"oldTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newTSSAddress\",\"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\":\"Withdrawn\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawnAndCalled\",\"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\":\"WithdrawnAndReverted\",\"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\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawnV2\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"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\":\"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\":\"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: "0x60a060405230608052348015601357600080fd5b5060805161248461003d6000396000818161125d01528181611286015261145c01526124846000f3fe6080604052600436106101965760003560e01c80635e3e9fef116100e1578063950837aa1161008a578063ad3cb1cc11610064578063ad3cb1cc146104f2578063d547741f14610548578063e63ab1e914610568578063f8c8765e1461059c57600080fd5b8063950837aa14610489578063a217fddf146104a9578063a783c789146104be57600080fd5b80638456cb59116100bb5780638456cb59146103db57806385f438c1146103f057806391d148541461042457600080fd5b80635e3e9fef1461037b5780636f8728ad1461039b578063743e0c9b146103bb57600080fd5b806336568abe1161014357806352d1902d1161011d57806352d1902d1461030f5780635b112591146103245780635c975abb1461034457600080fd5b806336568abe146102c75780633f4ba83a146102e75780634f1ef286146102fc57600080fd5b806321e093b11161017457806321e093b11461022a578063248a9ca31461024a5780632f2ff15d146102a757600080fd5b806301ffc9a71461019b578063106e6290146101d0578063116191b6146101f2575b600080fd5b3480156101a757600080fd5b506101bb6101b6366004611dea565b6105bc565b60405190151581526020015b60405180910390f35b3480156101dc57600080fd5b506101f06101eb366004611e48565b610655565b005b3480156101fe57600080fd5b50600054610212906001600160a01b031681565b6040516001600160a01b0390911681526020016101c7565b34801561023657600080fd5b50600154610212906001600160a01b031681565b34801561025657600080fd5b50610299610265366004611e7b565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101c7565b3480156102b357600080fd5b506101f06102c2366004611e94565b610718565b3480156102d357600080fd5b506101f06102e2366004611e94565b610762565b3480156102f357600080fd5b506101f06107ae565b6101f061030a366004611eef565b6107e3565b34801561031b57600080fd5b50610299610802565b34801561033057600080fd5b50600254610212906001600160a01b031681565b34801561035057600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101bb565b34801561038757600080fd5b506101f061039636600461203f565b610831565b3480156103a757600080fd5b506101f06103b63660046120a1565b610985565b3480156103c757600080fd5b506101f06103d6366004611e7b565b610ade565b3480156103e757600080fd5b506101f0610afe565b3480156103fc57600080fd5b506102997f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b34801561043057600080fd5b506101bb61043f366004611e94565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561049557600080fd5b506101f06104a4366004612139565b610b30565b3480156104b557600080fd5b50610299600081565b3480156104ca57600080fd5b506102997f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b3480156104fe57600080fd5b5061053b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101c79190612178565b34801561055457600080fd5b506101f0610563366004611e94565b610cc3565b34801561057457600080fd5b506102997f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b3480156105a857600080fd5b506101f06105b73660046121c9565b610d07565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061064f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61065d610e8e565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461068781610f0f565b61068f610f19565b6001546106a6906001600160a01b03168585610f77565b836001600160a01b03167f3e35ef4326151011878c9e8e968a0f3913fe98ca68f72a1e0c2e9be13ffb3ee9846040516106e191815260200190565b60405180910390a25061071360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461075281610f0f565b61075c8383611011565b50505050565b6001600160a01b03811633146107a4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61071382826110fe565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6107d881610f0f565b6107e06111c2565b50565b6107eb611252565b6107f482611322565b6107fe828261132d565b5050565b600061080c611451565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610839610e8e565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461086381610f0f565b61086b610f19565b600054600154610888916001600160a01b03918216911687610f77565b6000546001546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692635131ab59926108dd929116908a908a908a908a90600401612266565b600060405180830381600087803b1580156108f757600080fd5b505af115801561090b573d6000803e3d6000fd5b50505050856001600160a01b03167f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d86868660405161094c939291906122a9565b60405180910390a25061097e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b61098d610e8e565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46109b781610f0f565b6109bf610f19565b6000546001546109dc916001600160a01b03918216911688610f77565b6000546001546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526001600160a01b039283169263aa0c0fc192610a33929116908b908b908b908b908a90600401612374565b600060405180830381600087803b158015610a4d57600080fd5b505af1158015610a61573d6000803e3d6000fd5b50505050866001600160a01b03167f5272d2fee39bff41b2e763562526315906046373ce08a7bacf76c3080d731ff087878786604051610aa494939291906123cb565b60405180910390a250610ad660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b610ae6610f19565b6001546107e0906001600160a01b03163330846114b3565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610b2881610f0f565b6107e06114ec565b6000610b3b81610f0f565b6001600160a01b038216610b7b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254610bb2907f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4906001600160a01b03166110fe565b50600254610bea907f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb906001600160a01b03166110fe565b50610c157f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483611011565b50610c407f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb83611011565b50600254604080516001600160a01b03928316815291841660208301527f33770ab682353c17917ad3e667f05905fc8dda00671ef1ed33bef9bc8db0323e910160405180910390a150600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610cfd81610f0f565b61075c83836110fe565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610d525750825b905060008267ffffffffffffffff166001148015610d6f5750303b155b905081158015610d7d575080155b15610db4576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610e155784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610e2189898989611565565b8315610e835784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b505050505050505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01610f09576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6107e08133611870565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615610f75576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040516001600160a01b0383811660248301526044820183905261071391859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506118fd565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166110f4576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556110aa3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061064f565b600091505061064f565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156110f4576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061064f565b6111ca611979565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806112eb57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166112df7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610f75576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006107fe81610f0f565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156113a5575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526113a2918101906123f7565b60015b6113eb576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611447576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016113e2565b61071383836119d4565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f75576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040516001600160a01b03848116602483015283811660448301526064820183905261075c9186918216906323b872dd90608401610fa4565b6114f4610f19565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611234565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156115b05750825b905060008267ffffffffffffffff1660011480156115cd5750303b155b9050811580156115db575080155b15611612576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156116735784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038916158061169057506001600160a01b038816155b806116a257506001600160a01b038716155b806116b457506001600160a01b038616155b156116eb576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116f3611a2a565b6116fb611a32565b611703611a2a565b61170b611a42565b600080546001600160a01b03808c167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316178355600180548c831690841617905560028054918b16919092161790556117669087611011565b506117917f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e488611011565b506117bc7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb88611011565b506117e77f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611011565b506118127f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a88611011565b508315610e835784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001610e7a565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166107fe576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016113e2565b60006119126001600160a01b03841683611a52565b905080516000141580156119375750808060200190518101906119359190612410565b155b15610713576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016113e2565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610f75576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119dd82611a67565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611a22576107138282611b0f565b6107fe611b85565b610f75611bbd565b611a3a611bbd565b610f75611c24565b611a4a611bbd565b610f75611c2c565b6060611a6083836000611c7d565b9392505050565b806001600160a01b03163b600003611ab6576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016113e2565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611b2c9190612432565b600060405180830381855af49150503d8060008114611b67576040519150601f19603f3d011682016040523d82523d6000602084013e611b6c565b606091505b5091509150611b7c858383611d33565b95945050505050565b3415610f75576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610f75576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610feb611bbd565b611c34611bbd565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b606081471015611cbb576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016113e2565b600080856001600160a01b03168486604051611cd79190612432565b60006040518083038185875af1925050503d8060008114611d14576040519150601f19603f3d011682016040523d82523d6000602084013e611d19565b606091505b5091509150611d29868383611d33565b9695505050505050565b606082611d4857611d4382611da8565b611a60565b8151158015611d5f57506001600160a01b0384163b155b15611da1576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016113e2565b5080611a60565b805115611db85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215611dfc57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611a6057600080fd5b80356001600160a01b0381168114611e4357600080fd5b919050565b600080600060608486031215611e5d57600080fd5b611e6684611e2c565b95602085013595506040909401359392505050565b600060208284031215611e8d57600080fd5b5035919050565b60008060408385031215611ea757600080fd5b82359150611eb760208401611e2c565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215611f0257600080fd5b611f0b83611e2c565b9150602083013567ffffffffffffffff811115611f2757600080fd5b8301601f81018513611f3857600080fd5b803567ffffffffffffffff811115611f5257611f52611ec0565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715611fbe57611fbe611ec0565b604052818152828201602001871015611fd657600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008083601f84011261200857600080fd5b50813567ffffffffffffffff81111561202057600080fd5b60208301915083602082850101111561203857600080fd5b9250929050565b60008060008060006080868803121561205757600080fd5b61206086611e2c565b945060208601359350604086013567ffffffffffffffff81111561208357600080fd5b61208f88828901611ff6565b96999598509660600135949350505050565b60008060008060008060a087890312156120ba57600080fd5b6120c387611e2c565b955060208701359450604087013567ffffffffffffffff8111156120e657600080fd5b6120f289828a01611ff6565b90955093505060608701359150608087013567ffffffffffffffff81111561211957600080fd5b87016080818a03121561212b57600080fd5b809150509295509295509295565b60006020828403121561214b57600080fd5b611a6082611e2c565b60005b8381101561216f578181015183820152602001612157565b50506000910152565b6020815260008251806020840152612197816040850160208701612154565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b600080600080608085870312156121df57600080fd5b6121e885611e2c565b93506121f660208601611e2c565b925061220460408601611e2c565b915061221260608601611e2c565b905092959194509250565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015260806060820152600061229e60808301848661221d565b979650505050505050565b838152604060208201526000611b7c60408301848661221d565b6001600160a01b036122d482611e2c565b1682526001600160a01b036122eb60208301611e2c565b1660208301526040818101359083015260006060820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe101811261233357600080fd5b820160208101903567ffffffffffffffff81111561235057600080fd5b80360382131561235f57600080fd5b60806060860152611b7c60808601828461221d565b6001600160a01b03871681526001600160a01b038616602082015284604082015260a0606082015260006123ac60a08301858761221d565b82810360808401526123be81856122c3565b9998505050505050505050565b8481526060602082015260006123e560608301858761221d565b828103604084015261229e81856122c3565b60006020828403121561240957600080fd5b5051919050565b60006020828403121561242257600080fd5b81518015158114611a6057600080fd5b60008251612444818460208701612154565b919091019291505056fea26469706673582212202ccda6cf938103cf9360372c0fa3e0ebb32685301499dc22c9161d7f6bd7f3a664736f6c634300081a0033", + 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\":\"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\":\"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\":\"initialize\",\"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\"}],\"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\":\"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\":\"updateTSSAddress\",\"inputs\":[{\"name\":\"newTSSAddress\",\"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\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"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\":\"\",\"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\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"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\":\"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\":\"UpdatedZetaConnectorTSSAddress\",\"inputs\":[{\"name\":\"oldTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newTSSAddress\",\"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\":\"Withdrawn\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawnAndCalled\",\"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\":\"WithdrawnAndReverted\",\"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\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawnV2\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"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\":\"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\":\"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: "0x60a060405230608052348015601357600080fd5b5060805161248461003d6000396000818161125d01528181611286015261145c01526124846000f3fe6080604052600436106101965760003560e01c80635e3e9fef116100e1578063950837aa1161008a578063ad3cb1cc11610064578063ad3cb1cc146104f2578063d547741f14610548578063e63ab1e914610568578063f8c8765e1461059c57600080fd5b8063950837aa14610489578063a217fddf146104a9578063a783c789146104be57600080fd5b80638456cb59116100bb5780638456cb59146103db57806385f438c1146103f057806391d148541461042457600080fd5b80635e3e9fef1461037b5780636f8728ad1461039b578063743e0c9b146103bb57600080fd5b806336568abe1161014357806352d1902d1161011d57806352d1902d1461030f5780635b112591146103245780635c975abb1461034457600080fd5b806336568abe146102c75780633f4ba83a146102e75780634f1ef286146102fc57600080fd5b806321e093b11161017457806321e093b11461022a578063248a9ca31461024a5780632f2ff15d146102a757600080fd5b806301ffc9a71461019b578063106e6290146101d0578063116191b6146101f2575b600080fd5b3480156101a757600080fd5b506101bb6101b6366004611dea565b6105bc565b60405190151581526020015b60405180910390f35b3480156101dc57600080fd5b506101f06101eb366004611e48565b610655565b005b3480156101fe57600080fd5b50600054610212906001600160a01b031681565b6040516001600160a01b0390911681526020016101c7565b34801561023657600080fd5b50600154610212906001600160a01b031681565b34801561025657600080fd5b50610299610265366004611e7b565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101c7565b3480156102b357600080fd5b506101f06102c2366004611e94565b610718565b3480156102d357600080fd5b506101f06102e2366004611e94565b610762565b3480156102f357600080fd5b506101f06107ae565b6101f061030a366004611eef565b6107e3565b34801561031b57600080fd5b50610299610802565b34801561033057600080fd5b50600254610212906001600160a01b031681565b34801561035057600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101bb565b34801561038757600080fd5b506101f061039636600461203f565b610831565b3480156103a757600080fd5b506101f06103b63660046120a1565b610985565b3480156103c757600080fd5b506101f06103d6366004611e7b565b610ade565b3480156103e757600080fd5b506101f0610afe565b3480156103fc57600080fd5b506102997f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b34801561043057600080fd5b506101bb61043f366004611e94565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561049557600080fd5b506101f06104a4366004612139565b610b30565b3480156104b557600080fd5b50610299600081565b3480156104ca57600080fd5b506102997f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b3480156104fe57600080fd5b5061053b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101c79190612178565b34801561055457600080fd5b506101f0610563366004611e94565b610cc3565b34801561057457600080fd5b506102997f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b3480156105a857600080fd5b506101f06105b73660046121c9565b610d07565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061064f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61065d610e8e565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461068781610f0f565b61068f610f19565b6001546106a6906001600160a01b03168585610f77565b836001600160a01b03167f3e35ef4326151011878c9e8e968a0f3913fe98ca68f72a1e0c2e9be13ffb3ee9846040516106e191815260200190565b60405180910390a25061071360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461075281610f0f565b61075c8383611011565b50505050565b6001600160a01b03811633146107a4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61071382826110fe565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6107d881610f0f565b6107e06111c2565b50565b6107eb611252565b6107f482611322565b6107fe828261132d565b5050565b600061080c611451565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610839610e8e565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461086381610f0f565b61086b610f19565b600054600154610888916001600160a01b03918216911687610f77565b6000546001546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692635131ab59926108dd929116908a908a908a908a90600401612266565b600060405180830381600087803b1580156108f757600080fd5b505af115801561090b573d6000803e3d6000fd5b50505050856001600160a01b03167f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d86868660405161094c939291906122a9565b60405180910390a25061097e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b61098d610e8e565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46109b781610f0f565b6109bf610f19565b6000546001546109dc916001600160a01b03918216911688610f77565b6000546001546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526001600160a01b039283169263aa0c0fc192610a33929116908b908b908b908b908a90600401612374565b600060405180830381600087803b158015610a4d57600080fd5b505af1158015610a61573d6000803e3d6000fd5b50505050866001600160a01b03167f5272d2fee39bff41b2e763562526315906046373ce08a7bacf76c3080d731ff087878786604051610aa494939291906123cb565b60405180910390a250610ad660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b610ae6610f19565b6001546107e0906001600160a01b03163330846114b3565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610b2881610f0f565b6107e06114ec565b6000610b3b81610f0f565b6001600160a01b038216610b7b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254610bb2907f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4906001600160a01b03166110fe565b50600254610bea907f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb906001600160a01b03166110fe565b50610c157f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483611011565b50610c407f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb83611011565b50600254604080516001600160a01b03928316815291841660208301527f33770ab682353c17917ad3e667f05905fc8dda00671ef1ed33bef9bc8db0323e910160405180910390a150600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610cfd81610f0f565b61075c83836110fe565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610d525750825b905060008267ffffffffffffffff166001148015610d6f5750303b155b905081158015610d7d575080155b15610db4576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610e155784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610e2189898989611565565b8315610e835784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b505050505050505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01610f09576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6107e08133611870565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615610f75576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040516001600160a01b0383811660248301526044820183905261071391859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506118fd565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166110f4576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556110aa3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061064f565b600091505061064f565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156110f4576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061064f565b6111ca611979565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806112eb57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166112df7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610f75576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006107fe81610f0f565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156113a5575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526113a2918101906123f7565b60015b6113eb576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611447576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016113e2565b61071383836119d4565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f75576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040516001600160a01b03848116602483015283811660448301526064820183905261075c9186918216906323b872dd90608401610fa4565b6114f4610f19565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611234565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156115b05750825b905060008267ffffffffffffffff1660011480156115cd5750303b155b9050811580156115db575080155b15611612576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156116735784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038916158061169057506001600160a01b038816155b806116a257506001600160a01b038716155b806116b457506001600160a01b038616155b156116eb576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116f3611a2a565b6116fb611a32565b611703611a2a565b61170b611a42565b600080546001600160a01b03808c167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316178355600180548c831690841617905560028054918b16919092161790556117669087611011565b506117917f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e488611011565b506117bc7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb88611011565b506117e77f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611011565b506118127f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a88611011565b508315610e835784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001610e7a565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166107fe576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016113e2565b60006119126001600160a01b03841683611a52565b905080516000141580156119375750808060200190518101906119359190612410565b155b15610713576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016113e2565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610f75576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119dd82611a67565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611a22576107138282611b0f565b6107fe611b85565b610f75611bbd565b611a3a611bbd565b610f75611c24565b611a4a611bbd565b610f75611c2c565b6060611a6083836000611c7d565b9392505050565b806001600160a01b03163b600003611ab6576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016113e2565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611b2c9190612432565b600060405180830381855af49150503d8060008114611b67576040519150601f19603f3d011682016040523d82523d6000602084013e611b6c565b606091505b5091509150611b7c858383611d33565b95945050505050565b3415610f75576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610f75576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610feb611bbd565b611c34611bbd565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b606081471015611cbb576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016113e2565b600080856001600160a01b03168486604051611cd79190612432565b60006040518083038185875af1925050503d8060008114611d14576040519150601f19603f3d011682016040523d82523d6000602084013e611d19565b606091505b5091509150611d29868383611d33565b9695505050505050565b606082611d4857611d4382611da8565b611a60565b8151158015611d5f57506001600160a01b0384163b155b15611da1576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016113e2565b5080611a60565b805115611db85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215611dfc57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611a6057600080fd5b80356001600160a01b0381168114611e4357600080fd5b919050565b600080600060608486031215611e5d57600080fd5b611e6684611e2c565b95602085013595506040909401359392505050565b600060208284031215611e8d57600080fd5b5035919050565b60008060408385031215611ea757600080fd5b82359150611eb760208401611e2c565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215611f0257600080fd5b611f0b83611e2c565b9150602083013567ffffffffffffffff811115611f2757600080fd5b8301601f81018513611f3857600080fd5b803567ffffffffffffffff811115611f5257611f52611ec0565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715611fbe57611fbe611ec0565b604052818152828201602001871015611fd657600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008083601f84011261200857600080fd5b50813567ffffffffffffffff81111561202057600080fd5b60208301915083602082850101111561203857600080fd5b9250929050565b60008060008060006080868803121561205757600080fd5b61206086611e2c565b945060208601359350604086013567ffffffffffffffff81111561208357600080fd5b61208f88828901611ff6565b96999598509660600135949350505050565b60008060008060008060a087890312156120ba57600080fd5b6120c387611e2c565b955060208701359450604087013567ffffffffffffffff8111156120e657600080fd5b6120f289828a01611ff6565b90955093505060608701359150608087013567ffffffffffffffff81111561211957600080fd5b87016080818a03121561212b57600080fd5b809150509295509295509295565b60006020828403121561214b57600080fd5b611a6082611e2c565b60005b8381101561216f578181015183820152602001612157565b50506000910152565b6020815260008251806020840152612197816040850160208701612154565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b600080600080608085870312156121df57600080fd5b6121e885611e2c565b93506121f660208601611e2c565b925061220460408601611e2c565b915061221260608601611e2c565b905092959194509250565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015260806060820152600061229e60808301848661221d565b979650505050505050565b838152604060208201526000611b7c60408301848661221d565b6001600160a01b036122d482611e2c565b1682526001600160a01b036122eb60208301611e2c565b1660208301526040818101359083015260006060820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe101811261233357600080fd5b820160208101903567ffffffffffffffff81111561235057600080fd5b80360382131561235f57600080fd5b60806060860152611b7c60808601828461221d565b6001600160a01b03871681526001600160a01b038616602082015284604082015260a0606082015260006123ac60a08301858761221d565b82810360808401526123be81856122c3565b9998505050505050505050565b8481526060602082015260006123e560608301858761221d565b828103604084015261229e81856122c3565b60006020828403121561240957600080fd5b5051919050565b60006020828403121561242257600080fd5b81518015158114611a6057600080fd5b60008251612444818460208701612154565b919091019291505056fea26469706673582212205647c42df80872546deb9db473500b1f5e2ea026ed8139f845cd3cf3f6b459f764736f6c634300081a0033", } // ZetaConnectorNativeUpgradeTestABI is the input ABI used to generate the binding from. @@ -804,65 +804,65 @@ func (_ZetaConnectorNativeUpgradeTest *ZetaConnectorNativeUpgradeTestTransactorS // Withdraw is a paid mutator transaction binding the contract method 0x106e6290. // -// Solidity: function withdraw(address to, uint256 amount, bytes32 internalSendHash) returns() -func (_ZetaConnectorNativeUpgradeTest *ZetaConnectorNativeUpgradeTestTransactor) Withdraw(opts *bind.TransactOpts, to common.Address, amount *big.Int, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorNativeUpgradeTest.contract.Transact(opts, "withdraw", to, amount, internalSendHash) +// Solidity: function withdraw(address to, uint256 amount, bytes32 ) returns() +func (_ZetaConnectorNativeUpgradeTest *ZetaConnectorNativeUpgradeTestTransactor) Withdraw(opts *bind.TransactOpts, to common.Address, amount *big.Int, arg2 [32]byte) (*types.Transaction, error) { + return _ZetaConnectorNativeUpgradeTest.contract.Transact(opts, "withdraw", to, amount, arg2) } // Withdraw is a paid mutator transaction binding the contract method 0x106e6290. // -// Solidity: function withdraw(address to, uint256 amount, bytes32 internalSendHash) returns() -func (_ZetaConnectorNativeUpgradeTest *ZetaConnectorNativeUpgradeTestSession) Withdraw(to common.Address, amount *big.Int, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorNativeUpgradeTest.Contract.Withdraw(&_ZetaConnectorNativeUpgradeTest.TransactOpts, to, amount, internalSendHash) +// Solidity: function withdraw(address to, uint256 amount, bytes32 ) returns() +func (_ZetaConnectorNativeUpgradeTest *ZetaConnectorNativeUpgradeTestSession) Withdraw(to common.Address, amount *big.Int, arg2 [32]byte) (*types.Transaction, error) { + return _ZetaConnectorNativeUpgradeTest.Contract.Withdraw(&_ZetaConnectorNativeUpgradeTest.TransactOpts, to, amount, arg2) } // Withdraw is a paid mutator transaction binding the contract method 0x106e6290. // -// Solidity: function withdraw(address to, uint256 amount, bytes32 internalSendHash) returns() -func (_ZetaConnectorNativeUpgradeTest *ZetaConnectorNativeUpgradeTestTransactorSession) Withdraw(to common.Address, amount *big.Int, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorNativeUpgradeTest.Contract.Withdraw(&_ZetaConnectorNativeUpgradeTest.TransactOpts, to, amount, internalSendHash) +// Solidity: function withdraw(address to, uint256 amount, bytes32 ) returns() +func (_ZetaConnectorNativeUpgradeTest *ZetaConnectorNativeUpgradeTestTransactorSession) Withdraw(to common.Address, amount *big.Int, arg2 [32]byte) (*types.Transaction, error) { + return _ZetaConnectorNativeUpgradeTest.Contract.Withdraw(&_ZetaConnectorNativeUpgradeTest.TransactOpts, to, amount, arg2) } // WithdrawAndCall is a paid mutator transaction binding the contract method 0x5e3e9fef. // -// Solidity: function withdrawAndCall(address to, uint256 amount, bytes data, bytes32 internalSendHash) returns() -func (_ZetaConnectorNativeUpgradeTest *ZetaConnectorNativeUpgradeTestTransactor) WithdrawAndCall(opts *bind.TransactOpts, to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorNativeUpgradeTest.contract.Transact(opts, "withdrawAndCall", to, amount, data, internalSendHash) +// Solidity: function withdrawAndCall(address to, uint256 amount, bytes data, bytes32 ) returns() +func (_ZetaConnectorNativeUpgradeTest *ZetaConnectorNativeUpgradeTestTransactor) WithdrawAndCall(opts *bind.TransactOpts, to common.Address, amount *big.Int, data []byte, arg3 [32]byte) (*types.Transaction, error) { + return _ZetaConnectorNativeUpgradeTest.contract.Transact(opts, "withdrawAndCall", to, amount, data, arg3) } // WithdrawAndCall is a paid mutator transaction binding the contract method 0x5e3e9fef. // -// Solidity: function withdrawAndCall(address to, uint256 amount, bytes data, bytes32 internalSendHash) returns() -func (_ZetaConnectorNativeUpgradeTest *ZetaConnectorNativeUpgradeTestSession) WithdrawAndCall(to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorNativeUpgradeTest.Contract.WithdrawAndCall(&_ZetaConnectorNativeUpgradeTest.TransactOpts, to, amount, data, internalSendHash) +// Solidity: function withdrawAndCall(address to, uint256 amount, bytes data, bytes32 ) returns() +func (_ZetaConnectorNativeUpgradeTest *ZetaConnectorNativeUpgradeTestSession) WithdrawAndCall(to common.Address, amount *big.Int, data []byte, arg3 [32]byte) (*types.Transaction, error) { + return _ZetaConnectorNativeUpgradeTest.Contract.WithdrawAndCall(&_ZetaConnectorNativeUpgradeTest.TransactOpts, to, amount, data, arg3) } // WithdrawAndCall is a paid mutator transaction binding the contract method 0x5e3e9fef. // -// Solidity: function withdrawAndCall(address to, uint256 amount, bytes data, bytes32 internalSendHash) returns() -func (_ZetaConnectorNativeUpgradeTest *ZetaConnectorNativeUpgradeTestTransactorSession) WithdrawAndCall(to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte) (*types.Transaction, error) { - return _ZetaConnectorNativeUpgradeTest.Contract.WithdrawAndCall(&_ZetaConnectorNativeUpgradeTest.TransactOpts, to, amount, data, internalSendHash) +// Solidity: function withdrawAndCall(address to, uint256 amount, bytes data, bytes32 ) returns() +func (_ZetaConnectorNativeUpgradeTest *ZetaConnectorNativeUpgradeTestTransactorSession) WithdrawAndCall(to common.Address, amount *big.Int, data []byte, arg3 [32]byte) (*types.Transaction, error) { + return _ZetaConnectorNativeUpgradeTest.Contract.WithdrawAndCall(&_ZetaConnectorNativeUpgradeTest.TransactOpts, to, amount, data, arg3) } // WithdrawAndRevert is a paid mutator transaction binding the contract method 0x6f8728ad. // -// Solidity: function withdrawAndRevert(address to, uint256 amount, bytes data, bytes32 internalSendHash, (address,address,uint256,bytes) revertContext) returns() -func (_ZetaConnectorNativeUpgradeTest *ZetaConnectorNativeUpgradeTestTransactor) WithdrawAndRevert(opts *bind.TransactOpts, to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte, revertContext RevertContext) (*types.Transaction, error) { - return _ZetaConnectorNativeUpgradeTest.contract.Transact(opts, "withdrawAndRevert", to, amount, data, internalSendHash, revertContext) +// Solidity: function withdrawAndRevert(address to, uint256 amount, bytes data, bytes32 , (address,address,uint256,bytes) revertContext) returns() +func (_ZetaConnectorNativeUpgradeTest *ZetaConnectorNativeUpgradeTestTransactor) WithdrawAndRevert(opts *bind.TransactOpts, to common.Address, amount *big.Int, data []byte, arg3 [32]byte, revertContext RevertContext) (*types.Transaction, error) { + return _ZetaConnectorNativeUpgradeTest.contract.Transact(opts, "withdrawAndRevert", to, amount, data, arg3, revertContext) } // WithdrawAndRevert is a paid mutator transaction binding the contract method 0x6f8728ad. // -// Solidity: function withdrawAndRevert(address to, uint256 amount, bytes data, bytes32 internalSendHash, (address,address,uint256,bytes) revertContext) returns() -func (_ZetaConnectorNativeUpgradeTest *ZetaConnectorNativeUpgradeTestSession) WithdrawAndRevert(to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte, revertContext RevertContext) (*types.Transaction, error) { - return _ZetaConnectorNativeUpgradeTest.Contract.WithdrawAndRevert(&_ZetaConnectorNativeUpgradeTest.TransactOpts, to, amount, data, internalSendHash, revertContext) +// Solidity: function withdrawAndRevert(address to, uint256 amount, bytes data, bytes32 , (address,address,uint256,bytes) revertContext) returns() +func (_ZetaConnectorNativeUpgradeTest *ZetaConnectorNativeUpgradeTestSession) WithdrawAndRevert(to common.Address, amount *big.Int, data []byte, arg3 [32]byte, revertContext RevertContext) (*types.Transaction, error) { + return _ZetaConnectorNativeUpgradeTest.Contract.WithdrawAndRevert(&_ZetaConnectorNativeUpgradeTest.TransactOpts, to, amount, data, arg3, revertContext) } // WithdrawAndRevert is a paid mutator transaction binding the contract method 0x6f8728ad. // -// Solidity: function withdrawAndRevert(address to, uint256 amount, bytes data, bytes32 internalSendHash, (address,address,uint256,bytes) revertContext) returns() -func (_ZetaConnectorNativeUpgradeTest *ZetaConnectorNativeUpgradeTestTransactorSession) WithdrawAndRevert(to common.Address, amount *big.Int, data []byte, internalSendHash [32]byte, revertContext RevertContext) (*types.Transaction, error) { - return _ZetaConnectorNativeUpgradeTest.Contract.WithdrawAndRevert(&_ZetaConnectorNativeUpgradeTest.TransactOpts, to, amount, data, internalSendHash, revertContext) +// Solidity: function withdrawAndRevert(address to, uint256 amount, bytes data, bytes32 , (address,address,uint256,bytes) revertContext) returns() +func (_ZetaConnectorNativeUpgradeTest *ZetaConnectorNativeUpgradeTestTransactorSession) WithdrawAndRevert(to common.Address, amount *big.Int, data []byte, arg3 [32]byte, revertContext RevertContext) (*types.Transaction, error) { + return _ZetaConnectorNativeUpgradeTest.Contract.WithdrawAndRevert(&_ZetaConnectorNativeUpgradeTest.TransactOpts, to, amount, data, arg3, revertContext) } // ZetaConnectorNativeUpgradeTestInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the ZetaConnectorNativeUpgradeTest contract. diff --git a/v2/pkg/zetaconnectornonnative.sol/zetaconnectornonnative.go b/v2/pkg/zetaconnectornonnative.sol/zetaconnectornonnative.go index 80ded77ab..a7a25bd40 100644 --- a/v2/pkg/zetaconnectornonnative.sol/zetaconnectornonnative.go +++ b/v2/pkg/zetaconnectornonnative.sol/zetaconnectornonnative.go @@ -40,7 +40,7 @@ type RevertContext struct { // ZetaConnectorNonNativeMetaData contains all meta data concerning the ZetaConnectorNonNative contract. var ZetaConnectorNonNativeMetaData = &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\":\"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\":\"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\":\"initialize\",\"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\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"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\":\"updateTSSAddress\",\"inputs\":[{\"name\":\"newTSSAddress\",\"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\":\"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\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"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\":\"UpdatedZetaConnectorTSSAddress\",\"inputs\":[{\"name\":\"oldTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newTSSAddress\",\"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\":\"Withdrawn\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawnAndCalled\",\"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\":\"WithdrawnAndReverted\",\"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\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"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\":\"ERC1967InvalidImplementation\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967NonPayable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExceedsMaxSupply\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpectedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"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\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x60a060405230608052348015601357600080fd5b5060805161251961003d6000396000818161145701528181611480015261165601526125196000f3fe6080604052600436106101ac5760003560e01c80636f8728ad116100ec578063a217fddf1161008a578063d547741f11610064578063d547741f1461057e578063d5abeb011461059e578063e63ab1e9146105b4578063f8c8765e146105e857600080fd5b8063a217fddf146104df578063a783c789146104f4578063ad3cb1cc1461052857600080fd5b80638456cb59116100c65780638456cb591461041157806385f438c11461042657806391d148541461045a578063950837aa146104bf57600080fd5b80636f8728ad146103b15780636f8b44b0146103d1578063743e0c9b146103f157600080fd5b806336568abe1161015957806352d1902d1161013357806352d1902d146103255780635b1125911461033a5780635c975abb1461035a5780635e3e9fef1461039157600080fd5b806336568abe146102dd5780633f4ba83a146102fd5780634f1ef2861461031257600080fd5b806321e093b11161018a57806321e093b114610240578063248a9ca3146102605780632f2ff15d146102bd57600080fd5b806301ffc9a7146101b1578063106e6290146101e6578063116191b614610208575b600080fd5b3480156101bd57600080fd5b506101d16101cc366004611e67565b610608565b60405190151581526020015b60405180910390f35b3480156101f257600080fd5b50610206610201366004611ec5565b6106a1565b005b34801561021457600080fd5b50600054610228906001600160a01b031681565b6040516001600160a01b0390911681526020016101dd565b34801561024c57600080fd5b50600154610228906001600160a01b031681565b34801561026c57600080fd5b506102af61027b366004611ef8565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101dd565b3480156102c957600080fd5b506102066102d8366004611f11565b610758565b3480156102e957600080fd5b506102066102f8366004611f11565b6107a2565b34801561030957600080fd5b506102066107ee565b610206610320366004611f6c565b610823565b34801561033157600080fd5b506102af610842565b34801561034657600080fd5b50600254610228906001600160a01b031681565b34801561036657600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101d1565b34801561039d57600080fd5b506102066103ac3660046120bc565b610871565b3480156103bd57600080fd5b506102066103cc36600461211e565b6109bf565b3480156103dd57600080fd5b506102066103ec366004611ef8565b610b12565b3480156103fd57600080fd5b5061020661040c366004611ef8565b610b80565b34801561041d57600080fd5b50610206610c01565b34801561043257600080fd5b506102af7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b34801561046657600080fd5b506101d1610475366004611f11565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156104cb57600080fd5b506102066104da3660046121b6565b610c33565b3480156104eb57600080fd5b506102af600081565b34801561050057600080fd5b506102af7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561053457600080fd5b506105716040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101dd91906121f5565b34801561058a57600080fd5b50610206610599366004611f11565b610dc6565b3480156105aa57600080fd5b506102af60035481565b3480156105c057600080fd5b506102af7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b3480156105f457600080fd5b50610206610603366004612246565b610e0a565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061069b57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6106a9610fb5565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46106d381611036565b6106db611040565b6106e684848461109e565b836001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d58460405161072191815260200190565b60405180910390a25061075360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461079281611036565b61079c838361120b565b50505050565b6001600160a01b03811633146107e4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61075382826112f8565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61081881611036565b6108206113bc565b50565b61082b61144c565b6108348261151c565b61083e8282611527565b5050565b600061084c61164b565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610879610fb5565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46108a381611036565b6108ab611040565b6000546108c2906001600160a01b0316868461109e565b6000546001546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692635131ab5992610917929116908a908a908a908a906004016122e3565b600060405180830381600087803b15801561093157600080fd5b505af1158015610945573d6000803e3d6000fd5b50505050856001600160a01b03167f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d86868660405161098693929190612326565b60405180910390a2506109b860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6109c7610fb5565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46109f181611036565b6109f9611040565b600054610a10906001600160a01b0316878561109e565b6000546001546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526001600160a01b039283169263aa0c0fc192610a67929116908b908b908b908b908a906004016123f1565b600060405180830381600087803b158015610a8157600080fd5b505af1158015610a95573d6000803e3d6000fd5b50505050866001600160a01b03167f5272d2fee39bff41b2e763562526315906046373ce08a7bacf76c3080d731ff087878786604051610ad89493929190612448565b60405180910390a250610b0a60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610b3c81611036565b610b44611040565b60038290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610b88611040565b6001546040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018390526001600160a01b03909116906379cc679090604401600060405180830381600087803b158015610bed57600080fd5b505af11580156109b8573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610c2b81611036565b6108206116ad565b6000610c3e81611036565b6001600160a01b038216610c7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254610cb5907f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4906001600160a01b03166112f8565b50600254610ced907f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb906001600160a01b03166112f8565b50610d187f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48361120b565b50610d437f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb8361120b565b50600254604080516001600160a01b03928316815291841660208301527f33770ab682353c17917ad3e667f05905fc8dda00671ef1ed33bef9bc8db0323e910160405180910390a150600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610e0081611036565b61079c83836112f8565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610e555750825b905060008267ffffffffffffffff166001148015610e725750303b155b905081158015610e80575080155b15610eb7576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610f185784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610f2489898989611726565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6003558315610faa5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b505050505050505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611030576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6108208133611a31565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff161561109c576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600354600160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111189190612474565b611122908461248d565b111561115a576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040517f1e458bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018590526044820184905290911690631e458bee90606401600060405180830381600087803b1580156111c857600080fd5b505af11580156111dc573d6000803e3d6000fd5b50505050505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166112ee576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556112a43390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061069b565b600091505061069b565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156112ee576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061069b565b6113c4611abe565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806114e557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114d97f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b1561109c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061083e81611036565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561159f575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261159c91810190612474565b60015b6115e5576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611641576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016115dc565b6107538383611b19565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461109c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116b5611040565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361142e565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156117715750825b905060008267ffffffffffffffff16600114801561178e5750303b155b90508115801561179c575080155b156117d3576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156118345784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038916158061185157506001600160a01b038816155b8061186357506001600160a01b038716155b8061187557506001600160a01b038616155b156118ac576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118b4611b6f565b6118bc611b77565b6118c4611b6f565b6118cc611b87565b600080546001600160a01b03808c167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316178355600180548c831690841617905560028054918b1691909216179055611927908761120b565b506119527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48861120b565b5061197d7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb8861120b565b506119a87f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8761120b565b506119d37f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8861120b565b508315610faa5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001610fa1565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff1661083e576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016115dc565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1661109c576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b2282611b97565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b67576107538282611c3f565b61083e611cb5565b61109c611ced565b611b7f611ced565b61109c611d54565b611b8f611ced565b61109c611d5c565b806001600160a01b03163b600003611be6576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016115dc565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611c5c91906124c7565b600060405180830381855af49150503d8060008114611c97576040519150601f19603f3d011682016040523d82523d6000602084013e611c9c565b606091505b5091509150611cac858383611dad565b95945050505050565b341561109c576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661109c576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111e5611ced565b611d64611ced565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b606082611dc257611dbd82611e25565b611e1e565b8151158015611dd957506001600160a01b0384163b155b15611e1b576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016115dc565b50805b9392505050565b805115611e355780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215611e7957600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611e1e57600080fd5b80356001600160a01b0381168114611ec057600080fd5b919050565b600080600060608486031215611eda57600080fd5b611ee384611ea9565b95602085013595506040909401359392505050565b600060208284031215611f0a57600080fd5b5035919050565b60008060408385031215611f2457600080fd5b82359150611f3460208401611ea9565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215611f7f57600080fd5b611f8883611ea9565b9150602083013567ffffffffffffffff811115611fa457600080fd5b8301601f81018513611fb557600080fd5b803567ffffffffffffffff811115611fcf57611fcf611f3d565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561203b5761203b611f3d565b60405281815282820160200187101561205357600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008083601f84011261208557600080fd5b50813567ffffffffffffffff81111561209d57600080fd5b6020830191508360208285010111156120b557600080fd5b9250929050565b6000806000806000608086880312156120d457600080fd5b6120dd86611ea9565b945060208601359350604086013567ffffffffffffffff81111561210057600080fd5b61210c88828901612073565b96999598509660600135949350505050565b60008060008060008060a0878903121561213757600080fd5b61214087611ea9565b955060208701359450604087013567ffffffffffffffff81111561216357600080fd5b61216f89828a01612073565b90955093505060608701359150608087013567ffffffffffffffff81111561219657600080fd5b87016080818a0312156121a857600080fd5b809150509295509295509295565b6000602082840312156121c857600080fd5b611e1e82611ea9565b60005b838110156121ec5781810151838201526020016121d4565b50506000910152565b60208152600082518060208401526122148160408501602087016121d1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000806000806080858703121561225c57600080fd5b61226585611ea9565b935061227360208601611ea9565b925061228160408601611ea9565b915061228f60608601611ea9565b905092959194509250565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015260806060820152600061231b60808301848661229a565b979650505050505050565b838152604060208201526000611cac60408301848661229a565b6001600160a01b0361235182611ea9565b1682526001600160a01b0361236860208301611ea9565b1660208301526040818101359083015260006060820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe10181126123b057600080fd5b820160208101903567ffffffffffffffff8111156123cd57600080fd5b8036038213156123dc57600080fd5b60806060860152611cac60808601828461229a565b6001600160a01b03871681526001600160a01b038616602082015284604082015260a06060820152600061242960a08301858761229a565b828103608084015261243b8185612340565b9998505050505050505050565b84815260606020820152600061246260608301858761229a565b828103604084015261231b8185612340565b60006020828403121561248657600080fd5b5051919050565b8082018082111561069b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082516124d98184602087016121d1565b919091019291505056fea2646970667358221220ecaeeab5029e9c664da04ee2fdaf2e0659e1740805c1791257cff702c4072f4664736f6c634300081a0033", + Bin: "0x60a060405230608052348015601357600080fd5b5060805161251961003d6000396000818161145701528181611480015261165601526125196000f3fe6080604052600436106101ac5760003560e01c80636f8728ad116100ec578063a217fddf1161008a578063d547741f11610064578063d547741f1461057e578063d5abeb011461059e578063e63ab1e9146105b4578063f8c8765e146105e857600080fd5b8063a217fddf146104df578063a783c789146104f4578063ad3cb1cc1461052857600080fd5b80638456cb59116100c65780638456cb591461041157806385f438c11461042657806391d148541461045a578063950837aa146104bf57600080fd5b80636f8728ad146103b15780636f8b44b0146103d1578063743e0c9b146103f157600080fd5b806336568abe1161015957806352d1902d1161013357806352d1902d146103255780635b1125911461033a5780635c975abb1461035a5780635e3e9fef1461039157600080fd5b806336568abe146102dd5780633f4ba83a146102fd5780634f1ef2861461031257600080fd5b806321e093b11161018a57806321e093b114610240578063248a9ca3146102605780632f2ff15d146102bd57600080fd5b806301ffc9a7146101b1578063106e6290146101e6578063116191b614610208575b600080fd5b3480156101bd57600080fd5b506101d16101cc366004611e67565b610608565b60405190151581526020015b60405180910390f35b3480156101f257600080fd5b50610206610201366004611ec5565b6106a1565b005b34801561021457600080fd5b50600054610228906001600160a01b031681565b6040516001600160a01b0390911681526020016101dd565b34801561024c57600080fd5b50600154610228906001600160a01b031681565b34801561026c57600080fd5b506102af61027b366004611ef8565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101dd565b3480156102c957600080fd5b506102066102d8366004611f11565b610758565b3480156102e957600080fd5b506102066102f8366004611f11565b6107a2565b34801561030957600080fd5b506102066107ee565b610206610320366004611f6c565b610823565b34801561033157600080fd5b506102af610842565b34801561034657600080fd5b50600254610228906001600160a01b031681565b34801561036657600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101d1565b34801561039d57600080fd5b506102066103ac3660046120bc565b610871565b3480156103bd57600080fd5b506102066103cc36600461211e565b6109bf565b3480156103dd57600080fd5b506102066103ec366004611ef8565b610b12565b3480156103fd57600080fd5b5061020661040c366004611ef8565b610b80565b34801561041d57600080fd5b50610206610c01565b34801561043257600080fd5b506102af7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b34801561046657600080fd5b506101d1610475366004611f11565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156104cb57600080fd5b506102066104da3660046121b6565b610c33565b3480156104eb57600080fd5b506102af600081565b34801561050057600080fd5b506102af7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561053457600080fd5b506105716040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101dd91906121f5565b34801561058a57600080fd5b50610206610599366004611f11565b610dc6565b3480156105aa57600080fd5b506102af60035481565b3480156105c057600080fd5b506102af7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b3480156105f457600080fd5b50610206610603366004612246565b610e0a565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061069b57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6106a9610fb5565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46106d381611036565b6106db611040565b6106e684848461109e565b836001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d58460405161072191815260200190565b60405180910390a25061075360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461079281611036565b61079c838361120b565b50505050565b6001600160a01b03811633146107e4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61075382826112f8565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61081881611036565b6108206113bc565b50565b61082b61144c565b6108348261151c565b61083e8282611527565b5050565b600061084c61164b565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610879610fb5565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46108a381611036565b6108ab611040565b6000546108c2906001600160a01b0316868461109e565b6000546001546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692635131ab5992610917929116908a908a908a908a906004016122e3565b600060405180830381600087803b15801561093157600080fd5b505af1158015610945573d6000803e3d6000fd5b50505050856001600160a01b03167f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d86868660405161098693929190612326565b60405180910390a2506109b860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6109c7610fb5565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46109f181611036565b6109f9611040565b600054610a10906001600160a01b0316878561109e565b6000546001546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526001600160a01b039283169263aa0c0fc192610a67929116908b908b908b908b908a906004016123f1565b600060405180830381600087803b158015610a8157600080fd5b505af1158015610a95573d6000803e3d6000fd5b50505050866001600160a01b03167f5272d2fee39bff41b2e763562526315906046373ce08a7bacf76c3080d731ff087878786604051610ad89493929190612448565b60405180910390a250610b0a60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610b3c81611036565b610b44611040565b60038290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610b88611040565b6001546040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018390526001600160a01b03909116906379cc679090604401600060405180830381600087803b158015610bed57600080fd5b505af11580156109b8573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610c2b81611036565b6108206116ad565b6000610c3e81611036565b6001600160a01b038216610c7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254610cb5907f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4906001600160a01b03166112f8565b50600254610ced907f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb906001600160a01b03166112f8565b50610d187f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48361120b565b50610d437f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb8361120b565b50600254604080516001600160a01b03928316815291841660208301527f33770ab682353c17917ad3e667f05905fc8dda00671ef1ed33bef9bc8db0323e910160405180910390a150600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610e0081611036565b61079c83836112f8565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610e555750825b905060008267ffffffffffffffff166001148015610e725750303b155b905081158015610e80575080155b15610eb7576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610f185784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610f2489898989611726565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6003558315610faa5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b505050505050505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611030576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6108208133611a31565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff161561109c576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600354600160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111189190612474565b611122908461248d565b111561115a576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040517f1e458bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018590526044820184905290911690631e458bee90606401600060405180830381600087803b1580156111c857600080fd5b505af11580156111dc573d6000803e3d6000fd5b50505050505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166112ee576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556112a43390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061069b565b600091505061069b565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156112ee576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061069b565b6113c4611abe565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806114e557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114d97f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b1561109c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061083e81611036565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561159f575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261159c91810190612474565b60015b6115e5576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611641576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016115dc565b6107538383611b19565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461109c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116b5611040565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361142e565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156117715750825b905060008267ffffffffffffffff16600114801561178e5750303b155b90508115801561179c575080155b156117d3576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156118345784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038916158061185157506001600160a01b038816155b8061186357506001600160a01b038716155b8061187557506001600160a01b038616155b156118ac576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118b4611b6f565b6118bc611b77565b6118c4611b6f565b6118cc611b87565b600080546001600160a01b03808c167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316178355600180548c831690841617905560028054918b1691909216179055611927908761120b565b506119527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48861120b565b5061197d7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb8861120b565b506119a87f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8761120b565b506119d37f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8861120b565b508315610faa5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001610fa1565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff1661083e576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016115dc565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1661109c576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b2282611b97565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b67576107538282611c3f565b61083e611cb5565b61109c611ced565b611b7f611ced565b61109c611d54565b611b8f611ced565b61109c611d5c565b806001600160a01b03163b600003611be6576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016115dc565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611c5c91906124c7565b600060405180830381855af49150503d8060008114611c97576040519150601f19603f3d011682016040523d82523d6000602084013e611c9c565b606091505b5091509150611cac858383611dad565b95945050505050565b341561109c576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661109c576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111e5611ced565b611d64611ced565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b606082611dc257611dbd82611e25565b611e1e565b8151158015611dd957506001600160a01b0384163b155b15611e1b576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016115dc565b50805b9392505050565b805115611e355780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215611e7957600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611e1e57600080fd5b80356001600160a01b0381168114611ec057600080fd5b919050565b600080600060608486031215611eda57600080fd5b611ee384611ea9565b95602085013595506040909401359392505050565b600060208284031215611f0a57600080fd5b5035919050565b60008060408385031215611f2457600080fd5b82359150611f3460208401611ea9565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215611f7f57600080fd5b611f8883611ea9565b9150602083013567ffffffffffffffff811115611fa457600080fd5b8301601f81018513611fb557600080fd5b803567ffffffffffffffff811115611fcf57611fcf611f3d565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561203b5761203b611f3d565b60405281815282820160200187101561205357600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008083601f84011261208557600080fd5b50813567ffffffffffffffff81111561209d57600080fd5b6020830191508360208285010111156120b557600080fd5b9250929050565b6000806000806000608086880312156120d457600080fd5b6120dd86611ea9565b945060208601359350604086013567ffffffffffffffff81111561210057600080fd5b61210c88828901612073565b96999598509660600135949350505050565b60008060008060008060a0878903121561213757600080fd5b61214087611ea9565b955060208701359450604087013567ffffffffffffffff81111561216357600080fd5b61216f89828a01612073565b90955093505060608701359150608087013567ffffffffffffffff81111561219657600080fd5b87016080818a0312156121a857600080fd5b809150509295509295509295565b6000602082840312156121c857600080fd5b611e1e82611ea9565b60005b838110156121ec5781810151838201526020016121d4565b50506000910152565b60208152600082518060208401526122148160408501602087016121d1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000806000806080858703121561225c57600080fd5b61226585611ea9565b935061227360208601611ea9565b925061228160408601611ea9565b915061228f60608601611ea9565b905092959194509250565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015260806060820152600061231b60808301848661229a565b979650505050505050565b838152604060208201526000611cac60408301848661229a565b6001600160a01b0361235182611ea9565b1682526001600160a01b0361236860208301611ea9565b1660208301526040818101359083015260006060820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe10181126123b057600080fd5b820160208101903567ffffffffffffffff8111156123cd57600080fd5b8036038213156123dc57600080fd5b60806060860152611cac60808601828461229a565b6001600160a01b03871681526001600160a01b038616602082015284604082015260a06060820152600061242960a08301858761229a565b828103608084015261243b8185612340565b9998505050505050505050565b84815260606020820152600061246260608301858761229a565b828103604084015261231b8185612340565b60006020828403121561248657600080fd5b5051919050565b8082018082111561069b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082516124d98184602087016121d1565b919091019291505056fea2646970667358221220dcdae3d1abcc1e59c760855979066a21bc8e8a92347b22dd5e8b2fe90f3a69a864736f6c634300081a0033", } // 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 697af4b59..15f868b74 100644 --- a/v2/pkg/zetaconnectornonnative.t.sol/zetaconnectornonnativetest.go +++ b/v2/pkg/zetaconnectornonnative.t.sol/zetaconnectornonnativetest.go @@ -67,7 +67,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\":\"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\":\"testSexMaxSupplyFailsIfSenderIsNotTss\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpgradeAndWithdraw\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdraw\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallFailsIfMaxSupplyIsReached\",\"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\":\"testWithdrawAndFailsIfMaxSupplyIsReached\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevert\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevertFailsIfMaxSupplyIsReached\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevertFailsIfSenderIsNotWithdrawer\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawFailsIfSenderIsNotWithdrawer\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawTogglePause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Called\",\"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\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposited\",\"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\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\":\"ReceivedOnCall\",\"inputs\":[],\"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\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedGatewayTSSAddress\",\"inputs\":[{\"name\":\"oldTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedZetaConnectorTSSAddress\",\"inputs\":[{\"name\":\"oldTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawn\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawnAndCalled\",\"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\":\"WithdrawnAndReverted\",\"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\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawnV2\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"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\":\"ConnectorInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExceedsMaxSupply\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotAllowedToCallOnCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotAllowedToCallOnRevert\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotWhitelistedInCustody\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PayloadSizeExceeded\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061d6698061003c6000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c8063aaf7419211610104578063d509b16c116100a2578063e63ab1e911610071578063e63ab1e914610357578063fa7626d41461037e578063fdca90521461038b578063fe574f841461039357600080fd5b8063d509b16c14610337578063dcf7d0371461033f578063de1cb76c14610347578063e20c9f711461034f57600080fd5b8063b5508aa9116100de578063b5508aa914610307578063ba414fa61461030f578063c190997214610327578063ccb0e3f21461032f57600080fd5b8063aaf74192146102ef578063af298bb1146102f7578063b0464fdc146102ff57600080fd5b8063493465581161017c57806385226c811161014b57806385226c811461026957806385f438c11461027e578063916a17c6146102b3578063a783c789146102c857600080fd5b8063493465581461023c57806366d9a9a0146102445780637db20efb14610259578063828320141461026157600080fd5b80632ade3880116101b85780632ade38801461020f5780633cba0107146102245780633e5e3c231461022c5780633f7286f41461023457600080fd5b80630a9254e4146101df5780631ed7831c146101e95780632506ef0314610207575b600080fd5b6101e761039b565b005b6101f1610b7e565b6040516101fe9190619a93565b60405180910390f35b6101e7610be0565b610217610e94565b6040516101fe9190619b2f565b6101e7610fd6565b6101f16117ad565b6101f161180d565b6101e761186d565b61024c611e4d565b6040516101fe9190619c95565b6101e7611fcf565b6101e761226e565b6102716124ce565b6040516101fe9190619d33565b6102a57f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6040519081526020016101fe565b6102bb61259e565b6040516101fe9190619daa565b6102a57f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b6101e7612699565b6101e7612914565b6102bb612d5e565b610271612e59565b610317612f29565b60405190151581526020016101fe565b6101e7612ffd565b6101e761326d565b6101e7613d9a565b6101e76140ed565b6101e7614729565b6101f1614e56565b6102a57f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b601f546103179060ff1681565b6101e7614eb6565b6101e76150b7565b602480547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602580548216611234179055602680548216615678908117909155602780549092166198761790915560405181906103ff906199c0565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015610432573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600e81527f4761746577617945564d2e736f6c000000000000000000000000000000000000602082015260265460248054935191861690820152604481019390935292166064820152600091610524916084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc0c53b8b000000000000000000000000000000000000000000000000000000001790526152a7565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0384811682029290921792839055604080518082018252601081527f4552433230437573746f64792e736f6c00000000000000000000000000000000602082015260265460248054935194909604851695840195909552938316604483015290911660648201529192506105ca916084016104c7565b602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383811691909117909155604080518082018252601a81527f5a657461436f6e6e6563746f724e6f6e4e61746976652e736f6c0000000000006020820152601f546023546026546024805495516101009094048716908401529085166044830152841660648201529190921660848201529192506106cf9160a40160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff8c8765e000000000000000000000000000000000000000000000000000000001790526152a7565b602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038381169190911790915560265460405163ca669fa760e01b815291166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561075a57600080fd5b505af115801561076e573d6000803e3d6000fd5b50506023546026546022546040517f15d57fd40000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082166024820152911692506315d57fd49150604401600060405180830381600087803b1580156107df57600080fd5b505af11580156107f3573d6000803e3d6000fd5b50505050604051610803906199cd565b604051809103906000f08015801561081f573d6000803e3d6000fd5b50602080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556026546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b1580156108cb57600080fd5b505af11580156108df573d6000803e3d6000fd5b5050602480546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d93506306447d56925001600060405180830381600087803b15801561095457600080fd5b505af1158015610968573d6000803e3d6000fd5b5050601f546021546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261010090920416925063ae7a3a6f9150602401600060405180830381600087803b1580156109d357600080fd5b505af11580156109e7573d6000803e3d6000fd5b5050601f546022546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526101009092041692506310188aef9150602401600060405180830381600087803b158015610a5257600080fd5b505af1158015610a66573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610ac857600080fd5b505af1158015610adc573d6000803e3d6000fd5b5050604080516080810182526024546001600160a01b039081168252602354811660208084019182526001848601908152855191820190955260008152606084018190528351602880549185167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316178155925160298054919095169116179092559251602a55909350909150602b90610b789082619f09565b50505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610bd657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610bb8575b5050505050905090565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a09060009060250160408051808303601f190181529082905260265463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015610c7b57600080fd5b505af1158015610c8f573d6000803e3d6000fd5b50506022546040517f6f8b44b0000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b039091169250636f8b44b09150602401600060405180830381600087803b158015610cf257600080fd5b505af1158015610d06573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015610d6357600080fd5b505af1158015610d77573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fc30436e9000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015610e0057600080fd5b505af1158015610e14573d6000803e3d6000fd5b50506022546020546001600160a01b039182169350636f8728ad925016610e3c856001619ff7565b8460286040518563ffffffff1660e01b8152600401610e5e949392919061a0e7565b600060405180830381600087803b158015610e7857600080fd5b505af1158015610e8c573d6000803e3d6000fd5b505050505050565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015610fcd57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610fb6578382906000526020600020018054610f2990619e70565b80601f0160208091040260200160405190810160405280929190818152602001828054610f5590619e70565b8015610fa25780601f10610f7757610100808354040283529160200191610fa2565b820191906000526020600020905b815481529060010190602001808311610f8557829003601f168201915b505050505081526020019060010190610f0a565b505050508152505081526020019060010190610eb8565b50505050905090565b602354602554604051620186a0602482018190526001600160a01b039384166044830152929091166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a20000000000000000000000000000000000000000000000000000000017905260235460255491516370a0823160e01b81526001600160a01b0392831660048201529293506000929116906370a0823190602401602060405180830381865afa1580156110b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d8919061a128565b90506110e58160006152c6565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611136573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115a919061a128565b90506111678160006152c6565b601f546040516101009091046001600160a01b03166024820152604481018690526064810185905260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260235490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391611252916001600160a01b039190911690600090869060040161a141565b600060405180830381600087803b15801561126c57600080fd5b505af1158015611280573d6000803e3d6000fd5b50506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561131257600080fd5b505af1158015611326573d6000803e3d6000fd5b5050601f54602354602554604080516101009094046001600160a01b039081168552602085018d9052928316908401521660608201527f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609250608001905060405180910390a16022546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561141a57600080fd5b505af115801561142e573d6000803e3d6000fd5b50506020546040516001600160a01b0390911692507f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d9150611473908990889061a169565b60405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156114d457600080fd5b505af11580156114e8573d6000803e3d6000fd5b50506022546020546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef935061154092909116908a9089908b9060040161a182565b600060405180830381600087803b15801561155a57600080fd5b505af115801561156e573d6000803e3d6000fd5b50506023546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156115c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e5919061a128565b90506115f181886152c6565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611642573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611666919061a128565b90506116738160006152c6565b602354601f546020546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526101009092046001600160a01b0390811660048401529081166024830152600092169063dd62ed3e90604401602060405180830381865afa1580156116eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170f919061a128565b905061171c8160006152c6565b602354601f546040516370a0823160e01b81526101009091046001600160a01b03908116600483015260009216906370a0823190602401602060405180830381865afa158015611770573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611794919061a128565b90506117a18160006152c6565b50505050505050505050565b60606018805480602002602001604051908101604052809291908181526020018280548015610bd6576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610bb8575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610bd6576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610bb8575050505050905090565b6040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6ed701690000000000000000000000000000000000000000000000000000000017905260235460255493516370a0823160e01b8152620186a0946000949385936001600160a01b03908116936370a082319361190f93921691016001600160a01b0391909116815260200190565b602060405180830381865afa15801561192c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611950919061a128565b905061195d8160006152c6565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156119ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d2919061a128565b90506119df8160006152c6565b601f546040516101009091046001600160a01b03166024820152604481018690526064810185905260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260235490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391611aca916001600160a01b039190911690600090869060040161a141565b600060405180830381600087803b158015611ae457600080fd5b505af1158015611af8573d6000803e3d6000fd5b50506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015611b8a57600080fd5b505af1158015611b9e573d6000803e3d6000fd5b5050601f546040516101009091046001600160a01b031681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09250602001905060405180910390a16022546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611c7557600080fd5b505af1158015611c89573d6000803e3d6000fd5b50506020546040516001600160a01b0390911692507f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d9150611cce908990889061a169565b60405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611d2f57600080fd5b505af1158015611d43573d6000803e3d6000fd5b50506022546020546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350611d9b92909116908a9089908b9060040161a182565b600060405180830381600087803b158015611db557600080fd5b505af1158015611dc9573d6000803e3d6000fd5b50506023546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611e1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e40919061a128565b90506115f18160006152c6565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610fcd5783829060005260206000209060020201604051806040016040529081600082018054611ea490619e70565b80601f0160208091040260200160405190810160405280929190818152602001828054611ed090619e70565b8015611f1d5780601f10611ef257610100808354040283529160200191611f1d565b820191906000526020600020905b815481529060010190602001808311611f0057829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611fb757602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611f645790505b50505050508152505081526020019060010190611e71565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152620186a090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561202d57600080fd5b505af1158015612041573d6000803e3d6000fd5b50506022546040517f6f8b44b0000000000000000000000000000000000000000000000000000000008152600481018590526001600160a01b039091169250636f8b44b09150602401600060405180830381600087803b1580156120a457600080fd5b505af11580156120b8573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561211557600080fd5b505af1158015612129573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fc30436e9000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156121b257600080fd5b505af11580156121c6573d6000803e3d6000fd5b50506022546020546001600160a01b03918216935063106e62909250166121ee846001619ff7565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039092166004830152602482015260006044820152606401600060405180830381600087803b15801561225357600080fd5b505af1158015612267573d6000803e3d6000fd5b5050505050565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f19018152908290526024805463ca669fa760e01b84526001600160a01b03166004840152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa79101600060405180830381600087803b15801561230b57600080fd5b505af115801561231f573d6000803e3d6000fd5b505060248054604080516001600160a01b03909216928201929092527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448083019190915282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f0000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061240e919060040161a1bb565b600060405180830381600087803b15801561242857600080fd5b505af115801561243c573d6000803e3d6000fd5b50506022546020546040517f6f8728ad0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450636f8728ad9350612497929091169087908690889060289060040161a1ce565b600060405180830381600087803b1580156124b157600080fd5b505af11580156124c5573d6000803e3d6000fd5b50505050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610fcd57838290600052602060002001805461251190619e70565b80601f016020809104026020016040519081016040528092919081815260200182805461253d90619e70565b801561258a5780601f1061255f5761010080835404028352916020019161258a565b820191906000526020600020905b81548152906001019060200180831161256d57829003601f168201915b5050505050815260200190600101906124f2565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015610fcd5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561268157602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161262e5790505b505050505081525050815260200190600101906125c2565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a09060009060250160408051808303601f190181529082905260265463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561273457600080fd5b505af1158015612748573d6000803e3d6000fd5b50506022546040517f6f8b44b0000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b039091169250636f8b44b09150602401600060405180830381600087803b1580156127ab57600080fd5b505af11580156127bf573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561281c57600080fd5b505af1158015612830573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fc30436e9000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156128b957600080fd5b505af11580156128cd573d6000803e3d6000fd5b50506022546020546001600160a01b039182169350635e3e9fef9250166128f5856001619ff7565b846040518463ffffffff1660e01b8152600401610e5e9392919061a21a565b6022546040805160608101909152602580825261295e926001600160a01b0316919061d60f60208301396040805160208101909152600081526024546001600160a01b0316615345565b6022546023546025546040516370a0823160e01b81526001600160a01b03918216600482015292811692620186a09260009216906370a0823190602401602060405180830381865afa1580156129b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129dc919061a128565b90506129e98160006152c6565b6025546040516001600160a01b0390911660248201526044810183905260006064820181905290819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260235490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391612ad2916001600160a01b039190911690600090869060040161a141565b600060405180830381600087803b158015612aec57600080fd5b505af1158015612b00573d6000803e3d6000fd5b50506040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b0388166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015612b8e57600080fd5b505af1158015612ba2573d6000803e3d6000fd5b50506025546040518781526001600160a01b0390911692507f3e35ef4326151011878c9e8e968a0f3913fe98ca68f72a1e0c2e9be13ffb3ee9915060200160405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612c4157600080fd5b505af1158015612c55573d6000803e3d6000fd5b50506025546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810188905260448101869052908816925063106e62909150606401600060405180830381600087803b158015612cc757600080fd5b505af1158015612cdb573d6000803e3d6000fd5b50506023546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015612d2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d52919061a128565b9050610e8c81866152c6565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015610fcd5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015612e4157602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411612dee5790505b50505050508152505081526020019060010190612d82565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610fcd578382906000526020600020018054612e9c90619e70565b80601f0160208091040260200160405190810160405280929190818152602001828054612ec890619e70565b8015612f155780601f10612eea57610100808354040283529160200191612f15565b820191906000526020600020905b815481529060010190602001808311612ef857829003601f168201915b505050505081526020019060010190612e7d565b60085460009060ff1615612f41575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612fd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ff6919061a128565b1415905090565b602354602554604051620186a0602482018190526001600160a01b039384166044830152929091166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a20000000000000000000000000000000000000000000000000000000017905260248054915163ca669fa760e01b81526001600160a01b039092166004830152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa79101600060405180830381600087803b1580156130e457600080fd5b505af11580156130f8573d6000803e3d6000fd5b505060248054604080516001600160a01b03909216928201929092527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448083019190915282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f0000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506131e7919060040161a1bb565b600060405180830381600087803b15801561320157600080fd5b505af1158015613215573d6000803e3d6000fd5b50506022546020546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350612497929091169087908690889060040161a182565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152620186a090600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156132ce57600080fd5b505af11580156132e2573d6000803e3d6000fd5b5050602754604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506133cd919060040161a1bb565b600060405180830381600087803b1580156133e757600080fd5b505af11580156133fb573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561344f57600080fd5b505af1158015613463573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156134c057600080fd5b505af11580156134d4573d6000803e3d6000fd5b5050602754604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506135bf919060040161a1bb565b600060405180830381600087803b1580156135d957600080fd5b505af11580156135ed573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561364157600080fd5b505af1158015613655573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156136b257600080fd5b505af11580156136c6573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561371a57600080fd5b505af115801561372e573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd93c0665000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156137b757600080fd5b505af11580156137cb573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561382857600080fd5b505af115801561383c573d6000803e3d6000fd5b50506022546025546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101879052604481018690529116925063106e62909150606401600060405180830381600087803b1580156138b057600080fd5b505af11580156138c4573d6000803e3d6000fd5b50506024805460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063ca669fa7925001600060405180830381600087803b15801561392057600080fd5b505af1158015613934573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561398857600080fd5b505af115801561399c573d6000803e3d6000fd5b50506023546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156139ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a13919061a128565b9050613a208160006152c6565b6025546040516001600160a01b039091166024820152604481018490526064810183905260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260235490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391613b07916001600160a01b039190911690600090869060040161a141565b600060405180830381600087803b158015613b2157600080fd5b505af1158015613b35573d6000803e3d6000fd5b50506022546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015613bc757600080fd5b505af1158015613bdb573d6000803e3d6000fd5b50506025546040518781526001600160a01b0390911692507f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5915060200160405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613c7a57600080fd5b505af1158015613c8e573d6000803e3d6000fd5b50506022546025546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101899052604481018890529116925063106e629091506064015b600060405180830381600087803b158015613d0357600080fd5b505af1158015613d17573d6000803e3d6000fd5b50506023546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015613d6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d8e919061a128565b905061226781866152c6565b6023546025546040516370a0823160e01b81526001600160a01b039182166004820152620186a09260009216906370a0823190602401602060405180830381865afa158015613ded573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e11919061a128565b9050613e1e8160006152c6565b6025546040516001600160a01b0390911660248201526044810183905260006064820181905290819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260235490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391613f07916001600160a01b039190911690600090869060040161a141565b600060405180830381600087803b158015613f2157600080fd5b505af1158015613f35573d6000803e3d6000fd5b50506022546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015613fc757600080fd5b505af1158015613fdb573d6000803e3d6000fd5b50506025546040518781526001600160a01b0390911692507f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5915060200160405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561407a57600080fd5b505af115801561408e573d6000803e3d6000fd5b50506022546025546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101899052604481018790529116925063106e62909150606401613ce9565b602354602554604051620186a0602482018190526001600160a01b039384166044830152929091166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc51316910000000000000000000000000000000000000000000000000000000017905260235460255491516370a0823160e01b81526001600160a01b0392831660048201529293506000929116906370a0823190602401602060405180830381865afa1580156141cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141ef919061a128565b90506141fc8160006152c6565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801561424d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614271919061a128565b905061427e8160006152c6565b601f546040516101009091046001600160a01b03166024820152604481018690526064810185905260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260235490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391614369916001600160a01b039190911690600090869060040161a141565b600060405180830381600087803b15801561438357600080fd5b505af1158015614397573d6000803e3d6000fd5b50506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561442957600080fd5b505af115801561443d573d6000803e3d6000fd5b5050601f547f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60925061010090046001600160a01b0316905061448060028961a253565b602354602554604080516001600160a01b03958616815260208101949094529184168383015292909216606082015290519081900360800190a16022546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561454857600080fd5b505af115801561455c573d6000803e3d6000fd5b50506020546040516001600160a01b0390911692507f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d91506145a1908990889061a169565b60405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561460257600080fd5b505af1158015614616573d6000803e3d6000fd5b50506022546020546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef935061466e92909116908a9089908b9060040161a182565b600060405180830381600087803b15801561468857600080fd5b505af115801561469c573d6000803e3d6000fd5b50506023546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156146ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614713919061a128565b90506115f18161472460028a61a253565b6152c6565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f19018152908290526023546020546370a0823160e01b84526001600160a01b0390811660048501529193506000929116906370a0823190602401602060405180830381865afa1580156147bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147e3919061a128565b90506147f08160006152c6565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015614841573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614865919061a128565b601f54604080516001600160a01b036101009093048316602482015260448101899052606480820189905282518083039091018152608490910182526020810180517f1e458bee000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911617905260235491517ff30c7ba300000000000000000000000000000000000000000000000000000000815293945092737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba39261494792911690600090869060040161a141565b600060405180830381600087803b15801561496157600080fd5b505af1158015614975573d6000803e3d6000fd5b50506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015614a0757600080fd5b505af1158015614a1b573d6000803e3d6000fd5b505050507f689a5a5cb55e795ffe4cd8b419cd3bb0a3373974c54d25f64e734d7388b93e9b601f60019054906101000a90046001600160a01b03166028604051614a6692919061a28e565b60405180910390a1601f546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015614b0057600080fd5b505af1158015614b14573d6000803e3d6000fd5b50506023546020546040516001600160a01b039283169450911691507fde7603a6ed5d07c9f43597ccfe9043d15b66d3284f0de321f5cdf56329e6e03590614b62908a90899060289061a2b0565b60405180910390a36022546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015614bf857600080fd5b505af1158015614c0c573d6000803e3d6000fd5b50506020546040516001600160a01b0390911692507f5272d2fee39bff41b2e763562526315906046373ce08a7bacf76c3080d731ff09150614c54908990889060289061a2b0565b60405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614cb557600080fd5b505af1158015614cc9573d6000803e3d6000fd5b50506022546020546040517f6f8728ad0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450636f8728ad9350614d2492909116908a9089908b9060289060040161a1ce565b600060405180830381600087803b158015614d3e57600080fd5b505af1158015614d52573d6000803e3d6000fd5b50506023546020546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015614da5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614dc9919061a128565b9050614dd581886152c6565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015614e26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614e4a919061a128565b905061167381856152c6565b60606015805480602002602001604051908101604052809291908181526020018280548015610bd6576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610bb8575050505050905090565b6024805460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa79101600060405180830381600087803b158015614f0e57600080fd5b505af1158015614f22573d6000803e3d6000fd5b505060248054604080516001600160a01b03909216928201929092527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60448083019190915282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f0000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250615011919060040161a1bb565b600060405180830381600087803b15801561502b57600080fd5b505af115801561503f573d6000803e3d6000fd5b50506022546040517f6f8b44b000000000000000000000000000000000000000000000000000000000815261271060048201526001600160a01b039091169250636f8b44b09150602401600060405180830381600087803b1580156150a357600080fd5b505af1158015610b78573d6000803e3d6000fd5b6024805460405163ca669fa760e01b81526001600160a01b039091166004820152620186a091600091737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa79101600060405180830381600087803b15801561511757600080fd5b505af115801561512b573d6000803e3d6000fd5b505060248054604080516001600160a01b03909216928201929092527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448083019190915282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f0000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061521a919060040161a1bb565b600060405180830381600087803b15801561523457600080fd5b505af1158015615248573d6000803e3d6000fd5b50506022546025546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101879052604481018690529116925063106e62909150606401610e5e565b60006152b16199da565b6152bc84848361535a565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b15801561533157600080fd5b505afa158015610e8c573d6000803e3d6000fd5b61534d6199da565b61226785858584866153d5565b60008061536785846154d5565b90506153ca6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f787900000081525082866040516020016153b592919061a2db565b604051602081830303815290604052856154e1565b9150505b9392505050565b6040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201528190737109709ecfa91a80626ff3989d68f67f5b1dd12d9081906306447d5690602401600060405180830381600087803b15801561544757600080fd5b505af1925050508015615458575060015b61546d576154688787878761550f565b6124c5565b6154798787878761550f565b806001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156154b457600080fd5b505af11580156154c8573d6000803e3d6000fd5b5050505050505050505050565b60006153ce8383615528565b60c08101515160009015615505576154fe84848460c00151615543565b90506153ce565b6154fe84846156e9565b600061551b84836157d4565b90506122678582856157e0565b60006155348383615baa565b6153ce838360200151846154e1565b60008061554e615bba565b9050600061555c8683615c8d565b905060006155738260600151836020015185616133565b9050600061558383838989616345565b90506000615590826171c2565b602081015181519192509060030b15615603578982604001516040516020016155ba92919061a2fd565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526155fa9160040161a1bb565b60405180910390fd5b60006156466040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001617391565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d9061569990849060040161a1bb565b602060405180830381865afa1580156156b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906156da919061a37e565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc9259061573e90879060040161a1bb565b600060405180830381865afa15801561575b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615783919081019061a460565b905060006157b1828560405160200161579d92919061a495565b604051602081830303815290604052617591565b90506001600160a01b0381166152bc5784846040516020016155ba92919061a4c4565b600061553483836175a4565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201527fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61036024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90600090829063667f9d7090604401602060405180830381865afa15801561587c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906158a0919061a128565b905080615a475760006158b2866175b0565b604080518082018252600581527f352e302e300000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061593d905b604080518082018252600080825260209182015281518083019092528451825280850190820152906176a8565b80615949575060008451115b156159cc576040517f4f1ef2860000000000000000000000000000000000000000000000000000000081526001600160a01b03871690634f1ef28690615995908890889060040161a2db565b600060405180830381600087803b1580156159af57600080fd5b505af11580156159c3573d6000803e3d6000fd5b50505050615a41565b6040517f3659cfe60000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152871690633659cfe690602401600060405180830381600087803b158015615a2857600080fd5b505af1158015615a3c573d6000803e3d6000fd5b505050505b50612267565b806000615a53826175b0565b604080518082018252600581527f352e302e3000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615ab590615910565b80615ac1575060008551115b15615b46576040517f9623609d0000000000000000000000000000000000000000000000000000000081526001600160a01b03831690639623609d90615b0f908a908a908a9060040161a56f565b600060405180830381600087803b158015615b2957600080fd5b505af1158015615b3d573d6000803e3d6000fd5b505050506124c5565b6040517f99a88ec40000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015287811660248301528316906399a88ec490604401600060405180830381600087803b1580156154b457600080fd5b615bb6828260006176bc565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90615c4190849060040161a5a0565b600060405180830381865afa158015615c5e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615c86919081019061a5e7565b9250505090565b615cbf6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050615d0a6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b615d13856177bf565b60208201526000615d2386617ba4565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015615d65573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615d8d919081019061a5e7565b86838560200151604051602001615da7949392919061a630565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190615dff90859060040161a1bb565b600060405180830381865afa158015615e1c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615e44919081019061a5e7565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690615e8c90849060040161a734565b602060405180830381865afa158015615ea9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615ecd919061a786565b615ee257816040516020016155ba919061a7a8565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890615f2790849060040161a83a565b600060405180830381865afa158015615f44573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615f6c919081019061a5e7565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690615fb390849060040161a88c565b602060405180830381865afa158015615fd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615ff4919061a786565b15616089576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061603e90849060040161a88c565b600060405180830381865afa15801561605b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616083919081019061a5e7565b60408501525b846001600160a01b03166349c4fac88286600001516040516020016160ae919061a8de565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016160da92919061a94a565b600060405180830381865afa1580156160f7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261611f919081019061a5e7565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b606081526020019060019003908161614f5790505090506040518060400160405280600481526020017f6772657000000000000000000000000000000000000000000000000000000000815250816000815181106161af576161af61a96f565b60200260200101819052506040518060400160405280600381526020017f2d726c0000000000000000000000000000000000000000000000000000000000815250816001815181106162035761620361a96f565b60200260200101819052508460405160200161621f919061a99e565b604051602081830303815290604052816002815181106162415761624161a96f565b60200260200101819052508260405160200161625d919061aa0a565b6040516020818303038152906040528160038151811061627f5761627f61a96f565b60200260200101819052506000616295826171c2565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506163269060408051808201825260008082526020918201528151808301909252845182528085019082015290617e27565b61633b57856040516020016155ba919061aa4b565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015616395565b511590565b61650957826020015115616451576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a4016155fa565b8260c0015115616509576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a4016155fa565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161652257905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061657d9061aadc565b935060ff16815181106165925761659261a96f565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016165e3919061aafb565b6040516020818303038152906040528282806165fe9061aadc565b935060ff16815181106166135761661361a96f565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806166609061aadc565b935060ff16815181106166755761667561a96f565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806166c29061aadc565b935060ff16815181106166d7576166d761a96f565b602002602001018190525087602001518282806166f39061aadc565b935060ff16815181106167085761670861a96f565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806167559061aadc565b935060ff168151811061676a5761676a61a96f565b6020908102919091010152875182826167828161aadc565b935060ff16815181106167975761679761a96f565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806167e49061aadc565b935060ff16815181106167f9576167f961a96f565b602002602001018190525061680d46617e88565b82826168188161aadc565b935060ff168151811061682d5761682d61a96f565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c65000000000000000000000000000000000081525082828061687a9061aadc565b935060ff168151811061688f5761688f61a96f565b6020026020010181905250868282806168a79061aadc565b935060ff16815181106168bc576168bc61a96f565b60209081029190910101528551156169e35760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261690d8161aadc565b935060ff16815181106169225761692261a96f565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d9061697290899060040161a1bb565b600060405180830381865afa15801561698f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526169b7919081019061a5e7565b82826169c28161aadc565b935060ff16815181106169d7576169d761a96f565b60200260200101819052505b846020015115616ab35760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282616a2c8161aadc565b935060ff1681518110616a4157616a4161a96f565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280616a8e9061aadc565b935060ff1681518110616aa357616aa361a96f565b6020026020010181905250616c7a565b616aeb6163908660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b616b7e5760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282616b2e8161aadc565b935060ff1681518110616b4357616b4361a96f565b60200260200101819052508460a00151604051602001616b63919061a99e565b604051602081830303815290604052828280616a8e9061aadc565b8460c00151158015616bc1575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152616bbf90511590565b155b15616c7a5760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282616c058161aadc565b935060ff1681518110616c1a57616c1a61a96f565b6020026020010181905250616c2e88617f28565b604051602001616c3e919061a99e565b604051602081830303815290604052828280616c599061aadc565b935060ff1681518110616c6e57616c6e61a96f565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152616cae90511590565b616d435760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282616cf18161aadc565b935060ff1681518110616d0657616d0661a96f565b60200260200101819052508460400151828280616d229061aadc565b935060ff1681518110616d3757616d3761a96f565b60200260200101819052505b606085015115616e645760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282616d8c8161aadc565b935060ff1681518110616da157616da161a96f565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015616e10573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616e38919081019061a5e7565b8282616e438161aadc565b935060ff1681518110616e5857616e5861a96f565b60200260200101819052505b60e08501515115616f0b5760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282616eae8161aadc565b935060ff1681518110616ec357616ec361a96f565b6020026020010181905250616edf8560e0015160000151617e88565b8282616eea8161aadc565b935060ff1681518110616eff57616eff61a96f565b60200260200101819052505b60e08501516020015115616fb55760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282616f588161aadc565b935060ff1681518110616f6d57616f6d61a96f565b6020026020010181905250616f898560e0015160200151617e88565b8282616f948161aadc565b935060ff1681518110616fa957616fa961a96f565b60200260200101819052505b60e0850151604001511561705f5760408051808201909152600e81527f2d2d6d6178466565506572476173000000000000000000000000000000000000602082015282826170028161aadc565b935060ff16815181106170175761701761a96f565b60200260200101819052506170338560e0015160400151617e88565b828261703e8161aadc565b935060ff16815181106170535761705361a96f565b60200260200101819052505b60e085015160600151156171095760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826170ac8161aadc565b935060ff16815181106170c1576170c161a96f565b60200260200101819052506170dd8560e0015160600151617e88565b82826170e88161aadc565b935060ff16815181106170fd576170fd61a96f565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561712757617127619e41565b60405190808252806020026020018201604052801561715a57816020015b60608152602001906001900390816171455790505b50905060005b8260ff168160ff1610156171b357838160ff16815181106171835761718361a96f565b6020026020010151828260ff16815181106171a0576171a061a96f565b6020908102919091010152600101617160565b5093505050505b949350505050565b6171e96040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c9161726f9186910161ab66565b600060405180830381865afa15801561728c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526172b4919081019061a5e7565b905060006172c28683618a17565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b81526004016172f29190619d33565b6000604051808303816000875af1158015617311573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617339919081019061abad565b805190915060030b158015906173525750602081015151155b80156173615750604081015151155b1561633b57816000815181106173795761737961a96f565b60200260200101516040516020016155ba919061ac63565b606060006173c68560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506173fd9082905b90618b6c565b1561755a57600061747a826174748461746e6174408a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90618b93565b90618bf5565b604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506174de908290618b6c565b1561754857604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617545905b8290618c7a565b90505b61755181618ca0565b925050506153ce565b82156175735784846040516020016155ba92919061ae4f565b50506040805160208101909152600081526153ce565b509392505050565b6000808251602084016000f09392505050565b615bb6828260016176bc565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fad3cb1cc00000000000000000000000000000000000000000000000000000000179052905160609160009182916001600160a01b03861691617625919061aef6565b600060405180830381855afa9150503d8060008114617660576040519150601f19603f3d011682016040523d82523d6000602084013e617665565b606091505b5091509150818015617678575060208151115b1561769157808060200190518101906171ba919061a5e7565b505060408051602081019091526000815292915050565b60006176b48383618d09565b159392505050565b8160a00151156176cb57505050565b60006176d8848484618de4565b905060006176e5826171c2565b602081015181519192509060030b1580156177815750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617781906040805180820182526000808252602091820152815180830190925284518252808501908201526173f7565b1561778e57505050505050565b604082015151156177ae5781604001516040516020016155ba919061af12565b806040516020016155ba919061af70565b606060006177f48360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150617859905b8290617e27565b156178c857604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526153ce906178c390839061937f565b618ca0565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261792a905b8290619409565b6001036179f757604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526179909061753e565b50604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526153ce906178c3905b8390618c7a565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617a5690617852565b15617b8d57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290617abe9083906194a3565b905060008160018351617ad1919061afdb565b81518110617ae157617ae161a96f565b60200260200101519050617b846178c3617b576040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529061937f565b95945050505050565b826040516020016155ba919061afee565b50919050565b60606000617bd98360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150617c3b90617852565b15617c49576153ce81618ca0565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617ca890617923565b600103617d1257604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526153ce906178c3906179f0565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617d7190617852565b15617b8d57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290617dd99083906194a3565b9050600181511115617e15578060028251617df4919061afdb565b81518110617e0457617e0461a96f565b602002602001015192505050919050565b50826040516020016155ba919061afee565b805182516000911115617e3c575060006152c0565b81518351602085015160009291617e5291619ff7565b617e5c919061afdb565b905082602001518103617e735760019150506152c0565b82516020840151819020912014905092915050565b60606000617e9583619548565b600101905060008167ffffffffffffffff811115617eb557617eb5619e41565b6040519080825280601f01601f191660200182016040528015617edf576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084617ee957509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091617fb4905b82906176a8565b15617ff457505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261805390617fad565b1561809357505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d49540000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526180f290617fad565b1561813257505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261819190617fad565b806181f65750604080518082018252601081527f47504c2d322e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526181f690617fad565b1561823657505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261829590617fad565b806182fa5750604080518082018252601081527f47504c2d332e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526182fa90617fad565b1561833a57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261839990617fad565b806183fe5750604080518082018252601181527f4c47504c2d322e312d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526183fe90617fad565b1561843e57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261849d90617fad565b806185025750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261850290617fad565b1561854257505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526185a190617fad565b156185e157505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261864090617fad565b1561868057505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526186df90617fad565b1561871f57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261877e90617fad565b156187be57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261881d90617fad565b1561885d57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526188bc90617fad565b806189215750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261892190617fad565b1561896157505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e31000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526189c090617fad565b15618a0057505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b604080840151845191516155ba929060200161b0cc565b60608060005b8451811015618aa25781858281518110618a3957618a3961a96f565b6020026020010151604051602001618a5292919061a495565b604051602081830303815290604052915060018551618a71919061afdb565b8114618a9a5781604051602001618a88919061b235565b60405160208183030381529060405291505b600101618a1d565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081618abb5790505090508381600081518110618ae657618ae661a96f565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110618b3a57618b3a61a96f565b60200260200101819052508181600281518110618b5957618b5961a96f565b6020908102919091010152949350505050565b6020808301518351835192840151600093618b8a929184919061962a565b14159392505050565b60408051808201909152600080825260208201526000618bc5846000015185602001518560000151866020015161973b565b9050836020015181618bd7919061afdb565b84518590618be690839061afdb565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015618c1a5750816152c0565b6020808301519084015160019114618c415750815160208481015190840151829020919020145b8015618c7257825184518590618c5890839061afdb565b9052508251602085018051618c6e908390619ff7565b9052505b509192915050565b6040805180820190915260008082526020820152618c9983838361985b565b5092915050565b60606000826000015167ffffffffffffffff811115618cc157618cc1619e41565b6040519080825280601f01601f191660200182016040528015618ceb576020820181803683370190505b5090506000602082019050618c998185602001518660000151619906565b8151815160009190811115618d1c575081515b6020808501519084015160005b83811015618dd55782518251808214618da5576000196020871015618d8457600184618d5689602061afdb565b618d609190619ff7565b618d6b90600861b276565b618d7690600261b374565b618d80919061afdb565b1990505b8181168382168181039114618da25797506152c09650505050505050565b50505b618db0602086619ff7565b9450618dbd602085619ff7565b93505050602081618dce9190619ff7565b9050618d29565b508451865161633b919061b380565b60606000618df0615bba565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081618e0d57905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280618e689061aadc565b935060ff1681518110618e7d57618e7d61a96f565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001618ece919061b3a0565b604051602081830303815290604052828280618ee99061aadc565b935060ff1681518110618efe57618efe61a96f565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280618f4b9061aadc565b935060ff1681518110618f6057618f6061a96f565b602002602001018190525082604051602001618f7c919061aa0a565b604051602081830303815290604052828280618f979061aadc565b935060ff1681518110618fac57618fac61a96f565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280618ff99061aadc565b935060ff168151811061900e5761900e61a96f565b60200260200101819052506190238784619980565b828261902e8161aadc565b935060ff16815181106190435761904361a96f565b6020908102919091010152855151156190ef5760408051808201909152600b81527f2d2d7265666572656e6365000000000000000000000000000000000000000000602082015282826190958161aadc565b935060ff16815181106190aa576190aa61a96f565b60200260200101819052506190c3866000015184619980565b82826190ce8161aadc565b935060ff16815181106190e3576190e361a96f565b60200260200101819052505b85608001511561915d5760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b0000000000000000602082015282826191388161aadc565b935060ff168151811061914d5761914d61a96f565b60200260200101819052506191c3565b84156191c35760408051808201909152601281527f2d2d726571756972655265666572656e63650000000000000000000000000000602082015282826191a28161aadc565b935060ff16815181106191b7576191b761a96f565b60200260200101819052505b6040860151511561925f5760408051808201909152600d81527f2d2d756e73616665416c6c6f77000000000000000000000000000000000000006020820152828261920d8161aadc565b935060ff16815181106192225761922261a96f565b6020026020010181905250856040015182828061923e9061aadc565b935060ff16815181106192535761925361a96f565b60200260200101819052505b8560600151156192c95760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d6573000000000000000000000000602082015282826192a88161aadc565b935060ff16815181106192bd576192bd61a96f565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156192e7576192e7619e41565b60405190808252806020026020018201604052801561931a57816020015b60608152602001906001900390816193055790505b50905060005b8260ff168160ff16101561937357838160ff16815181106193435761934361a96f565b6020026020010151828260ff16815181106193605761936061a96f565b6020908102919091010152600101619320565b50979650505050505050565b60408051808201909152600080825260208201528151835110156193a45750816152c0565b815183516020850151600092916193ba91619ff7565b6193c4919061afdb565b602084015190915060019082146193e5575082516020840151819020908220145b8015619400578351855186906193fc90839061afdb565b9052505b50929392505050565b600080826000015161942d856000015186602001518660000151876020015161973b565b6194379190619ff7565b90505b8351602085015161944b9190619ff7565b8111618c99578161945b8161b3e5565b9250508260000151619492856020015183619476919061afdb565b8651619482919061afdb565b838660000151876020015161973b565b61949c9190619ff7565b905061943a565b606060006194b18484619409565b6194bc906001619ff7565b67ffffffffffffffff8111156194d4576194d4619e41565b60405190808252806020026020018201604052801561950757816020015b60608152602001906001900390816194f25790505b50905060005b8151811015617589576195236178c38686618c7a565b8282815181106195355761953561a96f565b602090810291909101015260010161950d565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310619591577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106195bd576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106195db57662386f26fc10000830492506010015b6305f5e10083106195f3576305f5e100830492506008015b612710831061960757612710830492506004015b60648310619619576064830492506002015b600a83106152c05760010192915050565b60008085841161973157602084116196dd576000841561967557600161965186602061afdb565b61965c90600861b276565b61966790600261b374565b619671919061afdb565b1990505b83518116856196848989619ff7565b61968e919061afdb565b805190935082165b8181146196c8578784116196b057879450505050506171ba565b836196ba8161b3ff565b945050828451169050619696565b6196d28785619ff7565b9450505050506171ba565b8383206196ea858861afdb565b6196f49087619ff7565b91505b85821061972f5784822080820361971c576197128684619ff7565b93505050506171ba565b61972760018461afdb565b9250506196f7565b505b5092949350505050565b6000838186851161984657602085116197f5576000851561978757600161976387602061afdb565b61976e90600861b276565b61977990600261b374565b619783919061afdb565b1990505b845181166000876197988b8b619ff7565b6197a2919061afdb565b855190915083165b8281146197e7578186106197cf576197c28b8b619ff7565b96505050505050506171ba565b856197d98161b3e5565b9650508386511690506197aa565b8596505050505050506171ba565b508383206000905b619807868961afdb565b82116198445785832080820361982357839450505050506171ba565b61982e600185619ff7565b935050818061983c9061b3e5565b9250506197fd565b505b6198508787619ff7565b979650505050505050565b6040805180820190915260008082526020820152600061988d856000015186602001518660000151876020015161973b565b6020808701805191860191909152519091506198a9908261afdb565b8352845160208601516198bc9190619ff7565b81036198cb57600085526198fd565b835183516198d99190619ff7565b855186906198e890839061afdb565b90525083516198f79082619ff7565b60208601525b50909392505050565b6020811061993e578151835261991d602084619ff7565b925061992a602083619ff7565b915061993760208261afdb565b9050619906565b600019811561996d57600161995483602061afdb565b6199609061010061b374565b61996a919061afdb565b90505b9151835183169219169190911790915250565b6060600061998e8484615c8d565b80516020808301516040519394506199a89390910161b416565b60405160208183030381529060405291505092915050565b6112a68061b46f83390190565b610efa8061c71583390190565b6040518060e00160405280606081526020016060815260200160608152602001600015158152602001600015158152602001600015158152602001619a1d619a22565b905290565b60405180610100016040528060001515815260200160001515815260200160608152602001600080191681526020016060815260200160608152602001600015158152602001619a1d6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b81811015619ad45783516001600160a01b0316835260209384019390920191600101619aad565b509095945050505050565b60005b83811015619afa578181015183820152602001619ae2565b50506000910152565b60008151808452619b1b816020860160208601619adf565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015619c2b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015619c11577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352619bfb848651619b03565b6020958601959094509290920191600101619bc1565b509197505050602094850194929092019150600101619b57565b50929695505050505050565b600081518084526020840193506020830160005b82811015619c8b5781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101619c4b565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015619c2b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752619d016040880182619b03565b9050602082015191508681036020880152619d1c8183619c37565b965050506020938401939190910190600101619cbd565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015619c2b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452619d95858351619b03565b94506020938401939190910190600101619d5b565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015619c2b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152619e2b6040870182619c37565b9550506020938401939190910190600101619dd2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600181811c90821680619e8457607f821691505b602082108103617b9e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b601f821115619f0457806000526020600020601f840160051c81016020851015619ee45750805b601f840160051c820191505b818110156122675760008155600101619ef0565b505050565b815167ffffffffffffffff811115619f2357619f23619e41565b619f3781619f318454619e70565b84619ebd565b6020601f821160018114619f6b5760008315619f535750848201515b600019600385901b1c1916600184901b178455612267565b600084815260208120601f198516915b82811015619f9b5787850151825560209485019460019092019101619f7b565b5084821015619fb95786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156152c0576152c0619fc8565b6001600160a01b0381541682526001600160a01b03600182015416602083015260028101546040830152600060038201608060608501526000815461a04e81619e70565b806080880152600182166000811461a06d576001811461a0a75761a0db565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831660a089015260a082151560051b890101935061a0db565b84600052602060002060005b8381101561a0d25781548a820160a0015260019091019060200161a0b3565b890160a0019450505b50919695505050505050565b6001600160a01b038516815283602082015260a06040820152600061a10f60a0830185619b03565b600060608401528281036080840152619850818561a00a565b60006020828403121561a13a57600080fd5b5051919050565b6001600160a01b0384168152826020820152606060408201526000617b846060830184619b03565b8281526040602082015260006171ba6040830184619b03565b6001600160a01b038516815283602082015260806040820152600061a1aa6080830185619b03565b905082606083015295945050505050565b6020815260006153ce6020830184619b03565b6001600160a01b038616815284602082015260a06040820152600061a1f660a0830186619b03565b846060840152828103608084015261a20e818561a00a565b98975050505050505050565b6001600160a01b038416815282602082015260806040820152600061a2426080830184619b03565b905060006060830152949350505050565b60008261a289577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6001600160a01b03831681526040602082015260006171ba604083018461a00a565b83815260606020820152600061a2c96060830185619b03565b828103604084015261633b818561a00a565b6001600160a01b03831681526040602082015260006171ba6040830184619b03565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161a33581601a850160208801619adf565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161a37281601c840160208801619adf565b01601c01949350505050565b60006020828403121561a39057600080fd5b81516001600160a01b03811681146153ce57600080fd5b6040516060810167ffffffffffffffff8111828210171561a3ca5761a3ca619e41565b60405290565b60008067ffffffffffffffff84111561a3eb5761a3eb619e41565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561a41a5761a41a619e41565b60405283815290508082840185101561a43257600080fd5b617589846020830185619adf565b600082601f83011261a45157600080fd5b6153ce8383516020850161a3d0565b60006020828403121561a47257600080fd5b815167ffffffffffffffff81111561a48957600080fd5b6152bc8482850161a440565b6000835161a4a7818460208801619adf565b83519083019061a4bb818360208801619adf565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161a4fc81601a850160208801619adf565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161a539816033840160208801619adf565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b6001600160a01b03841681526001600160a01b0383166020820152606060408201526000617b846060830184619b03565b60408152600b60408201527f464f554e4452595f4f555400000000000000000000000000000000000000000060608201526080602082015260006153ce6080830184619b03565b60006020828403121561a5f957600080fd5b815167ffffffffffffffff81111561a61057600080fd5b8201601f8101841361a62157600080fd5b6152bc8482516020840161a3d0565b6000855161a642818460208a01619adf565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161a67c816001840160208a01619adf565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161a6ba816002840160208901619adf565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161a6fc816002840160208801619adf565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061a7476040830184619b03565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b60006020828403121561a79857600080fd5b815180151581146153ce57600080fd5b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161a7e081601f850160208701619adf565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061a84d6040830184619b03565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061a89f6040830184619b03565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161a916816014850160208701619adf565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061a95d6040830185619b03565b82810360208401526153ca8185619b03565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161a9d6816001850160208701619adf565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161aa1c818460208701619adf565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161aacf81604b850160208701619adf565b91909101604b0192915050565b600060ff821660ff810361aaf25761aaf2619fc8565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161ab59816029850160208701619adf565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f504154480000000000000000000060608201526080602082015260006153ce6080830184619b03565b60006020828403121561abbf57600080fd5b815167ffffffffffffffff81111561abd657600080fd5b82016060818503121561abe857600080fd5b61abf061a3a7565b81518060030b811461ac0157600080fd5b8152602082015167ffffffffffffffff81111561ac1d57600080fd5b61ac298682850161a440565b602083015250604082015167ffffffffffffffff81111561ac4957600080fd5b61ac558682850161a440565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161acc1816021850160208701619adf565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161aead816021850160208801619adf565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161aeea81602e840160208801619adf565b01602e01949350505050565b6000825161af08818460208701619adf565b9190910192915050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161ab59816029850160208701619adf565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161afce816022850160208701619adf565b9190910160220192915050565b818103818111156152c0576152c0619fc8565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161b02681600e850160208701619adf565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161b104816018850160208801619adf565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161b14181601c840160208801619adf565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161b247818460208701619adf565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b80820281158282048414176152c0576152c0619fc8565b6001815b600184111561b2c85780850481111561b2ac5761b2ac619fc8565b600184161561b2ba57908102905b60019390931c92800261b291565b935093915050565b60008261b2df575060016152c0565b8161b2ec575060006152c0565b816001811461b302576002811461b30c5761b328565b60019150506152c0565b60ff84111561b31d5761b31d619fc8565b50506001821b6152c0565b5060208310610133831016604e8410600b841016171561b34b575081810a6152c0565b61b358600019848461b28d565b806000190482111561b36c5761b36c619fc8565b029392505050565b60006153ce838361b2d0565b8181036000831280158383131683831282161715618c9957618c99619fc8565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161b3d881601c850160208701619adf565b91909101601c0192915050565b6000600019820361b3f85761b3f8619fc8565b5060010190565b60008161b40e5761b40e619fc8565b506000190190565b6000835161b428818460208801619adf565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161b462816001840160208801619adf565b0160010194935050505056fe608060405234801561001057600080fd5b506040516112a63803806112a683398101604081905261002f91610110565b604051806040016040528060048152602001635a65746160e01b815250604051806040016040528060048152602001635a45544160e01b815250816003908161007891906101e2565b50600461008582826101e2565b5050506001600160a01b03821615806100a557506001600160a01b038116155b156100c35760405163e6c4247b60e01b815260040160405180910390fd5b600680546001600160a01b039384166001600160a01b031991821617909155600780549290931691161790556102a0565b80516001600160a01b038116811461010b57600080fd5b919050565b6000806040838503121561012357600080fd5b61012c836100f4565b915061013a602084016100f4565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061016d57607f821691505b60208210810361018d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101dd57806000526020600020601f840160051c810160208510156101ba5750805b601f840160051c820191505b818110156101da57600081556001016101c6565b50505b505050565b81516001600160401b038111156101fb576101fb610143565b61020f816102098454610159565b84610193565b6020601f821160018114610243576000831561022b5750848201515b600019600385901b1c1916600184901b1784556101da565b600084815260208120601f198516915b828110156102735787850151825560209485019460019092019101610253565b50848210156102915786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610ff7806102af6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806342966c68116100b257806379cc679011610081578063a9059cbb11610066578063a9059cbb1461028e578063bff9662a146102a1578063dd62ed3e146102c157600080fd5b806379cc67901461027357806395d89b411461028657600080fd5b806342966c68146102025780635b1125911461021557806370a0823114610235578063779e3b631461026b57600080fd5b80631e458bee116100ee5780631e458bee1461018857806323b872dd1461019b578063313ce567146101ae578063328a01d0146101bd57600080fd5b806306fdde0314610120578063095ea7b31461013e57806315d57fd41461016157806318160ddd14610176575b600080fd5b610128610307565b6040516101359190610d97565b60405180910390f35b61015161014c366004610e2c565b610399565b6040519015158152602001610135565b61017461016f366004610e56565b6103b3565b005b6002545b604051908152602001610135565b610174610196366004610e89565b61057e565b6101516101a9366004610ebc565b610631565b60405160128152602001610135565b6007546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610135565b610174610210366004610ef9565b610655565b6006546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a610243366004610f12565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b610174610662565b610174610281366004610e2c565b610786565b610128610837565b61015161029c366004610e2c565b610846565b6005546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a6102cf366004610e56565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461031690610f34565b80601f016020809104026020016040519081016040528092919081815260200182805461034290610f34565b801561038f5780601f106103645761010080835404028352916020019161038f565b820191906000526020600020905b81548152906001019060200180831161037257829003601f168201915b5050505050905090565b6000336103a7818585610854565b60019150505b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff1633148015906103f3575060065473ffffffffffffffffffffffffffffffffffffffff163314155b15610431576040517fcdfcef970000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82161580610468575073ffffffffffffffffffffffffffffffffffffffff8116155b1561049f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006805473ffffffffffffffffffffffffffffffffffffffff8481167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316811790935560058054918516919092161790556040805133815260208101929092527fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff910160405180910390a16040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f1b9352454524a57a51f24f67dc66d898f616922cd1f7a12d73570ece12b1975c910160405180910390a15050565b60055473ffffffffffffffffffffffffffffffffffffffff1633146105d1576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6105db8383610866565b808373ffffffffffffffffffffffffffffffffffffffff167fc263b302aec62d29105026245f19e16f8e0137066ccd4a8bd941f716bd4096bb8460405161062491815260200190565b60405180910390a3505050565b60003361063f8582856108c6565b61064a858585610995565b506001949350505050565b61065f3382610a40565b50565b60075473ffffffffffffffffffffffffffffffffffffffff1633146106b5576040517fe700765e000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b60065473ffffffffffffffffffffffffffffffffffffffff16610704576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0910160405180910390a1565b60055473ffffffffffffffffffffffffffffffffffffffff1633146107d9576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6107e38282610a9c565b8173ffffffffffffffffffffffffffffffffffffffff167f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b18260405161082b91815260200190565b60405180910390a25050565b60606004805461031690610f34565b6000336103a7818585610995565b6108618383836001610ab1565b505050565b73ffffffffffffffffffffffffffffffffffffffff82166108b6576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c260008383610bf9565b5050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461098f5781811015610980576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401610428565b61098f84848484036000610ab1565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166109e5576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8216610a35576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b610861838383610bf9565b73ffffffffffffffffffffffffffffffffffffffff8216610a90576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c282600083610bf9565b610aa78233836108c6565b6108c28282610a40565b73ffffffffffffffffffffffffffffffffffffffff8416610b01576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8316610b51576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160209081526040808320938716835292905220829055801561098f578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610beb91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8316610c31578060026000828254610c269190610f87565b90915550610ce39050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610cb7576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810182905260448101839052606401610428565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff8216610d0c57600280548290039055610d38565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161062491815260200190565b602081526000825180602084015260005b81811015610dc55760208186018101516040868401015201610da8565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e2757600080fd5b919050565b60008060408385031215610e3f57600080fd5b610e4883610e03565b946020939093013593505050565b60008060408385031215610e6957600080fd5b610e7283610e03565b9150610e8060208401610e03565b90509250929050565b600080600060608486031215610e9e57600080fd5b610ea784610e03565b95602085013595506040909401359392505050565b600080600060608486031215610ed157600080fd5b610eda84610e03565b9250610ee860208501610e03565b929592945050506040919091013590565b600060208284031215610f0b57600080fd5b5035919050565b600060208284031215610f2457600080fd5b610f2d82610e03565b9392505050565b600181811c90821680610f4857607f821691505b602082108103610f81577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156103ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea264697066735822122001ec0ce060384773f3d3389fab7bed652c6b8ee389a7471cce10d00d87a75a0c64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610ed6806100246000396000f3fe60806040526004361061006e5760003560e01c8063c51316911161004b578063c5131691146100d5578063c9028a36146100f5578063e04d4f9714610115578063f05b6abf1461012857005b8063357fc5a214610077578063676cc054146100975780636ed70169146100c057005b3661007557005b005b34801561008357600080fd5b50610075610092366004610724565b610148565b6100aa6100a5366004610760565b6101de565b6040516100b7919061085b565b60405180910390f35b3480156100cc57600080fd5b50610075610211565b3480156100e157600080fd5b506100756100f0366004610724565b610246565b34801561010157600080fd5b5061007561011036600461086e565b610321565b6100756101233660046109ce565b61035d565b34801561013457600080fd5b50610075610143366004610aba565b6103a1565b6101506103d6565b61017273ffffffffffffffffffffffffffffffffffffffff8316338386610419565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101d96001600055565b505050565b6040516060907f3658b46bab672c7672b69c2f0feda706eabdb7d2231421c96e9049b2db5e7eee90600090a19392505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b61024e6103d6565b600061025b600285610ba4565b905080600003610297576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102b973ffffffffffffffffffffffffffffffffffffffff8416338484610419565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101d96001600055565b7f689a5a5cb55e795ffe4cd8b419cd3bb0a3373974c54d25f64e734d7388b93e9b3382604051610352929190610c28565b60405180910390a150565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610394959493929190610d1a565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103949493929190610da4565b600260005403610412576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526104ae9085906104b4565b50505050565b60006104d673ffffffffffffffffffffffffffffffffffffffff84168361054f565b905080516000141580156104fb5750808060200190518101906104f99190610e67565b155b156101d9576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061055d83836000610564565b9392505050565b6060814710156105a2576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610546565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105cb9190610e84565b60006040518083038185875af1925050503d8060008114610608576040519150601f19603f3d011682016040523d82523d6000602084013e61060d565b606091505b509150915061061d868383610627565b9695505050505050565b60608261063c57610637826106b6565b61055d565b8151158015610660575073ffffffffffffffffffffffffffffffffffffffff84163b155b156106af576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610546565b508061055d565b8051156106c65780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff8116811461071f57600080fd5b919050565b60008060006060848603121561073957600080fd5b83359250610749602085016106fb565b9150610757604085016106fb565b90509250925092565b6000806000838503604081121561077657600080fd5b602081121561078457600080fd5b50839250602084013567ffffffffffffffff8111156107a257600080fd5b8401601f810186136107b357600080fd5b803567ffffffffffffffff8111156107ca57600080fd5b8660208284010111156107dc57600080fd5b939660209190910195509293505050565b60005b838110156108085781810151838201526020016107f0565b50506000910152565b600081518084526108298160208601602086016107ed565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061055d6020830184610811565b60006020828403121561088057600080fd5b813567ffffffffffffffff81111561089757600080fd5b82016080818503121561055d57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561091f5761091f6108a9565b604052919050565b600082601f83011261093857600080fd5b813567ffffffffffffffff811115610952576109526108a9565b61098360207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016108d8565b81815284602083860101111561099857600080fd5b816020850160208301376000918101602001919091529392505050565b80151581146106f857600080fd5b803561071f816109b5565b6000806000606084860312156109e357600080fd5b833567ffffffffffffffff8111156109fa57600080fd5b610a0686828701610927565b935050602084013591506040840135610a1e816109b5565b809150509250925092565b600067ffffffffffffffff821115610a4357610a436108a9565b5060051b60200190565b600082601f830112610a5e57600080fd5b8135610a71610a6c82610a29565b6108d8565b8082825260208201915060208360051b860101925085831115610a9357600080fd5b602085015b83811015610ab0578035835260209283019201610a98565b5095945050505050565b600080600060608486031215610acf57600080fd5b833567ffffffffffffffff811115610ae657600080fd5b8401601f81018613610af757600080fd5b8035610b05610a6c82610a29565b8082825260208201915060208360051b850101925088831115610b2757600080fd5b602084015b83811015610b6957803567ffffffffffffffff811115610b4b57600080fd5b610b5a8b602083890101610927565b84525060209283019201610b2c565b509550505050602084013567ffffffffffffffff811115610b8957600080fd5b610b9586828701610a4d565b925050610757604085016109c3565b600082610bda577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015273ffffffffffffffffffffffffffffffffffffffff610c66836106fb565b16604082015273ffffffffffffffffffffffffffffffffffffffff610c8d602084016106fb565b166060820152600080604084013590508060808401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610cd957600080fd5b830160208101903567ffffffffffffffff811115610cf657600080fd5b803603821315610d0557600080fd5b608060a085015261061d60c085018284610bdf565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610d4f60a0830186610811565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610d9a578151865260209586019590910190600101610d7c565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610e37577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610e22858351610811565b94506020938401939190910190600101610de8565b505050508281036040840152610e4d8186610d68565b915050610e5e606083018415159052565b95945050505050565b600060208284031215610e7957600080fd5b815161055d816109b5565b60008251610e968184602087016107ed565b919091019291505056fea2646970667358221220db940ec4fecaa3b11f71d6cf6ef0ac3141552c5e39d750c1e2295a761a9396ad64736f6c634300081a00335a657461436f6e6e6563746f724e6f6e4e617469766555706772616465546573742e736f6ca2646970667358221220b301b6fa2be0563220edb7d637906b404fc45b351f057b67cd173372deba73ad64736f6c634300081a0033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061d6318061003c6000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c8063aaf7419211610104578063d509b16c116100a2578063e63ab1e911610071578063e63ab1e914610357578063fa7626d41461037e578063fdca90521461038b578063fe574f841461039357600080fd5b8063d509b16c14610337578063dcf7d0371461033f578063de1cb76c14610347578063e20c9f711461034f57600080fd5b8063b5508aa9116100de578063b5508aa914610307578063ba414fa61461030f578063c190997214610327578063ccb0e3f21461032f57600080fd5b8063aaf74192146102ef578063af298bb1146102f7578063b0464fdc146102ff57600080fd5b8063493465581161017c57806385226c811161014b57806385226c811461026957806385f438c11461027e578063916a17c6146102b3578063a783c789146102c857600080fd5b8063493465581461023c57806366d9a9a0146102445780637db20efb14610259578063828320141461026157600080fd5b80632ade3880116101b85780632ade38801461020f5780633cba0107146102245780633e5e3c231461022c5780633f7286f41461023457600080fd5b80630a9254e4146101df5780631ed7831c146101e95780632506ef0314610207575b600080fd5b6101e761039b565b005b6101f1610b7e565b6040516101fe9190619a93565b60405180910390f35b6101e7610be0565b610217610e94565b6040516101fe9190619b2f565b6101e7610fd6565b6101f16117ad565b6101f161180d565b6101e761186d565b61024c611e4d565b6040516101fe9190619c95565b6101e7611fcf565b6101e761226e565b6102716124ce565b6040516101fe9190619d33565b6102a57f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6040519081526020016101fe565b6102bb61259e565b6040516101fe9190619daa565b6102a57f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b6101e7612699565b6101e7612914565b6102bb612d5e565b610271612e59565b610317612f29565b60405190151581526020016101fe565b6101e7612ffd565b6101e761326d565b6101e7613d9a565b6101e76140ed565b6101e7614729565b6101f1614e56565b6102a57f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b601f546103179060ff1681565b6101e7614eb6565b6101e76150b7565b602480547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602580548216611234179055602680548216615678908117909155602780549092166198761790915560405181906103ff906199c0565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015610432573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600e81527f4761746577617945564d2e736f6c000000000000000000000000000000000000602082015260265460248054935191861690820152604481019390935292166064820152600091610524916084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc0c53b8b000000000000000000000000000000000000000000000000000000001790526152a7565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0384811682029290921792839055604080518082018252601081527f4552433230437573746f64792e736f6c00000000000000000000000000000000602082015260265460248054935194909604851695840195909552938316604483015290911660648201529192506105ca916084016104c7565b602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383811691909117909155604080518082018252601a81527f5a657461436f6e6e6563746f724e6f6e4e61746976652e736f6c0000000000006020820152601f546023546026546024805495516101009094048716908401529085166044830152841660648201529190921660848201529192506106cf9160a40160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff8c8765e000000000000000000000000000000000000000000000000000000001790526152a7565b602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038381169190911790915560265460405163ca669fa760e01b815291166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561075a57600080fd5b505af115801561076e573d6000803e3d6000fd5b50506023546026546022546040517f15d57fd40000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082166024820152911692506315d57fd49150604401600060405180830381600087803b1580156107df57600080fd5b505af11580156107f3573d6000803e3d6000fd5b50505050604051610803906199cd565b604051809103906000f08015801561081f573d6000803e3d6000fd5b50602080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556026546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b1580156108cb57600080fd5b505af11580156108df573d6000803e3d6000fd5b5050602480546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d93506306447d56925001600060405180830381600087803b15801561095457600080fd5b505af1158015610968573d6000803e3d6000fd5b5050601f546021546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261010090920416925063ae7a3a6f9150602401600060405180830381600087803b1580156109d357600080fd5b505af11580156109e7573d6000803e3d6000fd5b5050601f546022546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526101009092041692506310188aef9150602401600060405180830381600087803b158015610a5257600080fd5b505af1158015610a66573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610ac857600080fd5b505af1158015610adc573d6000803e3d6000fd5b5050604080516080810182526024546001600160a01b039081168252602354811660208084019182526001848601908152855191820190955260008152606084018190528351602880549185167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316178155925160298054919095169116179092559251602a55909350909150602b90610b789082619f09565b50505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610bd657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610bb8575b5050505050905090565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a09060009060250160408051808303601f190181529082905260265463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015610c7b57600080fd5b505af1158015610c8f573d6000803e3d6000fd5b50506022546040517f6f8b44b0000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b039091169250636f8b44b09150602401600060405180830381600087803b158015610cf257600080fd5b505af1158015610d06573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015610d6357600080fd5b505af1158015610d77573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fc30436e9000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015610e0057600080fd5b505af1158015610e14573d6000803e3d6000fd5b50506022546020546001600160a01b039182169350636f8728ad925016610e3c856001619ff7565b8460286040518563ffffffff1660e01b8152600401610e5e949392919061a0e7565b600060405180830381600087803b158015610e7857600080fd5b505af1158015610e8c573d6000803e3d6000fd5b505050505050565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015610fcd57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610fb6578382906000526020600020018054610f2990619e70565b80601f0160208091040260200160405190810160405280929190818152602001828054610f5590619e70565b8015610fa25780601f10610f7757610100808354040283529160200191610fa2565b820191906000526020600020905b815481529060010190602001808311610f8557829003601f168201915b505050505081526020019060010190610f0a565b505050508152505081526020019060010190610eb8565b50505050905090565b602354602554604051620186a0602482018190526001600160a01b039384166044830152929091166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a20000000000000000000000000000000000000000000000000000000017905260235460255491516370a0823160e01b81526001600160a01b0392831660048201529293506000929116906370a0823190602401602060405180830381865afa1580156110b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d8919061a128565b90506110e58160006152c6565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611136573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115a919061a128565b90506111678160006152c6565b601f546040516101009091046001600160a01b03166024820152604481018690526064810185905260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260235490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391611252916001600160a01b039190911690600090869060040161a141565b600060405180830381600087803b15801561126c57600080fd5b505af1158015611280573d6000803e3d6000fd5b50506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561131257600080fd5b505af1158015611326573d6000803e3d6000fd5b5050601f54602354602554604080516101009094046001600160a01b039081168552602085018d9052928316908401521660608201527f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609250608001905060405180910390a16022546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561141a57600080fd5b505af115801561142e573d6000803e3d6000fd5b50506020546040516001600160a01b0390911692507f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d9150611473908990889061a169565b60405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156114d457600080fd5b505af11580156114e8573d6000803e3d6000fd5b50506022546020546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef935061154092909116908a9089908b9060040161a182565b600060405180830381600087803b15801561155a57600080fd5b505af115801561156e573d6000803e3d6000fd5b50506023546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156115c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e5919061a128565b90506115f181886152c6565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611642573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611666919061a128565b90506116738160006152c6565b602354601f546020546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526101009092046001600160a01b0390811660048401529081166024830152600092169063dd62ed3e90604401602060405180830381865afa1580156116eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170f919061a128565b905061171c8160006152c6565b602354601f546040516370a0823160e01b81526101009091046001600160a01b03908116600483015260009216906370a0823190602401602060405180830381865afa158015611770573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611794919061a128565b90506117a18160006152c6565b50505050505050505050565b60606018805480602002602001604051908101604052809291908181526020018280548015610bd6576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610bb8575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610bd6576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610bb8575050505050905090565b6040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6ed701690000000000000000000000000000000000000000000000000000000017905260235460255493516370a0823160e01b8152620186a0946000949385936001600160a01b03908116936370a082319361190f93921691016001600160a01b0391909116815260200190565b602060405180830381865afa15801561192c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611950919061a128565b905061195d8160006152c6565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156119ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d2919061a128565b90506119df8160006152c6565b601f546040516101009091046001600160a01b03166024820152604481018690526064810185905260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260235490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391611aca916001600160a01b039190911690600090869060040161a141565b600060405180830381600087803b158015611ae457600080fd5b505af1158015611af8573d6000803e3d6000fd5b50506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015611b8a57600080fd5b505af1158015611b9e573d6000803e3d6000fd5b5050601f546040516101009091046001600160a01b031681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09250602001905060405180910390a16022546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611c7557600080fd5b505af1158015611c89573d6000803e3d6000fd5b50506020546040516001600160a01b0390911692507f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d9150611cce908990889061a169565b60405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611d2f57600080fd5b505af1158015611d43573d6000803e3d6000fd5b50506022546020546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350611d9b92909116908a9089908b9060040161a182565b600060405180830381600087803b158015611db557600080fd5b505af1158015611dc9573d6000803e3d6000fd5b50506023546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611e1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e40919061a128565b90506115f18160006152c6565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610fcd5783829060005260206000209060020201604051806040016040529081600082018054611ea490619e70565b80601f0160208091040260200160405190810160405280929190818152602001828054611ed090619e70565b8015611f1d5780601f10611ef257610100808354040283529160200191611f1d565b820191906000526020600020905b815481529060010190602001808311611f0057829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611fb757602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611f645790505b50505050508152505081526020019060010190611e71565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152620186a090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561202d57600080fd5b505af1158015612041573d6000803e3d6000fd5b50506022546040517f6f8b44b0000000000000000000000000000000000000000000000000000000008152600481018590526001600160a01b039091169250636f8b44b09150602401600060405180830381600087803b1580156120a457600080fd5b505af11580156120b8573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561211557600080fd5b505af1158015612129573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fc30436e9000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156121b257600080fd5b505af11580156121c6573d6000803e3d6000fd5b50506022546020546001600160a01b03918216935063106e62909250166121ee846001619ff7565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039092166004830152602482015260006044820152606401600060405180830381600087803b15801561225357600080fd5b505af1158015612267573d6000803e3d6000fd5b5050505050565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f19018152908290526024805463ca669fa760e01b84526001600160a01b03166004840152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa79101600060405180830381600087803b15801561230b57600080fd5b505af115801561231f573d6000803e3d6000fd5b505060248054604080516001600160a01b03909216928201929092527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448083019190915282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f0000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061240e919060040161a1bb565b600060405180830381600087803b15801561242857600080fd5b505af115801561243c573d6000803e3d6000fd5b50506022546020546040517f6f8728ad0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450636f8728ad9350612497929091169087908690889060289060040161a1ce565b600060405180830381600087803b1580156124b157600080fd5b505af11580156124c5573d6000803e3d6000fd5b50505050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610fcd57838290600052602060002001805461251190619e70565b80601f016020809104026020016040519081016040528092919081815260200182805461253d90619e70565b801561258a5780601f1061255f5761010080835404028352916020019161258a565b820191906000526020600020905b81548152906001019060200180831161256d57829003601f168201915b5050505050815260200190600101906124f2565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015610fcd5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561268157602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161262e5790505b505050505081525050815260200190600101906125c2565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a09060009060250160408051808303601f190181529082905260265463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561273457600080fd5b505af1158015612748573d6000803e3d6000fd5b50506022546040517f6f8b44b0000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b039091169250636f8b44b09150602401600060405180830381600087803b1580156127ab57600080fd5b505af11580156127bf573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561281c57600080fd5b505af1158015612830573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fc30436e9000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156128b957600080fd5b505af11580156128cd573d6000803e3d6000fd5b50506022546020546001600160a01b039182169350635e3e9fef9250166128f5856001619ff7565b846040518463ffffffff1660e01b8152600401610e5e9392919061a21a565b6022546040805160608101909152602580825261295e926001600160a01b0316919061d5d760208301396040805160208101909152600081526024546001600160a01b0316615345565b6022546023546025546040516370a0823160e01b81526001600160a01b03918216600482015292811692620186a09260009216906370a0823190602401602060405180830381865afa1580156129b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129dc919061a128565b90506129e98160006152c6565b6025546040516001600160a01b0390911660248201526044810183905260006064820181905290819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260235490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391612ad2916001600160a01b039190911690600090869060040161a141565b600060405180830381600087803b158015612aec57600080fd5b505af1158015612b00573d6000803e3d6000fd5b50506040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b0388166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015612b8e57600080fd5b505af1158015612ba2573d6000803e3d6000fd5b50506025546040518781526001600160a01b0390911692507f3e35ef4326151011878c9e8e968a0f3913fe98ca68f72a1e0c2e9be13ffb3ee9915060200160405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612c4157600080fd5b505af1158015612c55573d6000803e3d6000fd5b50506025546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810188905260448101869052908816925063106e62909150606401600060405180830381600087803b158015612cc757600080fd5b505af1158015612cdb573d6000803e3d6000fd5b50506023546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015612d2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d52919061a128565b9050610e8c81866152c6565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015610fcd5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015612e4157602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411612dee5790505b50505050508152505081526020019060010190612d82565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610fcd578382906000526020600020018054612e9c90619e70565b80601f0160208091040260200160405190810160405280929190818152602001828054612ec890619e70565b8015612f155780601f10612eea57610100808354040283529160200191612f15565b820191906000526020600020905b815481529060010190602001808311612ef857829003601f168201915b505050505081526020019060010190612e7d565b60085460009060ff1615612f41575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612fd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ff6919061a128565b1415905090565b602354602554604051620186a0602482018190526001600160a01b039384166044830152929091166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a20000000000000000000000000000000000000000000000000000000017905260248054915163ca669fa760e01b81526001600160a01b039092166004830152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa79101600060405180830381600087803b1580156130e457600080fd5b505af11580156130f8573d6000803e3d6000fd5b505060248054604080516001600160a01b03909216928201929092527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448083019190915282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f0000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506131e7919060040161a1bb565b600060405180830381600087803b15801561320157600080fd5b505af1158015613215573d6000803e3d6000fd5b50506022546020546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350612497929091169087908690889060040161a182565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152620186a090600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156132ce57600080fd5b505af11580156132e2573d6000803e3d6000fd5b5050602754604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506133cd919060040161a1bb565b600060405180830381600087803b1580156133e757600080fd5b505af11580156133fb573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561344f57600080fd5b505af1158015613463573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156134c057600080fd5b505af11580156134d4573d6000803e3d6000fd5b5050602754604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506135bf919060040161a1bb565b600060405180830381600087803b1580156135d957600080fd5b505af11580156135ed573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561364157600080fd5b505af1158015613655573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156136b257600080fd5b505af11580156136c6573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561371a57600080fd5b505af115801561372e573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd93c0665000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156137b757600080fd5b505af11580156137cb573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561382857600080fd5b505af115801561383c573d6000803e3d6000fd5b50506022546025546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101879052604481018690529116925063106e62909150606401600060405180830381600087803b1580156138b057600080fd5b505af11580156138c4573d6000803e3d6000fd5b50506024805460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063ca669fa7925001600060405180830381600087803b15801561392057600080fd5b505af1158015613934573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561398857600080fd5b505af115801561399c573d6000803e3d6000fd5b50506023546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156139ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a13919061a128565b9050613a208160006152c6565b6025546040516001600160a01b039091166024820152604481018490526064810183905260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260235490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391613b07916001600160a01b039190911690600090869060040161a141565b600060405180830381600087803b158015613b2157600080fd5b505af1158015613b35573d6000803e3d6000fd5b50506022546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015613bc757600080fd5b505af1158015613bdb573d6000803e3d6000fd5b50506025546040518781526001600160a01b0390911692507f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5915060200160405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613c7a57600080fd5b505af1158015613c8e573d6000803e3d6000fd5b50506022546025546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101899052604481018890529116925063106e629091506064015b600060405180830381600087803b158015613d0357600080fd5b505af1158015613d17573d6000803e3d6000fd5b50506023546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015613d6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d8e919061a128565b905061226781866152c6565b6023546025546040516370a0823160e01b81526001600160a01b039182166004820152620186a09260009216906370a0823190602401602060405180830381865afa158015613ded573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e11919061a128565b9050613e1e8160006152c6565b6025546040516001600160a01b0390911660248201526044810183905260006064820181905290819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260235490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391613f07916001600160a01b039190911690600090869060040161a141565b600060405180830381600087803b158015613f2157600080fd5b505af1158015613f35573d6000803e3d6000fd5b50506022546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015613fc757600080fd5b505af1158015613fdb573d6000803e3d6000fd5b50506025546040518781526001600160a01b0390911692507f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5915060200160405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561407a57600080fd5b505af115801561408e573d6000803e3d6000fd5b50506022546025546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101899052604481018790529116925063106e62909150606401613ce9565b602354602554604051620186a0602482018190526001600160a01b039384166044830152929091166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc51316910000000000000000000000000000000000000000000000000000000017905260235460255491516370a0823160e01b81526001600160a01b0392831660048201529293506000929116906370a0823190602401602060405180830381865afa1580156141cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141ef919061a128565b90506141fc8160006152c6565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801561424d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614271919061a128565b905061427e8160006152c6565b601f546040516101009091046001600160a01b03166024820152604481018690526064810185905260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260235490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391614369916001600160a01b039190911690600090869060040161a141565b600060405180830381600087803b15801561438357600080fd5b505af1158015614397573d6000803e3d6000fd5b50506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561442957600080fd5b505af115801561443d573d6000803e3d6000fd5b5050601f547f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60925061010090046001600160a01b0316905061448060028961a253565b602354602554604080516001600160a01b03958616815260208101949094529184168383015292909216606082015290519081900360800190a16022546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561454857600080fd5b505af115801561455c573d6000803e3d6000fd5b50506020546040516001600160a01b0390911692507f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d91506145a1908990889061a169565b60405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561460257600080fd5b505af1158015614616573d6000803e3d6000fd5b50506022546020546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef935061466e92909116908a9089908b9060040161a182565b600060405180830381600087803b15801561468857600080fd5b505af115801561469c573d6000803e3d6000fd5b50506023546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156146ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614713919061a128565b90506115f18161472460028a61a253565b6152c6565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f19018152908290526023546020546370a0823160e01b84526001600160a01b0390811660048501529193506000929116906370a0823190602401602060405180830381865afa1580156147bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147e3919061a128565b90506147f08160006152c6565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015614841573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614865919061a128565b601f54604080516001600160a01b036101009093048316602482015260448101899052606480820189905282518083039091018152608490910182526020810180517f1e458bee000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911617905260235491517ff30c7ba300000000000000000000000000000000000000000000000000000000815293945092737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba39261494792911690600090869060040161a141565b600060405180830381600087803b15801561496157600080fd5b505af1158015614975573d6000803e3d6000fd5b50506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015614a0757600080fd5b505af1158015614a1b573d6000803e3d6000fd5b505050507f689a5a5cb55e795ffe4cd8b419cd3bb0a3373974c54d25f64e734d7388b93e9b601f60019054906101000a90046001600160a01b03166028604051614a6692919061a28e565b60405180910390a1601f546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015614b0057600080fd5b505af1158015614b14573d6000803e3d6000fd5b50506023546020546040516001600160a01b039283169450911691507fde7603a6ed5d07c9f43597ccfe9043d15b66d3284f0de321f5cdf56329e6e03590614b62908a90899060289061a2b0565b60405180910390a36022546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015614bf857600080fd5b505af1158015614c0c573d6000803e3d6000fd5b50506020546040516001600160a01b0390911692507f5272d2fee39bff41b2e763562526315906046373ce08a7bacf76c3080d731ff09150614c54908990889060289061a2b0565b60405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614cb557600080fd5b505af1158015614cc9573d6000803e3d6000fd5b50506022546020546040517f6f8728ad0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450636f8728ad9350614d2492909116908a9089908b9060289060040161a1ce565b600060405180830381600087803b158015614d3e57600080fd5b505af1158015614d52573d6000803e3d6000fd5b50506023546020546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015614da5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614dc9919061a128565b9050614dd581886152c6565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015614e26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614e4a919061a128565b905061167381856152c6565b60606015805480602002602001604051908101604052809291908181526020018280548015610bd6576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610bb8575050505050905090565b6024805460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa79101600060405180830381600087803b158015614f0e57600080fd5b505af1158015614f22573d6000803e3d6000fd5b505060248054604080516001600160a01b03909216928201929092527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60448083019190915282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f0000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250615011919060040161a1bb565b600060405180830381600087803b15801561502b57600080fd5b505af115801561503f573d6000803e3d6000fd5b50506022546040517f6f8b44b000000000000000000000000000000000000000000000000000000000815261271060048201526001600160a01b039091169250636f8b44b09150602401600060405180830381600087803b1580156150a357600080fd5b505af1158015610b78573d6000803e3d6000fd5b6024805460405163ca669fa760e01b81526001600160a01b039091166004820152620186a091600091737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa79101600060405180830381600087803b15801561511757600080fd5b505af115801561512b573d6000803e3d6000fd5b505060248054604080516001600160a01b03909216928201929092527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448083019190915282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f0000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061521a919060040161a1bb565b600060405180830381600087803b15801561523457600080fd5b505af1158015615248573d6000803e3d6000fd5b50506022546025546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101879052604481018690529116925063106e62909150606401610e5e565b60006152b16199da565b6152bc84848361535a565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b15801561533157600080fd5b505afa158015610e8c573d6000803e3d6000fd5b61534d6199da565b61226785858584866153d5565b60008061536785846154d5565b90506153ca6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f787900000081525082866040516020016153b592919061a2db565b604051602081830303815290604052856154e1565b9150505b9392505050565b6040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201528190737109709ecfa91a80626ff3989d68f67f5b1dd12d9081906306447d5690602401600060405180830381600087803b15801561544757600080fd5b505af1925050508015615458575060015b61546d576154688787878761550f565b6124c5565b6154798787878761550f565b806001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156154b457600080fd5b505af11580156154c8573d6000803e3d6000fd5b5050505050505050505050565b60006153ce8383615528565b60c08101515160009015615505576154fe84848460c00151615543565b90506153ce565b6154fe84846156e9565b600061551b84836157d4565b90506122678582856157e0565b60006155348383615baa565b6153ce838360200151846154e1565b60008061554e615bba565b9050600061555c8683615c8d565b905060006155738260600151836020015185616133565b9050600061558383838989616345565b90506000615590826171c2565b602081015181519192509060030b15615603578982604001516040516020016155ba92919061a2fd565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526155fa9160040161a1bb565b60405180910390fd5b60006156466040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001617391565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d9061569990849060040161a1bb565b602060405180830381865afa1580156156b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906156da919061a37e565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc9259061573e90879060040161a1bb565b600060405180830381865afa15801561575b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615783919081019061a460565b905060006157b1828560405160200161579d92919061a495565b604051602081830303815290604052617591565b90506001600160a01b0381166152bc5784846040516020016155ba92919061a4c4565b600061553483836175a4565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201527fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61036024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90600090829063667f9d7090604401602060405180830381865afa15801561587c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906158a0919061a128565b905080615a475760006158b2866175b0565b604080518082018252600581527f352e302e300000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061593d905b604080518082018252600080825260209182015281518083019092528451825280850190820152906176a8565b80615949575060008451115b156159cc576040517f4f1ef2860000000000000000000000000000000000000000000000000000000081526001600160a01b03871690634f1ef28690615995908890889060040161a2db565b600060405180830381600087803b1580156159af57600080fd5b505af11580156159c3573d6000803e3d6000fd5b50505050615a41565b6040517f3659cfe60000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152871690633659cfe690602401600060405180830381600087803b158015615a2857600080fd5b505af1158015615a3c573d6000803e3d6000fd5b505050505b50612267565b806000615a53826175b0565b604080518082018252600581527f352e302e3000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615ab590615910565b80615ac1575060008551115b15615b46576040517f9623609d0000000000000000000000000000000000000000000000000000000081526001600160a01b03831690639623609d90615b0f908a908a908a9060040161a56f565b600060405180830381600087803b158015615b2957600080fd5b505af1158015615b3d573d6000803e3d6000fd5b505050506124c5565b6040517f99a88ec40000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015287811660248301528316906399a88ec490604401600060405180830381600087803b1580156154b457600080fd5b615bb6828260006176bc565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90615c4190849060040161a5a0565b600060405180830381865afa158015615c5e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615c86919081019061a5e7565b9250505090565b615cbf6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050615d0a6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b615d13856177bf565b60208201526000615d2386617ba4565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015615d65573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615d8d919081019061a5e7565b86838560200151604051602001615da7949392919061a630565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190615dff90859060040161a1bb565b600060405180830381865afa158015615e1c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615e44919081019061a5e7565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690615e8c90849060040161a734565b602060405180830381865afa158015615ea9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615ecd919061a786565b615ee257816040516020016155ba919061a7a8565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890615f2790849060040161a83a565b600060405180830381865afa158015615f44573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615f6c919081019061a5e7565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690615fb390849060040161a88c565b602060405180830381865afa158015615fd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615ff4919061a786565b15616089576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061603e90849060040161a88c565b600060405180830381865afa15801561605b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616083919081019061a5e7565b60408501525b846001600160a01b03166349c4fac88286600001516040516020016160ae919061a8de565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016160da92919061a94a565b600060405180830381865afa1580156160f7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261611f919081019061a5e7565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b606081526020019060019003908161614f5790505090506040518060400160405280600481526020017f6772657000000000000000000000000000000000000000000000000000000000815250816000815181106161af576161af61a96f565b60200260200101819052506040518060400160405280600381526020017f2d726c0000000000000000000000000000000000000000000000000000000000815250816001815181106162035761620361a96f565b60200260200101819052508460405160200161621f919061a99e565b604051602081830303815290604052816002815181106162415761624161a96f565b60200260200101819052508260405160200161625d919061aa0a565b6040516020818303038152906040528160038151811061627f5761627f61a96f565b60200260200101819052506000616295826171c2565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506163269060408051808201825260008082526020918201528151808301909252845182528085019082015290617e27565b61633b57856040516020016155ba919061aa4b565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015616395565b511590565b61650957826020015115616451576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a4016155fa565b8260c0015115616509576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a4016155fa565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161652257905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061657d9061aadc565b935060ff16815181106165925761659261a96f565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016165e3919061aafb565b6040516020818303038152906040528282806165fe9061aadc565b935060ff16815181106166135761661361a96f565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806166609061aadc565b935060ff16815181106166755761667561a96f565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806166c29061aadc565b935060ff16815181106166d7576166d761a96f565b602002602001018190525087602001518282806166f39061aadc565b935060ff16815181106167085761670861a96f565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806167559061aadc565b935060ff168151811061676a5761676a61a96f565b6020908102919091010152875182826167828161aadc565b935060ff16815181106167975761679761a96f565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806167e49061aadc565b935060ff16815181106167f9576167f961a96f565b602002602001018190525061680d46617e88565b82826168188161aadc565b935060ff168151811061682d5761682d61a96f565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c65000000000000000000000000000000000081525082828061687a9061aadc565b935060ff168151811061688f5761688f61a96f565b6020026020010181905250868282806168a79061aadc565b935060ff16815181106168bc576168bc61a96f565b60209081029190910101528551156169e35760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261690d8161aadc565b935060ff16815181106169225761692261a96f565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d9061697290899060040161a1bb565b600060405180830381865afa15801561698f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526169b7919081019061a5e7565b82826169c28161aadc565b935060ff16815181106169d7576169d761a96f565b60200260200101819052505b846020015115616ab35760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282616a2c8161aadc565b935060ff1681518110616a4157616a4161a96f565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280616a8e9061aadc565b935060ff1681518110616aa357616aa361a96f565b6020026020010181905250616c7a565b616aeb6163908660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b616b7e5760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282616b2e8161aadc565b935060ff1681518110616b4357616b4361a96f565b60200260200101819052508460a00151604051602001616b63919061a99e565b604051602081830303815290604052828280616a8e9061aadc565b8460c00151158015616bc1575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152616bbf90511590565b155b15616c7a5760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282616c058161aadc565b935060ff1681518110616c1a57616c1a61a96f565b6020026020010181905250616c2e88617f28565b604051602001616c3e919061a99e565b604051602081830303815290604052828280616c599061aadc565b935060ff1681518110616c6e57616c6e61a96f565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152616cae90511590565b616d435760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282616cf18161aadc565b935060ff1681518110616d0657616d0661a96f565b60200260200101819052508460400151828280616d229061aadc565b935060ff1681518110616d3757616d3761a96f565b60200260200101819052505b606085015115616e645760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282616d8c8161aadc565b935060ff1681518110616da157616da161a96f565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015616e10573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616e38919081019061a5e7565b8282616e438161aadc565b935060ff1681518110616e5857616e5861a96f565b60200260200101819052505b60e08501515115616f0b5760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282616eae8161aadc565b935060ff1681518110616ec357616ec361a96f565b6020026020010181905250616edf8560e0015160000151617e88565b8282616eea8161aadc565b935060ff1681518110616eff57616eff61a96f565b60200260200101819052505b60e08501516020015115616fb55760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282616f588161aadc565b935060ff1681518110616f6d57616f6d61a96f565b6020026020010181905250616f898560e0015160200151617e88565b8282616f948161aadc565b935060ff1681518110616fa957616fa961a96f565b60200260200101819052505b60e0850151604001511561705f5760408051808201909152600e81527f2d2d6d6178466565506572476173000000000000000000000000000000000000602082015282826170028161aadc565b935060ff16815181106170175761701761a96f565b60200260200101819052506170338560e0015160400151617e88565b828261703e8161aadc565b935060ff16815181106170535761705361a96f565b60200260200101819052505b60e085015160600151156171095760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826170ac8161aadc565b935060ff16815181106170c1576170c161a96f565b60200260200101819052506170dd8560e0015160600151617e88565b82826170e88161aadc565b935060ff16815181106170fd576170fd61a96f565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561712757617127619e41565b60405190808252806020026020018201604052801561715a57816020015b60608152602001906001900390816171455790505b50905060005b8260ff168160ff1610156171b357838160ff16815181106171835761718361a96f565b6020026020010151828260ff16815181106171a0576171a061a96f565b6020908102919091010152600101617160565b5093505050505b949350505050565b6171e96040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c9161726f9186910161ab66565b600060405180830381865afa15801561728c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526172b4919081019061a5e7565b905060006172c28683618a17565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b81526004016172f29190619d33565b6000604051808303816000875af1158015617311573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617339919081019061abad565b805190915060030b158015906173525750602081015151155b80156173615750604081015151155b1561633b57816000815181106173795761737961a96f565b60200260200101516040516020016155ba919061ac63565b606060006173c68560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506173fd9082905b90618b6c565b1561755a57600061747a826174748461746e6174408a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90618b93565b90618bf5565b604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506174de908290618b6c565b1561754857604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617545905b8290618c7a565b90505b61755181618ca0565b925050506153ce565b82156175735784846040516020016155ba92919061ae4f565b50506040805160208101909152600081526153ce565b509392505050565b6000808251602084016000f09392505050565b615bb6828260016176bc565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fad3cb1cc00000000000000000000000000000000000000000000000000000000179052905160609160009182916001600160a01b03861691617625919061aef6565b600060405180830381855afa9150503d8060008114617660576040519150601f19603f3d011682016040523d82523d6000602084013e617665565b606091505b5091509150818015617678575060208151115b1561769157808060200190518101906171ba919061a5e7565b505060408051602081019091526000815292915050565b60006176b48383618d09565b159392505050565b8160a00151156176cb57505050565b60006176d8848484618de4565b905060006176e5826171c2565b602081015181519192509060030b1580156177815750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617781906040805180820182526000808252602091820152815180830190925284518252808501908201526173f7565b1561778e57505050505050565b604082015151156177ae5781604001516040516020016155ba919061af12565b806040516020016155ba919061af70565b606060006177f48360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150617859905b8290617e27565b156178c857604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526153ce906178c390839061937f565b618ca0565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261792a905b8290619409565b6001036179f757604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526179909061753e565b50604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526153ce906178c3905b8390618c7a565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617a5690617852565b15617b8d57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290617abe9083906194a3565b905060008160018351617ad1919061afdb565b81518110617ae157617ae161a96f565b60200260200101519050617b846178c3617b576040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529061937f565b95945050505050565b826040516020016155ba919061afee565b50919050565b60606000617bd98360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150617c3b90617852565b15617c49576153ce81618ca0565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617ca890617923565b600103617d1257604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526153ce906178c3906179f0565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617d7190617852565b15617b8d57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290617dd99083906194a3565b9050600181511115617e15578060028251617df4919061afdb565b81518110617e0457617e0461a96f565b602002602001015192505050919050565b50826040516020016155ba919061afee565b805182516000911115617e3c575060006152c0565b81518351602085015160009291617e5291619ff7565b617e5c919061afdb565b905082602001518103617e735760019150506152c0565b82516020840151819020912014905092915050565b60606000617e9583619548565b600101905060008167ffffffffffffffff811115617eb557617eb5619e41565b6040519080825280601f01601f191660200182016040528015617edf576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084617ee957509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091617fb4905b82906176a8565b15617ff457505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261805390617fad565b1561809357505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d49540000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526180f290617fad565b1561813257505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261819190617fad565b806181f65750604080518082018252601081527f47504c2d322e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526181f690617fad565b1561823657505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261829590617fad565b806182fa5750604080518082018252601081527f47504c2d332e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526182fa90617fad565b1561833a57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261839990617fad565b806183fe5750604080518082018252601181527f4c47504c2d322e312d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526183fe90617fad565b1561843e57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261849d90617fad565b806185025750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261850290617fad565b1561854257505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526185a190617fad565b156185e157505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261864090617fad565b1561868057505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526186df90617fad565b1561871f57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261877e90617fad565b156187be57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261881d90617fad565b1561885d57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526188bc90617fad565b806189215750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261892190617fad565b1561896157505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e31000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526189c090617fad565b15618a0057505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b604080840151845191516155ba929060200161b0cc565b60608060005b8451811015618aa25781858281518110618a3957618a3961a96f565b6020026020010151604051602001618a5292919061a495565b604051602081830303815290604052915060018551618a71919061afdb565b8114618a9a5781604051602001618a88919061b235565b60405160208183030381529060405291505b600101618a1d565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081618abb5790505090508381600081518110618ae657618ae661a96f565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110618b3a57618b3a61a96f565b60200260200101819052508181600281518110618b5957618b5961a96f565b6020908102919091010152949350505050565b6020808301518351835192840151600093618b8a929184919061962a565b14159392505050565b60408051808201909152600080825260208201526000618bc5846000015185602001518560000151866020015161973b565b9050836020015181618bd7919061afdb565b84518590618be690839061afdb565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015618c1a5750816152c0565b6020808301519084015160019114618c415750815160208481015190840151829020919020145b8015618c7257825184518590618c5890839061afdb565b9052508251602085018051618c6e908390619ff7565b9052505b509192915050565b6040805180820190915260008082526020820152618c9983838361985b565b5092915050565b60606000826000015167ffffffffffffffff811115618cc157618cc1619e41565b6040519080825280601f01601f191660200182016040528015618ceb576020820181803683370190505b5090506000602082019050618c998185602001518660000151619906565b8151815160009190811115618d1c575081515b6020808501519084015160005b83811015618dd55782518251808214618da5576000196020871015618d8457600184618d5689602061afdb565b618d609190619ff7565b618d6b90600861b276565b618d7690600261b374565b618d80919061afdb565b1990505b8181168382168181039114618da25797506152c09650505050505050565b50505b618db0602086619ff7565b9450618dbd602085619ff7565b93505050602081618dce9190619ff7565b9050618d29565b508451865161633b919061b380565b60606000618df0615bba565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081618e0d57905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280618e689061aadc565b935060ff1681518110618e7d57618e7d61a96f565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001618ece919061b3a0565b604051602081830303815290604052828280618ee99061aadc565b935060ff1681518110618efe57618efe61a96f565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280618f4b9061aadc565b935060ff1681518110618f6057618f6061a96f565b602002602001018190525082604051602001618f7c919061aa0a565b604051602081830303815290604052828280618f979061aadc565b935060ff1681518110618fac57618fac61a96f565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280618ff99061aadc565b935060ff168151811061900e5761900e61a96f565b60200260200101819052506190238784619980565b828261902e8161aadc565b935060ff16815181106190435761904361a96f565b6020908102919091010152855151156190ef5760408051808201909152600b81527f2d2d7265666572656e6365000000000000000000000000000000000000000000602082015282826190958161aadc565b935060ff16815181106190aa576190aa61a96f565b60200260200101819052506190c3866000015184619980565b82826190ce8161aadc565b935060ff16815181106190e3576190e361a96f565b60200260200101819052505b85608001511561915d5760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b0000000000000000602082015282826191388161aadc565b935060ff168151811061914d5761914d61a96f565b60200260200101819052506191c3565b84156191c35760408051808201909152601281527f2d2d726571756972655265666572656e63650000000000000000000000000000602082015282826191a28161aadc565b935060ff16815181106191b7576191b761a96f565b60200260200101819052505b6040860151511561925f5760408051808201909152600d81527f2d2d756e73616665416c6c6f77000000000000000000000000000000000000006020820152828261920d8161aadc565b935060ff16815181106192225761922261a96f565b6020026020010181905250856040015182828061923e9061aadc565b935060ff16815181106192535761925361a96f565b60200260200101819052505b8560600151156192c95760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d6573000000000000000000000000602082015282826192a88161aadc565b935060ff16815181106192bd576192bd61a96f565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156192e7576192e7619e41565b60405190808252806020026020018201604052801561931a57816020015b60608152602001906001900390816193055790505b50905060005b8260ff168160ff16101561937357838160ff16815181106193435761934361a96f565b6020026020010151828260ff16815181106193605761936061a96f565b6020908102919091010152600101619320565b50979650505050505050565b60408051808201909152600080825260208201528151835110156193a45750816152c0565b815183516020850151600092916193ba91619ff7565b6193c4919061afdb565b602084015190915060019082146193e5575082516020840151819020908220145b8015619400578351855186906193fc90839061afdb565b9052505b50929392505050565b600080826000015161942d856000015186602001518660000151876020015161973b565b6194379190619ff7565b90505b8351602085015161944b9190619ff7565b8111618c99578161945b8161b3e5565b9250508260000151619492856020015183619476919061afdb565b8651619482919061afdb565b838660000151876020015161973b565b61949c9190619ff7565b905061943a565b606060006194b18484619409565b6194bc906001619ff7565b67ffffffffffffffff8111156194d4576194d4619e41565b60405190808252806020026020018201604052801561950757816020015b60608152602001906001900390816194f25790505b50905060005b8151811015617589576195236178c38686618c7a565b8282815181106195355761953561a96f565b602090810291909101015260010161950d565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310619591577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106195bd576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106195db57662386f26fc10000830492506010015b6305f5e10083106195f3576305f5e100830492506008015b612710831061960757612710830492506004015b60648310619619576064830492506002015b600a83106152c05760010192915050565b60008085841161973157602084116196dd576000841561967557600161965186602061afdb565b61965c90600861b276565b61966790600261b374565b619671919061afdb565b1990505b83518116856196848989619ff7565b61968e919061afdb565b805190935082165b8181146196c8578784116196b057879450505050506171ba565b836196ba8161b3ff565b945050828451169050619696565b6196d28785619ff7565b9450505050506171ba565b8383206196ea858861afdb565b6196f49087619ff7565b91505b85821061972f5784822080820361971c576197128684619ff7565b93505050506171ba565b61972760018461afdb565b9250506196f7565b505b5092949350505050565b6000838186851161984657602085116197f5576000851561978757600161976387602061afdb565b61976e90600861b276565b61977990600261b374565b619783919061afdb565b1990505b845181166000876197988b8b619ff7565b6197a2919061afdb565b855190915083165b8281146197e7578186106197cf576197c28b8b619ff7565b96505050505050506171ba565b856197d98161b3e5565b9650508386511690506197aa565b8596505050505050506171ba565b508383206000905b619807868961afdb565b82116198445785832080820361982357839450505050506171ba565b61982e600185619ff7565b935050818061983c9061b3e5565b9250506197fd565b505b6198508787619ff7565b979650505050505050565b6040805180820190915260008082526020820152600061988d856000015186602001518660000151876020015161973b565b6020808701805191860191909152519091506198a9908261afdb565b8352845160208601516198bc9190619ff7565b81036198cb57600085526198fd565b835183516198d99190619ff7565b855186906198e890839061afdb565b90525083516198f79082619ff7565b60208601525b50909392505050565b6020811061993e578151835261991d602084619ff7565b925061992a602083619ff7565b915061993760208261afdb565b9050619906565b600019811561996d57600161995483602061afdb565b6199609061010061b374565b61996a919061afdb565b90505b9151835183169219169190911790915250565b6060600061998e8484615c8d565b80516020808301516040519394506199a89390910161b416565b60405160208183030381529060405291505092915050565b6112a68061b46f83390190565b610ec28061c71583390190565b6040518060e00160405280606081526020016060815260200160608152602001600015158152602001600015158152602001600015158152602001619a1d619a22565b905290565b60405180610100016040528060001515815260200160001515815260200160608152602001600080191681526020016060815260200160608152602001600015158152602001619a1d6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b81811015619ad45783516001600160a01b0316835260209384019390920191600101619aad565b509095945050505050565b60005b83811015619afa578181015183820152602001619ae2565b50506000910152565b60008151808452619b1b816020860160208601619adf565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015619c2b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015619c11577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352619bfb848651619b03565b6020958601959094509290920191600101619bc1565b509197505050602094850194929092019150600101619b57565b50929695505050505050565b600081518084526020840193506020830160005b82811015619c8b5781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101619c4b565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015619c2b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752619d016040880182619b03565b9050602082015191508681036020880152619d1c8183619c37565b965050506020938401939190910190600101619cbd565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015619c2b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452619d95858351619b03565b94506020938401939190910190600101619d5b565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015619c2b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152619e2b6040870182619c37565b9550506020938401939190910190600101619dd2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600181811c90821680619e8457607f821691505b602082108103617b9e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b601f821115619f0457806000526020600020601f840160051c81016020851015619ee45750805b601f840160051c820191505b818110156122675760008155600101619ef0565b505050565b815167ffffffffffffffff811115619f2357619f23619e41565b619f3781619f318454619e70565b84619ebd565b6020601f821160018114619f6b5760008315619f535750848201515b600019600385901b1c1916600184901b178455612267565b600084815260208120601f198516915b82811015619f9b5787850151825560209485019460019092019101619f7b565b5084821015619fb95786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156152c0576152c0619fc8565b6001600160a01b0381541682526001600160a01b03600182015416602083015260028101546040830152600060038201608060608501526000815461a04e81619e70565b806080880152600182166000811461a06d576001811461a0a75761a0db565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831660a089015260a082151560051b890101935061a0db565b84600052602060002060005b8381101561a0d25781548a820160a0015260019091019060200161a0b3565b890160a0019450505b50919695505050505050565b6001600160a01b038516815283602082015260a06040820152600061a10f60a0830185619b03565b600060608401528281036080840152619850818561a00a565b60006020828403121561a13a57600080fd5b5051919050565b6001600160a01b0384168152826020820152606060408201526000617b846060830184619b03565b8281526040602082015260006171ba6040830184619b03565b6001600160a01b038516815283602082015260806040820152600061a1aa6080830185619b03565b905082606083015295945050505050565b6020815260006153ce6020830184619b03565b6001600160a01b038616815284602082015260a06040820152600061a1f660a0830186619b03565b846060840152828103608084015261a20e818561a00a565b98975050505050505050565b6001600160a01b038416815282602082015260806040820152600061a2426080830184619b03565b905060006060830152949350505050565b60008261a289577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6001600160a01b03831681526040602082015260006171ba604083018461a00a565b83815260606020820152600061a2c96060830185619b03565b828103604084015261633b818561a00a565b6001600160a01b03831681526040602082015260006171ba6040830184619b03565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161a33581601a850160208801619adf565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161a37281601c840160208801619adf565b01601c01949350505050565b60006020828403121561a39057600080fd5b81516001600160a01b03811681146153ce57600080fd5b6040516060810167ffffffffffffffff8111828210171561a3ca5761a3ca619e41565b60405290565b60008067ffffffffffffffff84111561a3eb5761a3eb619e41565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561a41a5761a41a619e41565b60405283815290508082840185101561a43257600080fd5b617589846020830185619adf565b600082601f83011261a45157600080fd5b6153ce8383516020850161a3d0565b60006020828403121561a47257600080fd5b815167ffffffffffffffff81111561a48957600080fd5b6152bc8482850161a440565b6000835161a4a7818460208801619adf565b83519083019061a4bb818360208801619adf565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161a4fc81601a850160208801619adf565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161a539816033840160208801619adf565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b6001600160a01b03841681526001600160a01b0383166020820152606060408201526000617b846060830184619b03565b60408152600b60408201527f464f554e4452595f4f555400000000000000000000000000000000000000000060608201526080602082015260006153ce6080830184619b03565b60006020828403121561a5f957600080fd5b815167ffffffffffffffff81111561a61057600080fd5b8201601f8101841361a62157600080fd5b6152bc8482516020840161a3d0565b6000855161a642818460208a01619adf565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161a67c816001840160208a01619adf565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161a6ba816002840160208901619adf565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161a6fc816002840160208801619adf565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061a7476040830184619b03565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b60006020828403121561a79857600080fd5b815180151581146153ce57600080fd5b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161a7e081601f850160208701619adf565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061a84d6040830184619b03565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061a89f6040830184619b03565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161a916816014850160208701619adf565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061a95d6040830185619b03565b82810360208401526153ca8185619b03565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161a9d6816001850160208701619adf565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161aa1c818460208701619adf565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161aacf81604b850160208701619adf565b91909101604b0192915050565b600060ff821660ff810361aaf25761aaf2619fc8565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161ab59816029850160208701619adf565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f504154480000000000000000000060608201526080602082015260006153ce6080830184619b03565b60006020828403121561abbf57600080fd5b815167ffffffffffffffff81111561abd657600080fd5b82016060818503121561abe857600080fd5b61abf061a3a7565b81518060030b811461ac0157600080fd5b8152602082015167ffffffffffffffff81111561ac1d57600080fd5b61ac298682850161a440565b602083015250604082015167ffffffffffffffff81111561ac4957600080fd5b61ac558682850161a440565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161acc1816021850160208701619adf565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161aead816021850160208801619adf565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161aeea81602e840160208801619adf565b01602e01949350505050565b6000825161af08818460208701619adf565b9190910192915050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161ab59816029850160208701619adf565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161afce816022850160208701619adf565b9190910160220192915050565b818103818111156152c0576152c0619fc8565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161b02681600e850160208701619adf565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161b104816018850160208801619adf565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161b14181601c840160208801619adf565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161b247818460208701619adf565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b80820281158282048414176152c0576152c0619fc8565b6001815b600184111561b2c85780850481111561b2ac5761b2ac619fc8565b600184161561b2ba57908102905b60019390931c92800261b291565b935093915050565b60008261b2df575060016152c0565b8161b2ec575060006152c0565b816001811461b302576002811461b30c5761b328565b60019150506152c0565b60ff84111561b31d5761b31d619fc8565b50506001821b6152c0565b5060208310610133831016604e8410600b841016171561b34b575081810a6152c0565b61b358600019848461b28d565b806000190482111561b36c5761b36c619fc8565b029392505050565b60006153ce838361b2d0565b8181036000831280158383131683831282161715618c9957618c99619fc8565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161b3d881601c850160208701619adf565b91909101601c0192915050565b6000600019820361b3f85761b3f8619fc8565b5060010190565b60008161b40e5761b40e619fc8565b506000190190565b6000835161b428818460208801619adf565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161b462816001840160208801619adf565b0160010194935050505056fe608060405234801561001057600080fd5b506040516112a63803806112a683398101604081905261002f91610110565b604051806040016040528060048152602001635a65746160e01b815250604051806040016040528060048152602001635a45544160e01b815250816003908161007891906101e2565b50600461008582826101e2565b5050506001600160a01b03821615806100a557506001600160a01b038116155b156100c35760405163e6c4247b60e01b815260040160405180910390fd5b600680546001600160a01b039384166001600160a01b031991821617909155600780549290931691161790556102a0565b80516001600160a01b038116811461010b57600080fd5b919050565b6000806040838503121561012357600080fd5b61012c836100f4565b915061013a602084016100f4565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061016d57607f821691505b60208210810361018d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101dd57806000526020600020601f840160051c810160208510156101ba5750805b601f840160051c820191505b818110156101da57600081556001016101c6565b50505b505050565b81516001600160401b038111156101fb576101fb610143565b61020f816102098454610159565b84610193565b6020601f821160018114610243576000831561022b5750848201515b600019600385901b1c1916600184901b1784556101da565b600084815260208120601f198516915b828110156102735787850151825560209485019460019092019101610253565b50848210156102915786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610ff7806102af6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806342966c68116100b257806379cc679011610081578063a9059cbb11610066578063a9059cbb1461028e578063bff9662a146102a1578063dd62ed3e146102c157600080fd5b806379cc67901461027357806395d89b411461028657600080fd5b806342966c68146102025780635b1125911461021557806370a0823114610235578063779e3b631461026b57600080fd5b80631e458bee116100ee5780631e458bee1461018857806323b872dd1461019b578063313ce567146101ae578063328a01d0146101bd57600080fd5b806306fdde0314610120578063095ea7b31461013e57806315d57fd41461016157806318160ddd14610176575b600080fd5b610128610307565b6040516101359190610d97565b60405180910390f35b61015161014c366004610e2c565b610399565b6040519015158152602001610135565b61017461016f366004610e56565b6103b3565b005b6002545b604051908152602001610135565b610174610196366004610e89565b61057e565b6101516101a9366004610ebc565b610631565b60405160128152602001610135565b6007546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610135565b610174610210366004610ef9565b610655565b6006546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a610243366004610f12565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b610174610662565b610174610281366004610e2c565b610786565b610128610837565b61015161029c366004610e2c565b610846565b6005546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a6102cf366004610e56565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461031690610f34565b80601f016020809104026020016040519081016040528092919081815260200182805461034290610f34565b801561038f5780601f106103645761010080835404028352916020019161038f565b820191906000526020600020905b81548152906001019060200180831161037257829003601f168201915b5050505050905090565b6000336103a7818585610854565b60019150505b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff1633148015906103f3575060065473ffffffffffffffffffffffffffffffffffffffff163314155b15610431576040517fcdfcef970000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82161580610468575073ffffffffffffffffffffffffffffffffffffffff8116155b1561049f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006805473ffffffffffffffffffffffffffffffffffffffff8481167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316811790935560058054918516919092161790556040805133815260208101929092527fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff910160405180910390a16040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f1b9352454524a57a51f24f67dc66d898f616922cd1f7a12d73570ece12b1975c910160405180910390a15050565b60055473ffffffffffffffffffffffffffffffffffffffff1633146105d1576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6105db8383610866565b808373ffffffffffffffffffffffffffffffffffffffff167fc263b302aec62d29105026245f19e16f8e0137066ccd4a8bd941f716bd4096bb8460405161062491815260200190565b60405180910390a3505050565b60003361063f8582856108c6565b61064a858585610995565b506001949350505050565b61065f3382610a40565b50565b60075473ffffffffffffffffffffffffffffffffffffffff1633146106b5576040517fe700765e000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b60065473ffffffffffffffffffffffffffffffffffffffff16610704576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0910160405180910390a1565b60055473ffffffffffffffffffffffffffffffffffffffff1633146107d9576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6107e38282610a9c565b8173ffffffffffffffffffffffffffffffffffffffff167f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b18260405161082b91815260200190565b60405180910390a25050565b60606004805461031690610f34565b6000336103a7818585610995565b6108618383836001610ab1565b505050565b73ffffffffffffffffffffffffffffffffffffffff82166108b6576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c260008383610bf9565b5050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461098f5781811015610980576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401610428565b61098f84848484036000610ab1565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166109e5576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8216610a35576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b610861838383610bf9565b73ffffffffffffffffffffffffffffffffffffffff8216610a90576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c282600083610bf9565b610aa78233836108c6565b6108c28282610a40565b73ffffffffffffffffffffffffffffffffffffffff8416610b01576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8316610b51576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160209081526040808320938716835292905220829055801561098f578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610beb91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8316610c31578060026000828254610c269190610f87565b90915550610ce39050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610cb7576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810182905260448101839052606401610428565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff8216610d0c57600280548290039055610d38565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161062491815260200190565b602081526000825180602084015260005b81811015610dc55760208186018101516040868401015201610da8565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e2757600080fd5b919050565b60008060408385031215610e3f57600080fd5b610e4883610e03565b946020939093013593505050565b60008060408385031215610e6957600080fd5b610e7283610e03565b9150610e8060208401610e03565b90509250929050565b600080600060608486031215610e9e57600080fd5b610ea784610e03565b95602085013595506040909401359392505050565b600080600060608486031215610ed157600080fd5b610eda84610e03565b9250610ee860208501610e03565b929592945050506040919091013590565b600060208284031215610f0b57600080fd5b5035919050565b600060208284031215610f2457600080fd5b610f2d82610e03565b9392505050565b600181811c90821680610f4857607f821691505b602082108103610f81577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156103ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220e8a1f6a00b1b9c77fd6d8724e3829463441aaedd6b65190c6dc6c18bcc5810e364736f6c634300081a00336080604052348015600f57600080fd5b506001600055610e9e806100246000396000f3fe60806040526004361061006e5760003560e01c8063c51316911161004b578063c5131691146100d5578063c9028a36146100f5578063e04d4f9714610115578063f05b6abf1461012857005b8063357fc5a214610077578063676cc054146100975780636ed70169146100c057005b3661007557005b005b34801561008357600080fd5b506100756100923660046106ec565b610148565b6100aa6100a5366004610728565b6101de565b6040516100b79190610823565b60405180910390f35b3480156100cc57600080fd5b50610075610222565b3480156100e157600080fd5b506100756100f03660046106ec565b610257565b34801561010157600080fd5b50610075610110366004610836565b610332565b610075610123366004610996565b61036e565b34801561013457600080fd5b50610075610143366004610a82565b6103b2565b6101506103e7565b61017273ffffffffffffffffffffffffffffffffffffffff831633838661042a565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101d96001600055565b505050565b6040516060907f3658b46bab672c7672b69c2f0feda706eabdb7d2231421c96e9049b2db5e7eee90600090a1506040805160208101909152600081525b9392505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b61025f6103e7565b600061026c600285610b6c565b9050806000036102a8576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102ca73ffffffffffffffffffffffffffffffffffffffff841633848461042a565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101d96001600055565b7f689a5a5cb55e795ffe4cd8b419cd3bb0a3373974c54d25f64e734d7388b93e9b3382604051610363929190610bf0565b60405180910390a150565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa33348585856040516103a5959493929190610ce2565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103a59493929190610d6c565b600260005403610423576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526104bf9085906104c5565b50505050565b60006104e773ffffffffffffffffffffffffffffffffffffffff841683610560565b9050805160001415801561050c57508080602001905181019061050a9190610e2f565b155b156101d9576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061021b83836000846000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105939190610e4c565b60006040518083038185875af1925050503d80600081146105d0576040519150601f19603f3d011682016040523d82523d6000602084013e6105d5565b606091505b50915091506105e58683836105ef565b9695505050505050565b606082610604576105ff8261067e565b61021b565b8151158015610628575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610677576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610557565b508061021b565b80511561068e5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106e757600080fd5b919050565b60008060006060848603121561070157600080fd5b83359250610711602085016106c3565b915061071f604085016106c3565b90509250925092565b6000806000838503604081121561073e57600080fd5b602081121561074c57600080fd5b50839250602084013567ffffffffffffffff81111561076a57600080fd5b8401601f8101861361077b57600080fd5b803567ffffffffffffffff81111561079257600080fd5b8660208284010111156107a457600080fd5b939660209190910195509293505050565b60005b838110156107d05781810151838201526020016107b8565b50506000910152565b600081518084526107f18160208601602086016107b5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061021b60208301846107d9565b60006020828403121561084857600080fd5b813567ffffffffffffffff81111561085f57600080fd5b82016080818503121561021b57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156108e7576108e7610871565b604052919050565b600082601f83011261090057600080fd5b813567ffffffffffffffff81111561091a5761091a610871565b61094b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016108a0565b81815284602083860101111561096057600080fd5b816020850160208301376000918101602001919091529392505050565b80151581146106c057600080fd5b80356106e78161097d565b6000806000606084860312156109ab57600080fd5b833567ffffffffffffffff8111156109c257600080fd5b6109ce868287016108ef565b9350506020840135915060408401356109e68161097d565b809150509250925092565b600067ffffffffffffffff821115610a0b57610a0b610871565b5060051b60200190565b600082601f830112610a2657600080fd5b8135610a39610a34826109f1565b6108a0565b8082825260208201915060208360051b860101925085831115610a5b57600080fd5b602085015b83811015610a78578035835260209283019201610a60565b5095945050505050565b600080600060608486031215610a9757600080fd5b833567ffffffffffffffff811115610aae57600080fd5b8401601f81018613610abf57600080fd5b8035610acd610a34826109f1565b8082825260208201915060208360051b850101925088831115610aef57600080fd5b602084015b83811015610b3157803567ffffffffffffffff811115610b1357600080fd5b610b228b6020838901016108ef565b84525060209283019201610af4565b509550505050602084013567ffffffffffffffff811115610b5157600080fd5b610b5d86828701610a15565b92505061071f6040850161098b565b600082610ba2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015273ffffffffffffffffffffffffffffffffffffffff610c2e836106c3565b16604082015273ffffffffffffffffffffffffffffffffffffffff610c55602084016106c3565b166060820152600080604084013590508060808401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610ca157600080fd5b830160208101903567ffffffffffffffff811115610cbe57600080fd5b803603821315610ccd57600080fd5b608060a08501526105e560c085018284610ba7565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610d1760a08301866107d9565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610d62578151865260209586019590910190600101610d44565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610dff577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610dea8583516107d9565b94506020938401939190910190600101610db0565b505050508281036040840152610e158186610d30565b915050610e26606083018415159052565b95945050505050565b600060208284031215610e4157600080fd5b815161021b8161097d565b60008251610e5e8184602087016107b5565b919091019291505056fea26469706673582212200208dfaef53d7ec7d471b3a513486f45b234e5fb6727c50beff735b8aa974ee464736f6c634300081a00335a657461436f6e6e6563746f724e6f6e4e617469766555706772616465546573742e736f6ca26469706673582212202fa47dc9fa1c8bdbb179684745b1ab2235c33f5e92cc8df9fd4d8cd5ef230e2964736f6c634300081a0033", } // ZetaConnectorNonNativeTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/zetaconnectornonnativeupgradetest.sol/zetaconnectornonnativeupgradetest.go b/v2/pkg/zetaconnectornonnativeupgradetest.sol/zetaconnectornonnativeupgradetest.go index 86fe76ff1..3ff7973b8 100644 --- a/v2/pkg/zetaconnectornonnativeupgradetest.sol/zetaconnectornonnativeupgradetest.go +++ b/v2/pkg/zetaconnectornonnativeupgradetest.sol/zetaconnectornonnativeupgradetest.go @@ -40,7 +40,7 @@ type RevertContext struct { // ZetaConnectorNonNativeUpgradeTestMetaData contains all meta data concerning the ZetaConnectorNonNativeUpgradeTest contract. var ZetaConnectorNonNativeUpgradeTestMetaData = &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\":\"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\":\"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\":\"initialize\",\"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\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"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\":\"updateTSSAddress\",\"inputs\":[{\"name\":\"newTSSAddress\",\"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\":\"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\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"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\":\"UpdatedZetaConnectorTSSAddress\",\"inputs\":[{\"name\":\"oldTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newTSSAddress\",\"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\":\"Withdrawn\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawnAndCalled\",\"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\":\"WithdrawnAndReverted\",\"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\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawnV2\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"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\":\"ERC1967InvalidImplementation\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967NonPayable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExceedsMaxSupply\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpectedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"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\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x60a060405230608052348015601357600080fd5b5060805161251961003d6000396000818161145701528181611480015261165601526125196000f3fe6080604052600436106101ac5760003560e01c80636f8728ad116100ec578063a217fddf1161008a578063d547741f11610064578063d547741f1461057e578063d5abeb011461059e578063e63ab1e9146105b4578063f8c8765e146105e857600080fd5b8063a217fddf146104df578063a783c789146104f4578063ad3cb1cc1461052857600080fd5b80638456cb59116100c65780638456cb591461041157806385f438c11461042657806391d148541461045a578063950837aa146104bf57600080fd5b80636f8728ad146103b15780636f8b44b0146103d1578063743e0c9b146103f157600080fd5b806336568abe1161015957806352d1902d1161013357806352d1902d146103255780635b1125911461033a5780635c975abb1461035a5780635e3e9fef1461039157600080fd5b806336568abe146102dd5780633f4ba83a146102fd5780634f1ef2861461031257600080fd5b806321e093b11161018a57806321e093b114610240578063248a9ca3146102605780632f2ff15d146102bd57600080fd5b806301ffc9a7146101b1578063106e6290146101e6578063116191b614610208575b600080fd5b3480156101bd57600080fd5b506101d16101cc366004611e67565b610608565b60405190151581526020015b60405180910390f35b3480156101f257600080fd5b50610206610201366004611ec5565b6106a1565b005b34801561021457600080fd5b50600054610228906001600160a01b031681565b6040516001600160a01b0390911681526020016101dd565b34801561024c57600080fd5b50600154610228906001600160a01b031681565b34801561026c57600080fd5b506102af61027b366004611ef8565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101dd565b3480156102c957600080fd5b506102066102d8366004611f11565b610758565b3480156102e957600080fd5b506102066102f8366004611f11565b6107a2565b34801561030957600080fd5b506102066107ee565b610206610320366004611f6c565b610823565b34801561033157600080fd5b506102af610842565b34801561034657600080fd5b50600254610228906001600160a01b031681565b34801561036657600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101d1565b34801561039d57600080fd5b506102066103ac3660046120bc565b610871565b3480156103bd57600080fd5b506102066103cc36600461211e565b6109bf565b3480156103dd57600080fd5b506102066103ec366004611ef8565b610b12565b3480156103fd57600080fd5b5061020661040c366004611ef8565b610b80565b34801561041d57600080fd5b50610206610c01565b34801561043257600080fd5b506102af7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b34801561046657600080fd5b506101d1610475366004611f11565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156104cb57600080fd5b506102066104da3660046121b6565b610c33565b3480156104eb57600080fd5b506102af600081565b34801561050057600080fd5b506102af7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561053457600080fd5b506105716040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101dd91906121f5565b34801561058a57600080fd5b50610206610599366004611f11565b610dc6565b3480156105aa57600080fd5b506102af60035481565b3480156105c057600080fd5b506102af7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b3480156105f457600080fd5b50610206610603366004612246565b610e0a565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061069b57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6106a9610fb5565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46106d381611036565b6106db611040565b6106e684848461109e565b836001600160a01b03167f3e35ef4326151011878c9e8e968a0f3913fe98ca68f72a1e0c2e9be13ffb3ee98460405161072191815260200190565b60405180910390a25061075360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461079281611036565b61079c838361120b565b50505050565b6001600160a01b03811633146107e4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61075382826112f8565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61081881611036565b6108206113bc565b50565b61082b61144c565b6108348261151c565b61083e8282611527565b5050565b600061084c61164b565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610879610fb5565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46108a381611036565b6108ab611040565b6000546108c2906001600160a01b0316868461109e565b6000546001546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692635131ab5992610917929116908a908a908a908a906004016122e3565b600060405180830381600087803b15801561093157600080fd5b505af1158015610945573d6000803e3d6000fd5b50505050856001600160a01b03167f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d86868660405161098693929190612326565b60405180910390a2506109b860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6109c7610fb5565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46109f181611036565b6109f9611040565b600054610a10906001600160a01b0316878561109e565b6000546001546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526001600160a01b039283169263aa0c0fc192610a67929116908b908b908b908b908a906004016123f1565b600060405180830381600087803b158015610a8157600080fd5b505af1158015610a95573d6000803e3d6000fd5b50505050866001600160a01b03167f5272d2fee39bff41b2e763562526315906046373ce08a7bacf76c3080d731ff087878786604051610ad89493929190612448565b60405180910390a250610b0a60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610b3c81611036565b610b44611040565b60038290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610b88611040565b6001546040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018390526001600160a01b03909116906379cc679090604401600060405180830381600087803b158015610bed57600080fd5b505af11580156109b8573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610c2b81611036565b6108206116ad565b6000610c3e81611036565b6001600160a01b038216610c7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254610cb5907f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4906001600160a01b03166112f8565b50600254610ced907f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb906001600160a01b03166112f8565b50610d187f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48361120b565b50610d437f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb8361120b565b50600254604080516001600160a01b03928316815291841660208301527f33770ab682353c17917ad3e667f05905fc8dda00671ef1ed33bef9bc8db0323e910160405180910390a150600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610e0081611036565b61079c83836112f8565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610e555750825b905060008267ffffffffffffffff166001148015610e725750303b155b905081158015610e80575080155b15610eb7576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610f185784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610f2489898989611726565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6003558315610faa5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b505050505050505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611030576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6108208133611a31565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff161561109c576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600354600160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111189190612474565b611122908461248d565b111561115a576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040517f1e458bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018590526044820184905290911690631e458bee90606401600060405180830381600087803b1580156111c857600080fd5b505af11580156111dc573d6000803e3d6000fd5b50505050505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166112ee576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556112a43390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061069b565b600091505061069b565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156112ee576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061069b565b6113c4611abe565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806114e557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114d97f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b1561109c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061083e81611036565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561159f575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261159c91810190612474565b60015b6115e5576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611641576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016115dc565b6107538383611b19565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461109c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116b5611040565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361142e565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156117715750825b905060008267ffffffffffffffff16600114801561178e5750303b155b90508115801561179c575080155b156117d3576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156118345784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038916158061185157506001600160a01b038816155b8061186357506001600160a01b038716155b8061187557506001600160a01b038616155b156118ac576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118b4611b6f565b6118bc611b77565b6118c4611b6f565b6118cc611b87565b600080546001600160a01b03808c167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316178355600180548c831690841617905560028054918b1691909216179055611927908761120b565b506119527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48861120b565b5061197d7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb8861120b565b506119a87f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8761120b565b506119d37f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8861120b565b508315610faa5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001610fa1565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff1661083e576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016115dc565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1661109c576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b2282611b97565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b67576107538282611c3f565b61083e611cb5565b61109c611ced565b611b7f611ced565b61109c611d54565b611b8f611ced565b61109c611d5c565b806001600160a01b03163b600003611be6576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016115dc565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611c5c91906124c7565b600060405180830381855af49150503d8060008114611c97576040519150601f19603f3d011682016040523d82523d6000602084013e611c9c565b606091505b5091509150611cac858383611dad565b95945050505050565b341561109c576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661109c576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111e5611ced565b611d64611ced565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b606082611dc257611dbd82611e25565b611e1e565b8151158015611dd957506001600160a01b0384163b155b15611e1b576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016115dc565b50805b9392505050565b805115611e355780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215611e7957600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611e1e57600080fd5b80356001600160a01b0381168114611ec057600080fd5b919050565b600080600060608486031215611eda57600080fd5b611ee384611ea9565b95602085013595506040909401359392505050565b600060208284031215611f0a57600080fd5b5035919050565b60008060408385031215611f2457600080fd5b82359150611f3460208401611ea9565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215611f7f57600080fd5b611f8883611ea9565b9150602083013567ffffffffffffffff811115611fa457600080fd5b8301601f81018513611fb557600080fd5b803567ffffffffffffffff811115611fcf57611fcf611f3d565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561203b5761203b611f3d565b60405281815282820160200187101561205357600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008083601f84011261208557600080fd5b50813567ffffffffffffffff81111561209d57600080fd5b6020830191508360208285010111156120b557600080fd5b9250929050565b6000806000806000608086880312156120d457600080fd5b6120dd86611ea9565b945060208601359350604086013567ffffffffffffffff81111561210057600080fd5b61210c88828901612073565b96999598509660600135949350505050565b60008060008060008060a0878903121561213757600080fd5b61214087611ea9565b955060208701359450604087013567ffffffffffffffff81111561216357600080fd5b61216f89828a01612073565b90955093505060608701359150608087013567ffffffffffffffff81111561219657600080fd5b87016080818a0312156121a857600080fd5b809150509295509295509295565b6000602082840312156121c857600080fd5b611e1e82611ea9565b60005b838110156121ec5781810151838201526020016121d4565b50506000910152565b60208152600082518060208401526122148160408501602087016121d1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000806000806080858703121561225c57600080fd5b61226585611ea9565b935061227360208601611ea9565b925061228160408601611ea9565b915061228f60608601611ea9565b905092959194509250565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015260806060820152600061231b60808301848661229a565b979650505050505050565b838152604060208201526000611cac60408301848661229a565b6001600160a01b0361235182611ea9565b1682526001600160a01b0361236860208301611ea9565b1660208301526040818101359083015260006060820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe10181126123b057600080fd5b820160208101903567ffffffffffffffff8111156123cd57600080fd5b8036038213156123dc57600080fd5b60806060860152611cac60808601828461229a565b6001600160a01b03871681526001600160a01b038616602082015284604082015260a06060820152600061242960a08301858761229a565b828103608084015261243b8185612340565b9998505050505050505050565b84815260606020820152600061246260608301858761229a565b828103604084015261231b8185612340565b60006020828403121561248657600080fd5b5051919050565b8082018082111561069b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082516124d98184602087016121d1565b919091019291505056fea2646970667358221220eba4c2f5dade5ff34217048d440008758a00a1202245b68fa99aa106f7b708de64736f6c634300081a0033", + Bin: "0x60a060405230608052348015601357600080fd5b5060805161251961003d6000396000818161145701528181611480015261165601526125196000f3fe6080604052600436106101ac5760003560e01c80636f8728ad116100ec578063a217fddf1161008a578063d547741f11610064578063d547741f1461057e578063d5abeb011461059e578063e63ab1e9146105b4578063f8c8765e146105e857600080fd5b8063a217fddf146104df578063a783c789146104f4578063ad3cb1cc1461052857600080fd5b80638456cb59116100c65780638456cb591461041157806385f438c11461042657806391d148541461045a578063950837aa146104bf57600080fd5b80636f8728ad146103b15780636f8b44b0146103d1578063743e0c9b146103f157600080fd5b806336568abe1161015957806352d1902d1161013357806352d1902d146103255780635b1125911461033a5780635c975abb1461035a5780635e3e9fef1461039157600080fd5b806336568abe146102dd5780633f4ba83a146102fd5780634f1ef2861461031257600080fd5b806321e093b11161018a57806321e093b114610240578063248a9ca3146102605780632f2ff15d146102bd57600080fd5b806301ffc9a7146101b1578063106e6290146101e6578063116191b614610208575b600080fd5b3480156101bd57600080fd5b506101d16101cc366004611e67565b610608565b60405190151581526020015b60405180910390f35b3480156101f257600080fd5b50610206610201366004611ec5565b6106a1565b005b34801561021457600080fd5b50600054610228906001600160a01b031681565b6040516001600160a01b0390911681526020016101dd565b34801561024c57600080fd5b50600154610228906001600160a01b031681565b34801561026c57600080fd5b506102af61027b366004611ef8565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101dd565b3480156102c957600080fd5b506102066102d8366004611f11565b610758565b3480156102e957600080fd5b506102066102f8366004611f11565b6107a2565b34801561030957600080fd5b506102066107ee565b610206610320366004611f6c565b610823565b34801561033157600080fd5b506102af610842565b34801561034657600080fd5b50600254610228906001600160a01b031681565b34801561036657600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101d1565b34801561039d57600080fd5b506102066103ac3660046120bc565b610871565b3480156103bd57600080fd5b506102066103cc36600461211e565b6109bf565b3480156103dd57600080fd5b506102066103ec366004611ef8565b610b12565b3480156103fd57600080fd5b5061020661040c366004611ef8565b610b80565b34801561041d57600080fd5b50610206610c01565b34801561043257600080fd5b506102af7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b34801561046657600080fd5b506101d1610475366004611f11565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156104cb57600080fd5b506102066104da3660046121b6565b610c33565b3480156104eb57600080fd5b506102af600081565b34801561050057600080fd5b506102af7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561053457600080fd5b506105716040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101dd91906121f5565b34801561058a57600080fd5b50610206610599366004611f11565b610dc6565b3480156105aa57600080fd5b506102af60035481565b3480156105c057600080fd5b506102af7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b3480156105f457600080fd5b50610206610603366004612246565b610e0a565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061069b57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6106a9610fb5565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46106d381611036565b6106db611040565b6106e684848461109e565b836001600160a01b03167f3e35ef4326151011878c9e8e968a0f3913fe98ca68f72a1e0c2e9be13ffb3ee98460405161072191815260200190565b60405180910390a25061075360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461079281611036565b61079c838361120b565b50505050565b6001600160a01b03811633146107e4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61075382826112f8565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61081881611036565b6108206113bc565b50565b61082b61144c565b6108348261151c565b61083e8282611527565b5050565b600061084c61164b565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610879610fb5565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46108a381611036565b6108ab611040565b6000546108c2906001600160a01b0316868461109e565b6000546001546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692635131ab5992610917929116908a908a908a908a906004016122e3565b600060405180830381600087803b15801561093157600080fd5b505af1158015610945573d6000803e3d6000fd5b50505050856001600160a01b03167f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d86868660405161098693929190612326565b60405180910390a2506109b860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6109c7610fb5565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46109f181611036565b6109f9611040565b600054610a10906001600160a01b0316878561109e565b6000546001546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526001600160a01b039283169263aa0c0fc192610a67929116908b908b908b908b908a906004016123f1565b600060405180830381600087803b158015610a8157600080fd5b505af1158015610a95573d6000803e3d6000fd5b50505050866001600160a01b03167f5272d2fee39bff41b2e763562526315906046373ce08a7bacf76c3080d731ff087878786604051610ad89493929190612448565b60405180910390a250610b0a60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610b3c81611036565b610b44611040565b60038290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610b88611040565b6001546040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018390526001600160a01b03909116906379cc679090604401600060405180830381600087803b158015610bed57600080fd5b505af11580156109b8573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610c2b81611036565b6108206116ad565b6000610c3e81611036565b6001600160a01b038216610c7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254610cb5907f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4906001600160a01b03166112f8565b50600254610ced907f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb906001600160a01b03166112f8565b50610d187f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48361120b565b50610d437f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb8361120b565b50600254604080516001600160a01b03928316815291841660208301527f33770ab682353c17917ad3e667f05905fc8dda00671ef1ed33bef9bc8db0323e910160405180910390a150600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610e0081611036565b61079c83836112f8565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610e555750825b905060008267ffffffffffffffff166001148015610e725750303b155b905081158015610e80575080155b15610eb7576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610f185784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610f2489898989611726565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6003558315610faa5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b505050505050505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611030576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6108208133611a31565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff161561109c576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600354600160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111189190612474565b611122908461248d565b111561115a576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040517f1e458bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018590526044820184905290911690631e458bee90606401600060405180830381600087803b1580156111c857600080fd5b505af11580156111dc573d6000803e3d6000fd5b50505050505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166112ee576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556112a43390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061069b565b600091505061069b565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156112ee576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061069b565b6113c4611abe565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806114e557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114d97f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b1561109c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061083e81611036565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561159f575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261159c91810190612474565b60015b6115e5576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611641576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016115dc565b6107538383611b19565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461109c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116b5611040565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361142e565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156117715750825b905060008267ffffffffffffffff16600114801561178e5750303b155b90508115801561179c575080155b156117d3576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156118345784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038916158061185157506001600160a01b038816155b8061186357506001600160a01b038716155b8061187557506001600160a01b038616155b156118ac576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118b4611b6f565b6118bc611b77565b6118c4611b6f565b6118cc611b87565b600080546001600160a01b03808c167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316178355600180548c831690841617905560028054918b1691909216179055611927908761120b565b506119527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48861120b565b5061197d7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb8861120b565b506119a87f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8761120b565b506119d37f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8861120b565b508315610faa5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001610fa1565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff1661083e576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016115dc565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1661109c576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b2282611b97565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b67576107538282611c3f565b61083e611cb5565b61109c611ced565b611b7f611ced565b61109c611d54565b611b8f611ced565b61109c611d5c565b806001600160a01b03163b600003611be6576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016115dc565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611c5c91906124c7565b600060405180830381855af49150503d8060008114611c97576040519150601f19603f3d011682016040523d82523d6000602084013e611c9c565b606091505b5091509150611cac858383611dad565b95945050505050565b341561109c576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661109c576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111e5611ced565b611d64611ced565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b606082611dc257611dbd82611e25565b611e1e565b8151158015611dd957506001600160a01b0384163b155b15611e1b576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016115dc565b50805b9392505050565b805115611e355780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215611e7957600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611e1e57600080fd5b80356001600160a01b0381168114611ec057600080fd5b919050565b600080600060608486031215611eda57600080fd5b611ee384611ea9565b95602085013595506040909401359392505050565b600060208284031215611f0a57600080fd5b5035919050565b60008060408385031215611f2457600080fd5b82359150611f3460208401611ea9565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215611f7f57600080fd5b611f8883611ea9565b9150602083013567ffffffffffffffff811115611fa457600080fd5b8301601f81018513611fb557600080fd5b803567ffffffffffffffff811115611fcf57611fcf611f3d565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561203b5761203b611f3d565b60405281815282820160200187101561205357600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008083601f84011261208557600080fd5b50813567ffffffffffffffff81111561209d57600080fd5b6020830191508360208285010111156120b557600080fd5b9250929050565b6000806000806000608086880312156120d457600080fd5b6120dd86611ea9565b945060208601359350604086013567ffffffffffffffff81111561210057600080fd5b61210c88828901612073565b96999598509660600135949350505050565b60008060008060008060a0878903121561213757600080fd5b61214087611ea9565b955060208701359450604087013567ffffffffffffffff81111561216357600080fd5b61216f89828a01612073565b90955093505060608701359150608087013567ffffffffffffffff81111561219657600080fd5b87016080818a0312156121a857600080fd5b809150509295509295509295565b6000602082840312156121c857600080fd5b611e1e82611ea9565b60005b838110156121ec5781810151838201526020016121d4565b50506000910152565b60208152600082518060208401526122148160408501602087016121d1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000806000806080858703121561225c57600080fd5b61226585611ea9565b935061227360208601611ea9565b925061228160408601611ea9565b915061228f60608601611ea9565b905092959194509250565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015260806060820152600061231b60808301848661229a565b979650505050505050565b838152604060208201526000611cac60408301848661229a565b6001600160a01b0361235182611ea9565b1682526001600160a01b0361236860208301611ea9565b1660208301526040818101359083015260006060820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe10181126123b057600080fd5b820160208101903567ffffffffffffffff8111156123cd57600080fd5b8036038213156123dc57600080fd5b60806060860152611cac60808601828461229a565b6001600160a01b03871681526001600160a01b038616602082015284604082015260a06060820152600061242960a08301858761229a565b828103608084015261243b8185612340565b9998505050505050505050565b84815260606020820152600061246260608301858761229a565b828103604084015261231b8185612340565b60006020828403121561248657600080fd5b5051919050565b8082018082111561069b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082516124d98184602087016121d1565b919091019291505056fea26469706673582212204813daad458b8c103dfebd07f6ec74ee1d40a7eec885cae6963c827c7daf36af64736f6c634300081a0033", } // ZetaConnectorNonNativeUpgradeTestABI 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 d02487af3..20848dbfd 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\":\"GAS_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"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\":\"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\":\"setName\",\"inputs\":[{\"name\":\"newName\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setSymbol\",\"inputs\":[{\"name\":\"newSymbol\",\"type\":\"string\",\"internalType\":\"string\"}],\"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\":\"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\":\"function\",\"name\":\"withdrawGasFeeWithGasLimit\",\"inputs\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"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: "0x60c060405234801561001057600080fd5b5060405161207238038061207283398101604081905261002f916101f0565b6001600160a01b038216158061004c57506001600160a01b038116155b1561006a5760405163d92e233d60e01b815260040160405180910390fd5b60066100768982610342565b5060076100838882610342565b506008805460ff191660ff881617905560808590528360028111156100aa576100aa610400565b60a08160028111156100be576100be610400565b905250600192909255600080546001600160a01b039283166001600160a01b0319909116179055600880549190921661010002610100600160a81b0319909116179055506104169350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261013357600080fd5b81516001600160401b0381111561014c5761014c61010c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561017a5761017a61010c565b60405281815283820160200185101561019257600080fd5b60005b828110156101b157602081860181015183830182015201610195565b506000918101602001919091529392505050565b8051600381106101d457600080fd5b919050565b80516001600160a01b03811681146101d457600080fd5b600080600080600080600080610100898b03121561020d57600080fd5b88516001600160401b0381111561022357600080fd5b61022f8b828c01610122565b60208b015190995090506001600160401b0381111561024d57600080fd5b6102598b828c01610122565b975050604089015160ff8116811461027057600080fd5b60608a0151909650945061028660808a016101c5565b60a08a0151909450925061029c60c08a016101d9565b91506102aa60e08a016101d9565b90509295985092959890939650565b600181811c908216806102cd57607f821691505b6020821081036102ed57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561033d57806000526020600020601f840160051c8101602085101561031a5750805b601f840160051c820191505b8181101561033a5760008155600101610326565b50505b505050565b81516001600160401b0381111561035b5761035b61010c565b61036f8161036984546102b9565b846102f3565b6020601f8211600181146103a3576000831561038b5750848201515b600019600385901b1c1916600184901b17845561033a565b600084815260208120601f198516915b828110156103d357878501518255602094850194600190920191016103b3565b50848210156103f15786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a051611c1b61045760003960006103440152600081816102f001528181610bdc01528181610ce201528181610efe01526110040152611c1b6000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c806395d89b41116100f9578063ccc7759911610097578063eddeb12311610071578063eddeb12314610461578063f2441b3214610474578063f687d12a14610494578063fc5fecd5146104a757600080fd5b8063ccc77599146103d4578063d9eeebed146103e7578063dd62ed3e1461041b57600080fd5b8063b84c8246116100d3578063b84c824614610386578063c47f00271461039b578063c7012626146103ae578063c835d7cc146103c157600080fd5b806395d89b4114610337578063a3413d031461033f578063a9059cbb1461037357600080fd5b80633ce4a5bc116101665780634d8943bb116101405780634d8943bb146102ac57806370a08231146102b557806385e1f4d0146102eb5780638b851b951461031257600080fd5b80633ce4a5bc1461024657806342966c681461028657806347e7ef241461029957600080fd5b806318160ddd1161019757806318160ddd1461021657806323b872dd1461021e578063313ce5671461023157600080fd5b806306fdde03146101be578063091d2788146101dc578063095ea7b3146101f3575b600080fd5b6101c66104ba565b6040516101d39190611648565b60405180910390f35b6101e560015481565b6040519081526020016101d3565b610206610201366004611687565b61054c565b60405190151581526020016101d3565b6005546101e5565b61020661022c3660046116b3565b610563565b60085460405160ff90911681526020016101d3565b61026173735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d3565b6102066102943660046116f4565b6105fa565b6102066102a7366004611687565b61060e565b6101e560025481565b6101e56102c336600461170d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6101e57f000000000000000000000000000000000000000000000000000000000000000081565b60085461026190610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6101c6610767565b6103667f000000000000000000000000000000000000000000000000000000000000000081565b6040516101d3919061172a565b610206610381366004611687565b610776565b610399610394366004611832565b610783565b005b6103996103a9366004611832565b6107e0565b6102066103bc366004611883565b610839565b6103996103cf36600461170d565b610988565b6103996103e236600461170d565b610a9c565b6103ef610bb0565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101d3565b6101e56104293660046118dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205490565b61039961046f3660046116f4565b610dce565b6000546102619073ffffffffffffffffffffffffffffffffffffffff1681565b6103996104a23660046116f4565b610e50565b6103ef6104b53660046116f4565b610ed2565b6060600680546104c990611915565b80601f01602080910402602001604051908101604052809291908181526020018280546104f590611915565b80156105425780601f1061051757610100808354040283529160200191610542565b820191906000526020600020905b81548152906001019060200180831161052557829003601f168201915b5050505050905090565b60006105593384846110ee565b5060015b92915050565b60006105708484846111f7565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460209081526040808320338452909152902054828110156105db576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105ef85336105ea8685611997565b6110ee565b506001949350505050565b600061060633836113b2565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab1480159061064c575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156106755750600854610100900473ffffffffffffffffffffffffffffffffffffffff163314155b156106ac576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106b683836114f4565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526107569186906119aa565b60405180910390a250600192915050565b6060600780546104c990611915565b60006105593384846111f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab146107d0576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60076107dc8282611a1b565b5050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461082d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60066107dc8282611a1b565b6000806000610846610bb0565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156108d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fc9190611b34565b610932576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61093c33856113b2565b60025460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161097591899189918791611b56565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146109d5576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a22576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610ae9576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610b36576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c679190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610cb6576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d699190611ba2565b905080600003610da5576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060025460015483610db89190611bbb565b610dc29190611bd2565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e1b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610a91565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e9d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610f65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f899190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610fd8576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015611067573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108b9190611ba2565b9050806000036110c7576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000906110d78784611bbb565b6110e19190611bd2565b9296929550919350505050565b73ffffffffffffffffffffffffffffffffffffffff831661113b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611188576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611244576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611291576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040902054818110156112f1576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112fb8282611997565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260036020526040808220939093559085168152908120805484929061133e908490611bd2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113a491815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff82166113ff576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260409020548181101561145f576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114698282611997565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260036020526040812091909155600580548492906114a4908490611997565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016111ea565b73ffffffffffffffffffffffffffffffffffffffff8216611541576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008282546115539190611bd2565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805483929061158d908490611bd2565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561160a576020818501810151868301820152016115ee565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061165b60208301846115e4565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461168457600080fd5b50565b6000806040838503121561169a57600080fd5b82356116a581611662565b946020939093013593505050565b6000806000606084860312156116c857600080fd5b83356116d381611662565b925060208401356116e381611662565b929592945050506040919091013590565b60006020828403121561170657600080fd5b5035919050565b60006020828403121561171f57600080fd5b813561165b81611662565b6020810160038310611765577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff8411156117b5576117b561176b565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff821117156118025761180261176b565b60405283815290508082840185101561181a57600080fd5b83836020830137600060208583010152509392505050565b60006020828403121561184457600080fd5b813567ffffffffffffffff81111561185b57600080fd5b8201601f8101841361186c57600080fd5b61187b8482356020840161179a565b949350505050565b6000806040838503121561189657600080fd5b823567ffffffffffffffff8111156118ad57600080fd5b8301601f810185136118be57600080fd5b6118cd8582356020840161179a565b95602094909401359450505050565b600080604083850312156118ef57600080fd5b82356118fa81611662565b9150602083013561190a81611662565b809150509250929050565b600181811c9082168061192957607f821691505b602082108103611962577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561055d5761055d611968565b6040815260006119bd60408301856115e4565b90508260208301529392505050565b601f821115611a1657806000526020600020601f840160051c810160208510156119f35750805b601f840160051c820191505b81811015611a1357600081556001016119ff565b50505b505050565b815167ffffffffffffffff811115611a3557611a3561176b565b611a4981611a438454611915565b846119cc565b6020601f821160018114611a9b5760008315611a655750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611a13565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015611ae95787850151825560209485019460019092019101611ac9565b5084821015611b2557868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b600060208284031215611b4657600080fd5b8151801515811461165b57600080fd5b608081526000611b6960808301876115e4565b6020830195909552506040810192909252606090910152919050565b600060208284031215611b9757600080fd5b815161165b81611662565b600060208284031215611bb457600080fd5b5051919050565b808202811582820484141761055d5761055d611968565b8082018082111561055d5761055d61196856fea2646970667358221220d6ba834f25782689ed13bffb6ac9ff2c8d3b5342c94a515aea8197a76070ad3f64736f6c634300081a0033", + Bin: "0x60c060405234801561001057600080fd5b5060405161207238038061207283398101604081905261002f916101f0565b6001600160a01b038216158061004c57506001600160a01b038116155b1561006a5760405163d92e233d60e01b815260040160405180910390fd5b60066100768982610342565b5060076100838882610342565b506008805460ff191660ff881617905560808590528360028111156100aa576100aa610400565b60a08160028111156100be576100be610400565b905250600192909255600080546001600160a01b039283166001600160a01b0319909116179055600880549190921661010002610100600160a81b0319909116179055506104169350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261013357600080fd5b81516001600160401b0381111561014c5761014c61010c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561017a5761017a61010c565b60405281815283820160200185101561019257600080fd5b60005b828110156101b157602081860181015183830182015201610195565b506000918101602001919091529392505050565b8051600381106101d457600080fd5b919050565b80516001600160a01b03811681146101d457600080fd5b600080600080600080600080610100898b03121561020d57600080fd5b88516001600160401b0381111561022357600080fd5b61022f8b828c01610122565b60208b015190995090506001600160401b0381111561024d57600080fd5b6102598b828c01610122565b975050604089015160ff8116811461027057600080fd5b60608a0151909650945061028660808a016101c5565b60a08a0151909450925061029c60c08a016101d9565b91506102aa60e08a016101d9565b90509295985092959890939650565b600181811c908216806102cd57607f821691505b6020821081036102ed57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561033d57806000526020600020601f840160051c8101602085101561031a5750805b601f840160051c820191505b8181101561033a5760008155600101610326565b50505b505050565b81516001600160401b0381111561035b5761035b61010c565b61036f8161036984546102b9565b846102f3565b6020601f8211600181146103a3576000831561038b5750848201515b600019600385901b1c1916600184901b17845561033a565b600084815260208120601f198516915b828110156103d357878501518255602094850194600190920191016103b3565b50848210156103f15786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a051611c1b61045760003960006103440152600081816102f001528181610bdc01528181610ce201528181610efe01526110040152611c1b6000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c806395d89b41116100f9578063ccc7759911610097578063eddeb12311610071578063eddeb12314610461578063f2441b3214610474578063f687d12a14610494578063fc5fecd5146104a757600080fd5b8063ccc77599146103d4578063d9eeebed146103e7578063dd62ed3e1461041b57600080fd5b8063b84c8246116100d3578063b84c824614610386578063c47f00271461039b578063c7012626146103ae578063c835d7cc146103c157600080fd5b806395d89b4114610337578063a3413d031461033f578063a9059cbb1461037357600080fd5b80633ce4a5bc116101665780634d8943bb116101405780634d8943bb146102ac57806370a08231146102b557806385e1f4d0146102eb5780638b851b951461031257600080fd5b80633ce4a5bc1461024657806342966c681461028657806347e7ef241461029957600080fd5b806318160ddd1161019757806318160ddd1461021657806323b872dd1461021e578063313ce5671461023157600080fd5b806306fdde03146101be578063091d2788146101dc578063095ea7b3146101f3575b600080fd5b6101c66104ba565b6040516101d39190611648565b60405180910390f35b6101e560015481565b6040519081526020016101d3565b610206610201366004611687565b61054c565b60405190151581526020016101d3565b6005546101e5565b61020661022c3660046116b3565b610563565b60085460405160ff90911681526020016101d3565b61026173735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d3565b6102066102943660046116f4565b6105fa565b6102066102a7366004611687565b61060e565b6101e560025481565b6101e56102c336600461170d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6101e57f000000000000000000000000000000000000000000000000000000000000000081565b60085461026190610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6101c6610767565b6103667f000000000000000000000000000000000000000000000000000000000000000081565b6040516101d3919061172a565b610206610381366004611687565b610776565b610399610394366004611832565b610783565b005b6103996103a9366004611832565b6107e0565b6102066103bc366004611883565b610839565b6103996103cf36600461170d565b610988565b6103996103e236600461170d565b610a9c565b6103ef610bb0565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101d3565b6101e56104293660046118dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205490565b61039961046f3660046116f4565b610dce565b6000546102619073ffffffffffffffffffffffffffffffffffffffff1681565b6103996104a23660046116f4565b610e50565b6103ef6104b53660046116f4565b610ed2565b6060600680546104c990611915565b80601f01602080910402602001604051908101604052809291908181526020018280546104f590611915565b80156105425780601f1061051757610100808354040283529160200191610542565b820191906000526020600020905b81548152906001019060200180831161052557829003601f168201915b5050505050905090565b60006105593384846110ee565b5060015b92915050565b60006105708484846111f7565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460209081526040808320338452909152902054828110156105db576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105ef85336105ea8685611997565b6110ee565b506001949350505050565b600061060633836113b2565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab1480159061064c575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156106755750600854610100900473ffffffffffffffffffffffffffffffffffffffff163314155b156106ac576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106b683836114f4565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526107569186906119aa565b60405180910390a250600192915050565b6060600780546104c990611915565b60006105593384846111f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab146107d0576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60076107dc8282611a1b565b5050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461082d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60066107dc8282611a1b565b6000806000610846610bb0565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156108d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fc9190611b34565b610932576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61093c33856113b2565b60025460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161097591899189918791611b56565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146109d5576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a22576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610ae9576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610b36576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c679190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610cb6576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d699190611ba2565b905080600003610da5576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060025460015483610db89190611bbb565b610dc29190611bd2565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e1b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610a91565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e9d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610f65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f899190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610fd8576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015611067573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108b9190611ba2565b9050806000036110c7576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000906110d78784611bbb565b6110e19190611bd2565b9296929550919350505050565b73ffffffffffffffffffffffffffffffffffffffff831661113b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611188576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611244576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611291576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040902054818110156112f1576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112fb8282611997565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260036020526040808220939093559085168152908120805484929061133e908490611bd2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113a491815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff82166113ff576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260409020548181101561145f576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114698282611997565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260036020526040812091909155600580548492906114a4908490611997565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016111ea565b73ffffffffffffffffffffffffffffffffffffffff8216611541576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008282546115539190611bd2565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805483929061158d908490611bd2565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561160a576020818501810151868301820152016115ee565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061165b60208301846115e4565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461168457600080fd5b50565b6000806040838503121561169a57600080fd5b82356116a581611662565b946020939093013593505050565b6000806000606084860312156116c857600080fd5b83356116d381611662565b925060208401356116e381611662565b929592945050506040919091013590565b60006020828403121561170657600080fd5b5035919050565b60006020828403121561171f57600080fd5b813561165b81611662565b6020810160038310611765577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff8411156117b5576117b561176b565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff821117156118025761180261176b565b60405283815290508082840185101561181a57600080fd5b83836020830137600060208583010152509392505050565b60006020828403121561184457600080fd5b813567ffffffffffffffff81111561185b57600080fd5b8201601f8101841361186c57600080fd5b61187b8482356020840161179a565b949350505050565b6000806040838503121561189657600080fd5b823567ffffffffffffffff8111156118ad57600080fd5b8301601f810185136118be57600080fd5b6118cd8582356020840161179a565b95602094909401359450505050565b600080604083850312156118ef57600080fd5b82356118fa81611662565b9150602083013561190a81611662565b809150509250929050565b600181811c9082168061192957607f821691505b602082108103611962577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561055d5761055d611968565b6040815260006119bd60408301856115e4565b90508260208301529392505050565b601f821115611a1657806000526020600020601f840160051c810160208510156119f35750805b601f840160051c820191505b81811015611a1357600081556001016119ff565b50505b505050565b815167ffffffffffffffff811115611a3557611a3561176b565b611a4981611a438454611915565b846119cc565b6020601f821160018114611a9b5760008315611a655750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611a13565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015611ae95787850151825560209485019460019092019101611ac9565b5084821015611b2557868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b600060208284031215611b4657600080fd5b8151801515811461165b57600080fd5b608081526000611b6960808301876115e4565b6020830195909552506040810192909252606090910152919050565b600060208284031215611b9757600080fd5b815161165b81611662565b600060208284031215611bb457600080fd5b5051919050565b808202811582820484141761055d5761055d611968565b8082018082111561055d5761055d61196856fea26469706673582212202a06c5d72036d88c206ff2bfdd016b3ce8555bc0090e8bb5487bc61ea043732b64736f6c634300081a0033", } // 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 ebc25520f..95a5e9f71 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\":\"testApproveFailsIfRecipientIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"testDepositFailsIfRecipientIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfSenderIsNotGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTransfer\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTransferFailsIfNoBalance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTransferFailsIfRecipientIsZeroAddress\",\"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\":\"testUpdateGasLimitFailsIfSenderIsNotProtocol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateGatewayAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateGatewayAddressFailsIfSenderIsNotProtocol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateGatewayAddressFailsIfZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateNameAndSymbol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateNameAndSymbolFailsIfSenderIsNotProtocol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateProtocolFlatFee\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateProtocolFlatFeeFailsIfSenderIsNotProtocol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateSystemContractAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateSystemContractAddressFailsIfSenderIsNotProtocol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateSystemContractAddressFailsIfZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdraw\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawFailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawFailsIfNoBalance\",\"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: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061eb078061003c6000396000f3fe608060405234801561001057600080fd5b506004361061030a5760003560e01c80638ce7ef051161019c578063d1fd3291116100ee578063dfbdf60011610097578063f1f87f4011610071578063f1f87f40146104c3578063f2413096146104cb578063fa7626d4146104d357600080fd5b8063dfbdf600146104ab578063e13aba48146104b3578063e20c9f71146104bb57600080fd5b8063d591221f116100c8578063d591221f14610493578063d97136a21461049b578063dcba486a146104a357600080fd5b8063d1fd32911461047b578063d27b042714610483578063d509b16c1461048b57600080fd5b8063b0464fdc11610150578063ba414fa61161012a578063ba414fa614610453578063c35f9d1d1461046b578063d04cda981461047357600080fd5b8063b0464fdc1461043b578063b5508aa914610443578063b79cad091461044b57600080fd5b806392a68b8d1161018157806392a68b8d14610423578063a4aa6c7c1461042b578063ae9687dc1461043357600080fd5b80638ce7ef0514610406578063916a17c61461040e57600080fd5b80633f7286f4116102605780636ff45850116102095780637f924c4e116101e35780637f924c4e146103e157806380326680146103e957806385226c81146103f157600080fd5b80636ff45850146103c957806370557298146103d15780637ee68316146103d957600080fd5b80635539d92e1161023a5780635539d92e146103a45780635f01db7e146103ac57806366d9a9a0146103b457600080fd5b80633f7286f41461038c5780634cfc0aaa14610394578063513999621461039c57600080fd5b806328438826116102c2578063367e31231161029c578063367e3123146103745780633be9ec801461037c5780633e5e3c231461038457600080fd5b8063284388261461034f5780632ade3880146103575780632f6254fc1461036c57600080fd5b80630ea7e563116102f35780630ea7e563146103215780631142744e146103295780631ed7831c1461033157600080fd5b80630809dfef1461030f5780630a9254e414610319575b600080fd5b6103176104e0565b005b61031761066e565b610317610d6a565b610317610e53565b610339610f37565b6040516103469190619737565b60405180910390f35b610317610f99565b61035f6111e4565b60405161034691906197d3565b610317611326565b610317611497565b610317611569565b610339611756565b6103396117b6565b610317611816565b6103176118ef565b610317611c6c565b610317611e99565b6103bc612006565b6040516103469190619939565b610317612188565b610317612398565b6103176125e8565b610317612a79565b610317612c9d565b6103f9612d71565b60405161034691906199d7565b610317612e41565b610416613041565b6040516103469190619a4e565b61031761313c565b61031761320f565b6103176133c4565b610416613651565b6103f961374c565b61031761381c565b61045b613bae565b6040519015158152602001610346565b610317613c82565b610317613d54565b610317613e98565b610317613fdb565b61031761411e565b6103176147b2565b610317614896565b610317614a1c565b610317614c9f565b610317614de2565b61033961508c565b6103176150ec565b610317615232565b601f5461045b9060ff1681565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561053957600080fd5b505af115801561054d573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156105bd57600080fd5b505af11580156105d1573d6000803e3d6000fd5b5050601f546040517f47e7ef2400000000000000000000000000000000000000000000000000000000815260006004820152620186a060248201526101009091046001600160a01b031692506347e7ef2491506044015b6020604051808303816000875af1158015610647573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066b9190619ae5565b50565b602480547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602580549091166112341790556040516106b490619657565b604051809103906000f0801580156106d0573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600f81527f476174657761795a45564d2e736f6c0000000000000000000000000000000000602082015260248054925190810193909352921660448201526107b4919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc9550000000000000000000000000000000000000000000000000000000017905261548e565b602280546001600160a01b03929092167fffffffffffffffffffffffff00000000000000000000000000000000000000009283168117909155602180549092168117909155604080517f2722feee0000000000000000000000000000000000000000000000000000000081529051632722feee916004808201926020929091908290030181865afa15801561084d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108719190619b23565b602680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691821790556040517f06447d560000000000000000000000000000000000000000000000000000000081526004810191909152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b15801561090f57600080fd5b505af1158015610923573d6000803e3d6000fd5b50505050600080600060405161093890619664565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610974573d6000803e3d6000fd5b50602080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556021546040516012936001938493600093919216906109ca90619671565b6109d996959493929190619b3e565b604051809103906000f0801580156109f5573d6000803e3d6000fd5b50601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b03938416810291909117918290556020546040517fee2815ba00000000000000000000000000000000000000000000000000000000815260016004820152919092048316602482015291169063ee2815ba90604401600060405180830381600087803b158015610a9557600080fd5b505af1158015610aa9573d6000803e3d6000fd5b50506020546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b158015610b1357600080fd5b505af1158015610b27573d6000803e3d6000fd5b50506026546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610ba757600080fd5b505af1158015610bbb573d6000803e3d6000fd5b50506022546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610c3b57600080fd5b505af1158015610c4f573d6000803e3d6000fd5b5050601f54602480546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09281019290925261010090920490911692506347e7ef2491506044016020604051808303816000875af1158015610ccd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf19190619ae5565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610d5057600080fd5b505af1158015610d64573d6000803e3d6000fd5b50505050565b604051630618f58760e51b81527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015610dd657600080fd5b505af1158015610dea573d6000803e3d6000fd5b5050601f546040517fc835d7cc00000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063c835d7cc91506024015b600060405180830381600087803b158015610d5057600080fd5b604051630618f58760e51b81527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015610ebf57600080fd5b505af1158015610ed3573d6000803e3d6000fd5b5050601f54602480546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09281019290925261010090920490911692506347e7ef249150604401610628565b60606016805480602002602001604051908101604052809291908181526020018280548015610f8f57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610f71575b5050505050905090565b601f546025546040516370a0823160e01b81526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015610fee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110129190619c33565b905061101f6000826154ad565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015611097573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110bb9190619ae5565b50604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561112857600080fd5b505af115801561113c573d6000803e3d6000fd5b5050601f546025546040517f23b872dd000000000000000000000000000000000000000000000000000000008152600060048201526001600160a01b039182166024820152604481018690526101009092041692506323b872dd91506064015b6020604051808303816000875af11580156111bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111df9190619ae5565b505050565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561131d57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561130657838290600052602060002001805461127990619c4c565b80601f01602080910402602001604051908101604052809291908181526020018280546112a590619c4c565b80156112f25780601f106112c7576101008083540402835291602001916112f2565b820191906000526020600020905b8154815290600101906020018083116112d557829003601f168201915b50505050508152602001906001019061125a565b505050508152505081526020019060010190611208565b50505050905090565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561137f57600080fd5b505af1158015611393573d6000803e3d6000fd5b5050601f546040517fc835d7cc00000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063c835d7cc9150602401600060405180830381600087803b1580156113fb57600080fd5b505af115801561140f573d6000803e3d6000fd5b50505050611495601f60019054906101000a90046001600160a01b03166001600160a01b031663f2441b326040518163ffffffff1660e01b8152600401602060405180830381865afa158015611469573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148d9190619b23565b613211615535565b565b604051630618f58760e51b81527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561150357600080fd5b505af1158015611517573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063eddeb1239150602401610e39565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156115c257600080fd5b505af11580156115d6573d6000803e3d6000fd5b50506020546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820152600060248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b15801561164057600080fd5b505af1158015611654573d6000803e3d6000fd5b5050604051630618f58760e51b81527fe661aed0000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b1580156116c557600080fd5b505af11580156116d9573d6000803e3d6000fd5b50505050600080601f60019054906101000a90046001600160a01b03166001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611732573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d649190619c99565b60606018805480602002602001604051908101604052809291908181526020018280548015610f8f576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610f71575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610f8f576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610f71575050505050905090565b604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561188257600080fd5b505af1158015611896573d6000803e3d6000fd5b5050601f546040517f095ea7b300000000000000000000000000000000000000000000000000000000815260006004820152600a60248201526101009091046001600160a01b0316925063095ea7b39150604401610628565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152600a908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561194d57600080fd5b505af1158015611961573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600481018690526101009091046001600160a01b0316925063f687d12a9150602401600060405180830381600087803b1580156119c857600080fd5b505af11580156119dc573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015611a3957600080fd5b505af1158015611a4d573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600481018590526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b158015611ab457600080fd5b505af1158015611ac8573d6000803e3d6000fd5b5050601f546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b03166004820181905260006024830152925063095ea7b391506044016020604051808303816000875af1158015611b3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5f9190619ae5565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611bbe57600080fd5b505af1158015611bd2573d6000803e3d6000fd5b5050601f546025546040805160609290921b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208301528051601481840301815260348301918290527fc7012626000000000000000000000000000000000000000000000000000000009091526001600160a01b0361010090930492909216935063c7012626925061119c9190600190603801619cc5565b604051630618f58760e51b81527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015611cd857600080fd5b505af1158015611cec573d6000803e3d6000fd5b5050601f546040517fc47f002700000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f544f4b454e32000000000000000000000000000000000000000000000000000060448201526101009091046001600160a01b0316925063c47f00279150606401600060405180830381600087803b158015611d8057600080fd5b505af1158015611d94573d6000803e3d6000fd5b5050604051630618f58760e51b81527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015611e0457600080fd5b505af1158015611e18573d6000803e3d6000fd5b5050601f546040517fb84c8246000000000000000000000000000000000000000000000000000000008152602060048083019190915260248201527f544b4e320000000000000000000000000000000000000000000000000000000060448201526101009091046001600160a01b0316925063b84c82469150606401610e39565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611ef257600080fd5b505af1158015611f06573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063f687d12a9150602401600060405180830381600087803b158015611f6d57600080fd5b505af1158015611f81573d6000803e3d6000fd5b50505050611495600a601f60019054906101000a90046001600160a01b03166001600160a01b031663091d27886040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fdd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120019190619c33565b6154ad565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561131d578382906000526020600020906002020160405180604001604052908160008201805461205d90619c4c565b80601f016020809104026020016040519081016040528092919081815260200182805461208990619c4c565b80156120d65780601f106120ab576101008083540402835291602001916120d6565b820191906000526020600020905b8154815290600101906020018083116120b957829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561217057602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161211d5790505b5050505050815250508152602001906001019061202a565b601f546025546040516370a0823160e01b81526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa1580156121dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122019190619c33565b905061220e6000826154ad565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015612286573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122aa9190619ae5565b50604051630618f58760e51b81527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561231757600080fd5b505af115801561232b573d6000803e3d6000fd5b5050601f54602480546025546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152908216928101929092526044820186905261010090920490911692506323b872dd915060640161119c565b601f546025546040516370a0823160e01b81526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa1580156123ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124119190619c33565b905061241e6000826154ad565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261c35092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015612495573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124b99190619ae5565b50601f54602480546025546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169281019290925260448201849052610100909204909116906323b872dd906064015b6020604051808303816000875af115801561253e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125629190619ae5565b50601f546025546040516370a0823160e01b81526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa1580156125b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125dc9190619c33565b90506111df82826154ad565b6126a16040518060400160405280600581526020017f544f4b454e000000000000000000000000000000000000000000000000000000815250601f60019054906101000a90046001600160a01b03166001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015612674573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261269c9190810190619daf565b615596565b61272d6040518060400160405280600381526020017f544b4e0000000000000000000000000000000000000000000000000000000000815250601f60019054906101000a90046001600160a01b03166001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015612674573d6000803e3d6000fd5b60265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561278657600080fd5b505af115801561279a573d6000803e3d6000fd5b5050601f546040517fc47f002700000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f544f4b454e32000000000000000000000000000000000000000000000000000060448201526101009091046001600160a01b0316925063c47f00279150606401600060405180830381600087803b15801561282e57600080fd5b505af1158015612842573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561289f57600080fd5b505af11580156128b3573d6000803e3d6000fd5b5050601f546040517fb84c8246000000000000000000000000000000000000000000000000000000008152602060048083019190915260248201527f544b4e320000000000000000000000000000000000000000000000000000000060448201526101009091046001600160a01b0316925063b84c82469150606401600060405180830381600087803b15801561294957600080fd5b505af115801561295d573d6000803e3d6000fd5b505050506129ed6040518060400160405280600681526020017f544f4b454e320000000000000000000000000000000000000000000000000000815250601f60019054906101000a90046001600160a01b03166001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015612674573d6000803e3d6000fd5b6114956040518060400160405280600481526020017f544b4e3200000000000000000000000000000000000000000000000000000000815250601f60019054906101000a90046001600160a01b03166001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015612674573d6000803e3d6000fd5b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ace573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612af29190619c33565b9050612b01620186a0826154ad565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612b5a57600080fd5b505af1158015612b6e573d6000803e3d6000fd5b5050601f54602480546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09281019290925261010090920490911692506347e7ef2491506044016020604051808303816000875af1158015612bec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c109190619ae5565b506000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c8a9190619c33565b9050612c9962030d40826154ad565b5050565b604051630618f58760e51b81527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015612d0957600080fd5b505af1158015612d1d573d6000803e3d6000fd5b5050601f546040517f42966c68000000000000000000000000000000000000000000000000000000008152620249f060048201526101009091046001600160a01b031692506342966c689150602401610628565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101561131d578382906000526020600020018054612db490619c4c565b80601f0160208091040260200160405190810160405280929190818152602001828054612de090619c4c565b8015612e2d5780601f10612e0257610100808354040283529160200191612e2d565b820191906000526020600020905b815481529060010190602001808311612e1057829003601f168201915b505050505081526020019060010190612d95565b601f546025546040516370a0823160e01b81526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015612e96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eba9190619c33565b9050612ec76000826154ad565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015612f3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f639190619ae5565b50604051630618f58760e51b81527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015612fd057600080fd5b505af1158015612fe4573d6000803e3d6000fd5b5050601f546025546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810186905261010090920416925063a9059cbb915060440161119c565b6060601d805480602002602001604051908101604052809291908181526020016000905b8282101561131d5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561312457602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116130d15790505b50505050508152505081526020019060010190613065565b604051630618f58760e51b81527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156131a857600080fd5b505af11580156131bc573d6000803e3d6000fd5b5050601f546040517fccc7759900000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063ccc775999150602401610e39565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015613287573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132ab9190619ae5565b50604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561331857600080fd5b505af115801561332c573d6000803e3d6000fd5b5050601f546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815260006004820152602481018590526101009091046001600160a01b0316925063a9059cbb91506044015b6020604051808303816000875af11580156133a0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c999190619ae5565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015613419573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526134419190810190619daf565b90506134826040518060400160405280600581526020017f544f4b454e00000000000000000000000000000000000000000000000000000081525082615596565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa1580156134d7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526134ff9190810190619daf565b90506135406040518060400160405280600381526020017f544b4e000000000000000000000000000000000000000000000000000000000081525082615596565b6000601f60019054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015613595573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135b99190619df8565b90506135c960128260ff166154ad565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561361e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136429190619c33565b9050610d64620186a0826154ad565b6060601c805480602002602001604051908101604052809291908181526020016000905b8282101561131d5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561373457602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116136e15790505b50505050508152505081526020019060010190613675565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101561131d57838290600052602060002001805461378f90619c4c565b80601f01602080910402602001604051908101604052809291908181526020018280546137bb90619c4c565b80156138085780601f106137dd57610100808354040283529160200191613808565b820191906000526020600020905b8154815290600101906020018083116137eb57829003601f168201915b505050505081526020019060010190613770565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152600a906305f5e10090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561387e57600080fd5b505af1158015613892573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600481018690526101009091046001600160a01b0316925063f687d12a9150602401600060405180830381600087803b1580156138f957600080fd5b505af115801561390d573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561396a57600080fd5b505af115801561397e573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600481018590526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b1580156139e557600080fd5b505af11580156139f9573d6000803e3d6000fd5b5050601f546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b031660048201819052630bebc2006024830152925063095ea7b391506044016020604051808303816000875af1158015613a6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a939190619ae5565b50604051630618f58760e51b81527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015613b0057600080fd5b505af1158015613b14573d6000803e3d6000fd5b5050601f546025546040805160609290921b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208301528051601481840301815260348301918290527fc7012626000000000000000000000000000000000000000000000000000000009091526001600160a01b0361010090930492909216935063c7012626925061119c9190606490603801619cc5565b60085460009060ff1615613bc6575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015613c57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c7b9190619c33565b1415905090565b604051630618f58760e51b81527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015613cee57600080fd5b505af1158015613d02573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063f687d12a9150602401610e39565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613dad57600080fd5b505af1158015613dc1573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b158015613e2857600080fd5b505af1158015613e3c573d6000803e3d6000fd5b50505050611495600a601f60019054906101000a90046001600160a01b03166001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fdd573d6000803e3d6000fd5b60265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613ef157600080fd5b505af1158015613f05573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015613f7557600080fd5b505af1158015613f89573d6000803e3d6000fd5b5050601f546040517fccc77599000000000000000000000000000000000000000000000000000000008152600060048201526101009091046001600160a01b0316925063ccc775999150602401610e39565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561403457600080fd5b505af1158015614048573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156140b857600080fd5b505af11580156140cc573d6000803e3d6000fd5b5050601f546040517fc835d7cc000000000000000000000000000000000000000000000000000000008152600060048201526101009091046001600160a01b0316925063c835d7cc9150602401610e39565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152600a908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561417c57600080fd5b505af1158015614190573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600481018690526101009091046001600160a01b0316925063f687d12a9150602401600060405180830381600087803b1580156141f757600080fd5b505af115801561420b573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561426857600080fd5b505af115801561427c573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600481018590526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b1580156142e357600080fd5b505af11580156142f7573d6000803e3d6000fd5b5050601f54602480546040516370a0823160e01b81526001600160a01b039182166004820152600095506101009093041692506370a082319101602060405180830381865afa15801561434e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143729190619c33565b9050614381620186a0826154ad565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156143d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143fa9190619c33565b9050614409620186a0826154ad565b601f546026546040516370a0823160e01b81526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa15801561445e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144829190619c33565b601f546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b03166004820181905261c350602483015291925063095ea7b3906044016020604051808303816000875af11580156144f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145189190619ae5565b50601f546025546040805160609290921b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208301528051601481840301815260348301918290527fc7012626000000000000000000000000000000000000000000000000000000009091526001600160a01b03610100909304929092169163c7012626916145b0919061c35090603801619cc5565b6020604051808303816000875af11580156145cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145f39190619ae5565b50601f546026546040516370a0823160e01b81526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015614649573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061466d9190619c33565b905061468d8561467d8885619e4a565b6146879190619e4a565b826154ad565b601f54602480546040516370a0823160e01b81526001600160a01b0391821660048201526000936101009004909116916370a082319101602060405180830381865afa1580156146e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147059190619c33565b9050614721866147178961c350619e5d565b6146879190619e5d565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015614776573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061479a9190619c33565b90506147a861c350826154ad565b5050505050505050565b601f546025546040516370a0823160e01b81526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015614807573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061482b9190619c33565b90506148386000826154ad565b601f546025546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261c350602482018190529261010090049091169063a9059cbb9060440161251f565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af115801561490e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906149329190619ae5565b50604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561499f57600080fd5b505af11580156149b3573d6000803e3d6000fd5b5050601f54602480546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000928101929092526044820186905261010090920490911692506323b872dd9150606401613381565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614a7557600080fd5b505af1158015614a89573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a6004820181905293508392506101009091046001600160a01b03169063f687d12a90602401600060405180830381600087803b158015614af557600080fd5b505af1158015614b09573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015614b6657600080fd5b505af1158015614b7a573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b158015614be157600080fd5b505af1158015614bf5573d6000803e3d6000fd5b50505050600080601f60019054906101000a90046001600160a01b03166001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015614c4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614c729190619c99565b601f549193509150614c929061010090046001600160a01b031683615535565b610d646146878486619e4a565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614cf857600080fd5b505af1158015614d0c573d6000803e3d6000fd5b5050601f546040517fccc7759900000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063ccc775999150602401600060405180830381600087803b158015614d7457600080fd5b505af1158015614d88573d6000803e3d6000fd5b50505050611495601f60019054906101000a90046001600160a01b03166001600160a01b0316638b851b956040518163ffffffff1660e01b8152600401602060405180830381865afa158015611469573d6000803e3d6000fd5b601f54602480546040516370a0823160e01b81526001600160a01b0391821660048201526000936101009004909116916370a082319101602060405180830381865afa158015614e36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614e5a9190619c33565b9050614e69620186a0826154ad565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015614ebe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614ee29190619c33565b9050614ef1620186a0826154ad565b601f546040517f42966c6800000000000000000000000000000000000000000000000000000000815261c35060048201526101009091046001600160a01b0316906342966c68906024016020604051808303816000875af1158015614f5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614f7e9190619ae5565b50601f54602480546040516370a0823160e01b81526001600160a01b0391821660048201526000936101009004909116916370a082319101602060405180830381865afa158015614fd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614ff79190619c33565b905061500561c350826154ad565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561505a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061507e9190619c33565b9050610d6461c350826154ad565b60606015805480602002602001604051908101604052809291908181526020018280548015610f8f576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610f71575050505050905090565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561514557600080fd5b505af1158015615159573d6000803e3d6000fd5b50506020546040517fee2815ba00000000000000000000000000000000000000000000000000000000815260016004820152600060248201526001600160a01b03909116925063ee2815ba9150604401600060405180830381600087803b1580156151c357600080fd5b505af11580156151d7573d6000803e3d6000fd5b5050604051630618f58760e51b81527f78fff396000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024016116ab565b601f546025546040516370a0823160e01b81526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015615287573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906152ab9190619c33565b90506152b86000826154ad565b601f54602480546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201819052928101929092526000926101009004169063dd62ed3e90604401602060405180830381865afa15801561532e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906153529190619c33565b905061535f6000826154ad565b604051630618f58760e51b81527f10bad14700000000000000000000000000000000000000000000000000000000600482015261c35090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156153cf57600080fd5b505af11580156153e3573d6000803e3d6000fd5b5050601f54602480546025546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152908216928101929092526044820186905261010090920490911692506323b872dd91506064016020604051808303816000875af115801561546a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d649190619ae5565b600061549861967e565b6154a38484836155e8565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c54906044015b60006040518083038186803b15801561551957600080fd5b505afa15801561552d573d6000803e3d6000fd5b505050505050565b6040517f515361f60000000000000000000000000000000000000000000000000000000081526001600160a01b03808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f690604401615501565b6040517ff320d963000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f320d963906155019085908590600401619e70565b6000806155f58584615663565b90506156586040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001615643929190619e95565b6040516020818303038152906040528561566f565b9150505b9392505050565b600061565c838361569d565b60c081015151600090156156935761568c84848460c001516156b8565b905061565c565b61568c848461585e565b60006156a98383615949565b61565c8383602001518461566f565b6000806156c3615955565b905060006156d18683615a28565b905060006156e88260600151836020015185615ece565b905060006156f8838389896160e0565b9050600061570582616f5d565b602081015181519192509060030b156157785789826040015160405160200161572f929190619eb7565b60408051601f19818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261576f91600401619f38565b60405180910390fd5b60006157bb6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a20000000000000000000000081525083600161712c565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d9061580e908490600401619f38565b602060405180830381865afa15801561582b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061584f9190619b23565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc925906158b3908790600401619f38565b600060405180830381865afa1580156158d0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526158f89190810190619f6b565b905060006159268285604051602001615912929190619fa0565b60405160208183030381529060405261732c565b90506001600160a01b0381166154a357848460405160200161572f929190619fcf565b612c998282600061733f565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c906159dc90849060040161a07a565b600060405180830381865afa1580156159f9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615a219190810190619daf565b9250505090565b615a5a6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050615aa56040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b615aae85617442565b60208201526000615abe86617827565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015615b00573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615b289190810190619daf565b86838560200151604051602001615b42949392919061a0c1565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190615b9a908590600401619f38565b600060405180830381865afa158015615bb7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615bdf9190810190619daf565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690615c2790849060040161a1c5565b602060405180830381865afa158015615c44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615c689190619ae5565b615c7d578160405160200161572f919061a217565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890615cc290849060040161a2a9565b600060405180830381865afa158015615cdf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615d079190810190619daf565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690615d4e90849060040161a2fb565b602060405180830381865afa158015615d6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615d8f9190619ae5565b15615e24576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890615dd990849060040161a2fb565b600060405180830381865afa158015615df6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615e1e9190810190619daf565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001615e49919061a34d565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401615e75929190619e70565b600060405180830381865afa158015615e92573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615eba9190810190619daf565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081615eea5790505090506040518060400160405280600481526020017f677265700000000000000000000000000000000000000000000000000000000081525081600081518110615f4a57615f4a61a3b9565b60200260200101819052506040518060400160405280600381526020017f2d726c000000000000000000000000000000000000000000000000000000000081525081600181518110615f9e57615f9e61a3b9565b602002602001018190525084604051602001615fba919061a3e8565b60405160208183030381529060405281600281518110615fdc57615fdc61a3b9565b602002602001018190525082604051602001615ff8919061a454565b6040516020818303038152906040528160038151811061601a5761601a61a3b9565b6020026020010181905250600061603082616f5d565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506160c19060408051808201825260008082526020918201528151808301909252845182528085019082015290617aaa565b6160d6578560405160200161572f919061a495565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015616130565b511590565b6162a4578260200151156161ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a40161576f565b8260c00151156162a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a40161576f565b6040805160ff8082526120008201909252600091816020015b60608152602001906001900390816162bd57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806163189061a526565b935060ff168151811061632d5761632d61a3b9565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e370000000000000000000000000000000000000081525060405160200161637e919061a545565b6040516020818303038152906040528282806163999061a526565b935060ff16815181106163ae576163ae61a3b9565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806163fb9061a526565b935060ff16815181106164105761641061a3b9565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d6500000000000000000000000000000000000081525082828061645d9061a526565b935060ff16815181106164725761647261a3b9565b6020026020010181905250876020015182828061648e9061a526565b935060ff16815181106164a3576164a361a3b9565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806164f09061a526565b935060ff16815181106165055761650561a3b9565b60209081029190910101528751828261651d8161a526565b935060ff16815181106165325761653261a3b9565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e4964000000000000000000000000000000000000000000000081525082828061657f9061a526565b935060ff16815181106165945761659461a3b9565b60200260200101819052506165a846617b0b565b82826165b38161a526565b935060ff16815181106165c8576165c861a3b9565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c6500000000000000000000000000000000008152508282806166159061a526565b935060ff168151811061662a5761662a61a3b9565b6020026020010181905250868282806166429061a526565b935060ff16815181106166575761665761a3b9565b602090810291909101015285511561677e5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826166a88161a526565b935060ff16815181106166bd576166bd61a3b9565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d9061670d908990600401619f38565b600060405180830381865afa15801561672a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526167529190810190619daf565b828261675d8161a526565b935060ff16815181106167725761677261a3b9565b60200260200101819052505b84602001511561684e5760408051808201909152601281527f2d2d766572696679536f75726365436f64650000000000000000000000000000602082015282826167c78161a526565b935060ff16815181106167dc576167dc61a3b9565b60200260200101819052506040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152508282806168299061a526565b935060ff168151811061683e5761683e61a3b9565b6020026020010181905250616a15565b61688661612b8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6169195760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826168c98161a526565b935060ff16815181106168de576168de61a3b9565b60200260200101819052508460a001516040516020016168fe919061a3e8565b6040516020818303038152906040528282806168299061a526565b8460c0015115801561695c57506040808901518151808301835260008082526020918201528251808401909352815183529081019082015261695a90511590565b155b15616a155760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826169a08161a526565b935060ff16815181106169b5576169b561a3b9565b60200260200101819052506169c988617bab565b6040516020016169d9919061a3e8565b6040516020818303038152906040528282806169f49061a526565b935060ff1681518110616a0957616a0961a3b9565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152616a4990511590565b616ade5760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282616a8c8161a526565b935060ff1681518110616aa157616aa161a3b9565b60200260200101819052508460400151828280616abd9061a526565b935060ff1681518110616ad257616ad261a3b9565b60200260200101819052505b606085015115616bff5760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282616b278161a526565b935060ff1681518110616b3c57616b3c61a3b9565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015616bab573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616bd39190810190619daf565b8282616bde8161a526565b935060ff1681518110616bf357616bf361a3b9565b60200260200101819052505b60e08501515115616ca65760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282616c498161a526565b935060ff1681518110616c5e57616c5e61a3b9565b6020026020010181905250616c7a8560e0015160000151617b0b565b8282616c858161a526565b935060ff1681518110616c9a57616c9a61a3b9565b60200260200101819052505b60e08501516020015115616d505760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282616cf38161a526565b935060ff1681518110616d0857616d0861a3b9565b6020026020010181905250616d248560e0015160200151617b0b565b8282616d2f8161a526565b935060ff1681518110616d4457616d4461a3b9565b60200260200101819052505b60e08501516040015115616dfa5760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282616d9d8161a526565b935060ff1681518110616db257616db261a3b9565b6020026020010181905250616dce8560e0015160400151617b0b565b8282616dd98161a526565b935060ff1681518110616dee57616dee61a3b9565b60200260200101819052505b60e08501516060015115616ea45760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282616e478161a526565b935060ff1681518110616e5c57616e5c61a3b9565b6020026020010181905250616e788560e0015160600151617b0b565b8282616e838161a526565b935060ff1681518110616e9857616e9861a3b9565b60200260200101819052505b60008160ff1667ffffffffffffffff811115616ec257616ec2619ce7565b604051908082528060200260200182016040528015616ef557816020015b6060815260200190600190039081616ee05790505b50905060005b8260ff168160ff161015616f4e57838160ff1681518110616f1e57616f1e61a3b9565b6020026020010151828260ff1681518110616f3b57616f3b61a3b9565b6020908102919091010152600101616efb565b5093505050505b949350505050565b616f846040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c9161700a9186910161a5b0565b600060405180830381865afa158015617027573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261704f9190810190619daf565b9050600061705d868361869a565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161708d91906199d7565b6000604051808303816000875af11580156170ac573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526170d4919081019061a5f7565b805190915060030b158015906170ed5750602081015151155b80156170fc5750604081015151155b156160d657816000815181106171145761711461a3b9565b602002602001015160405160200161572f919061a6ad565b606060006171618560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506171989082905b906187ef565b156172f55760006172158261720f846172096171db8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90618816565b90618878565b604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506172799082906187ef565b156172e357604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526172e0905b82906188fd565b90505b6172ec81618923565b9250505061565c565b821561730e57848460405160200161572f92919061a899565b505060408051602081019091526000815261565c565b509392505050565b6000808251602084016000f09392505050565b8160a001511561734e57505050565b600061735b84848461898c565b9050600061736882616f5d565b602081015181519192509060030b1580156174045750604080518082018252600781527f53554343455353000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261740490604080518082018252600080825260209182015281518083019092528451825280850190820152617192565b1561741157505050505050565b6040820151511561743157816040015160405160200161572f919061a940565b8060405160200161572f919061a99e565b606060006174778360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506174dc905b8290617aaa565b1561754b57604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261565c90617546908390618f27565b618923565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526175ad905b8290618fb1565b60010361767a57604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617613906172d9565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261565c90617546905b83906188fd565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526176d9906174d5565b1561781057604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061774190839061904b565b9050600081600183516177549190619e5d565b815181106177645761776461a3b9565b602002602001015190506178076175466177da6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290618f27565b95945050505050565b8260405160200161572f919061aa09565b50919050565b6060600061785c8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506178be906174d5565b156178cc5761565c81618923565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261792b906175a6565b60010361799557604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261565c9061754690617673565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526179f4906174d5565b1561781057604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290617a5c90839061904b565b9050600181511115617a98578060028251617a779190619e5d565b81518110617a8757617a8761a3b9565b602002602001015192505050919050565b508260405160200161572f919061aa09565b805182516000911115617abf575060006154a7565b81518351602085015160009291617ad591619e4a565b617adf9190619e5d565b905082602001518103617af65760019150506154a7565b82516020840151819020912014905092915050565b60606000617b18836190f0565b600101905060008167ffffffffffffffff811115617b3857617b38619ce7565b6040519080825280601f01601f191660200182016040528015617b62576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084617b6c57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091617c37905b82906191d2565b15617c7757505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617cd690617c30565b15617d1657505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617d7590617c30565b15617db557505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617e1490617c30565b80617e795750604080518082018252601081527f47504c2d322e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617e7990617c30565b15617eb957505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617f1890617c30565b80617f7d5750604080518082018252601081527f47504c2d332e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617f7d90617c30565b15617fbd57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261801c90617c30565b806180815750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261808190617c30565b156180c157505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261812090617c30565b806181855750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261818590617c30565b156181c557505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261822490617c30565b1561826457505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526182c390617c30565b1561830357505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261836290617c30565b156183a257505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261840190617c30565b1561844157505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e3000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526184a090617c30565b156184e057505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261853f90617c30565b806185a45750604080518082018252601181527f4147504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526185a490617c30565b156185e457505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261864390617c30565b1561868357505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b6040808401518451915161572f929060200161aae7565b60608060005b845181101561872557818582815181106186bc576186bc61a3b9565b60200260200101516040516020016186d5929190619fa0565b6040516020818303038152906040529150600185516186f49190619e5d565b811461871d578160405160200161870b919061ac50565b60405160208183030381529060405291505b6001016186a0565b5060408051600380825260808201909252600091816020015b606081526020019060019003908161873e57905050905083816000815181106187695761876961a3b9565b60200260200101819052506040518060400160405280600281526020017f2d63000000000000000000000000000000000000000000000000000000000000815250816001815181106187bd576187bd61a3b9565b602002602001018190525081816002815181106187dc576187dc61a3b9565b6020908102919091010152949350505050565b602080830151835183519284015160009361880d92918491906191e6565b14159392505050565b6040805180820190915260008082526020820152600061884884600001518560200151856000015186602001516192f7565b905083602001518161885a9190619e5d565b84518590618869908390619e5d565b90525060208401525090919050565b604080518082019091526000808252602082015281518351101561889d5750816154a7565b60208083015190840151600191146188c45750815160208481015190840151829020919020145b80156188f5578251845185906188db908390619e5d565b90525082516020850180516188f1908390619e4a565b9052505b509192915050565b604080518082019091526000808252602082015261891c838383619417565b5092915050565b60606000826000015167ffffffffffffffff81111561894457618944619ce7565b6040519080825280601f01601f19166020018201604052801561896e576020820181803683370190505b509050600060208201905061891c81856020015186600001516194c2565b60606000618998615955565b6040805160ff808252612000820190925291925060009190816020015b60608152602001906001900390816189b557905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280618a109061a526565b935060ff1681518110618a2557618a2561a3b9565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001618a76919061ac91565b604051602081830303815290604052828280618a919061a526565b935060ff1681518110618aa657618aa661a3b9565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280618af39061a526565b935060ff1681518110618b0857618b0861a3b9565b602002602001018190525082604051602001618b24919061a454565b604051602081830303815290604052828280618b3f9061a526565b935060ff1681518110618b5457618b5461a3b9565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280618ba19061a526565b935060ff1681518110618bb657618bb661a3b9565b6020026020010181905250618bcb878461953c565b8282618bd68161a526565b935060ff1681518110618beb57618beb61a3b9565b602090810291909101015285515115618c975760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282618c3d8161a526565b935060ff1681518110618c5257618c5261a3b9565b6020026020010181905250618c6b86600001518461953c565b8282618c768161a526565b935060ff1681518110618c8b57618c8b61a3b9565b60200260200101819052505b856080015115618d055760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282618ce08161a526565b935060ff1681518110618cf557618cf561a3b9565b6020026020010181905250618d6b565b8415618d6b5760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282618d4a8161a526565b935060ff1681518110618d5f57618d5f61a3b9565b60200260200101819052505b60408601515115618e075760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282618db58161a526565b935060ff1681518110618dca57618dca61a3b9565b60200260200101819052508560400151828280618de69061a526565b935060ff1681518110618dfb57618dfb61a3b9565b60200260200101819052505b856060015115618e715760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282618e508161a526565b935060ff1681518110618e6557618e6561a3b9565b60200260200101819052505b60008160ff1667ffffffffffffffff811115618e8f57618e8f619ce7565b604051908082528060200260200182016040528015618ec257816020015b6060815260200190600190039081618ead5790505b50905060005b8260ff168160ff161015618f1b57838160ff1681518110618eeb57618eeb61a3b9565b6020026020010151828260ff1681518110618f0857618f0861a3b9565b6020908102919091010152600101618ec8565b50979650505050505050565b6040805180820190915260008082526020820152815183511015618f4c5750816154a7565b81518351602085015160009291618f6291619e4a565b618f6c9190619e5d565b60208401519091506001908214618f8d575082516020840151819020908220145b8015618fa857835185518690618fa4908390619e5d565b9052505b50929392505050565b6000808260000151618fd585600001518660200151866000015187602001516192f7565b618fdf9190619e4a565b90505b83516020850151618ff39190619e4a565b811161891c57816190038161acd6565b925050826000015161903a85602001518361901e9190619e5d565b865161902a9190619e5d565b83866000015187602001516192f7565b6190449190619e4a565b9050618fe2565b606060006190598484618fb1565b619064906001619e4a565b67ffffffffffffffff81111561907c5761907c619ce7565b6040519080825280602002602001820160405280156190af57816020015b606081526020019060019003908161909a5790505b50905060005b8151811015617324576190cb61754686866188fd565b8282815181106190dd576190dd61a3b9565b60209081029190910101526001016190b5565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310619139577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310619165576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061918357662386f26fc10000830492506010015b6305f5e100831061919b576305f5e100830492506008015b61271083106191af57612710830492506004015b606483106191c1576064830492506002015b600a83106154a75760010192915050565b60006191de838361957c565b159392505050565b6000808584116192ed5760208411619299576000841561923157600161920d866020619e5d565b61921890600861acf0565b61922390600261adee565b61922d9190619e5d565b1990505b83518116856192408989619e4a565b61924a9190619e5d565b805190935082165b8181146192845787841161926c5787945050505050616f55565b836192768161adfa565b945050828451169050619252565b61928e8785619e4a565b945050505050616f55565b8383206192a68588619e5d565b6192b09087619e4a565b91505b8582106192eb578482208082036192d8576192ce8684619e4a565b9350505050616f55565b6192e3600184619e5d565b9250506192b3565b505b5092949350505050565b6000838186851161940257602085116193b1576000851561934357600161931f876020619e5d565b61932a90600861acf0565b61933590600261adee565b61933f9190619e5d565b1990505b845181166000876193548b8b619e4a565b61935e9190619e5d565b855190915083165b8281146193a35781861061938b5761937e8b8b619e4a565b9650505050505050616f55565b856193958161acd6565b965050838651169050619366565b859650505050505050616f55565b508383206000905b6193c38689619e5d565b8211619400578583208082036193df5783945050505050616f55565b6193ea600185619e4a565b93505081806193f89061acd6565b9250506193b9565b505b61940c8787619e4a565b979650505050505050565b6040805180820190915260008082526020820152600061944985600001518660200151866000015187602001516192f7565b6020808701805191860191909152519091506194659082619e5d565b8352845160208601516194789190619e4a565b810361948757600085526194b9565b835183516194959190619e4a565b855186906194a4908390619e5d565b90525083516194b39082619e4a565b60208601525b50909392505050565b602081106194fa57815183526194d9602084619e4a565b92506194e6602083619e4a565b91506194f3602082619e5d565b90506194c2565b6000198115619529576001619510836020619e5d565b61951c9061010061adee565b6195269190619e5d565b90505b9151835183169219169190911790915250565b6060600061954a8484615a28565b80516020808301516040519394506195649390910161ae11565b60405160208183030381529060405291505092915050565b815181516000919081111561958f575081515b6020808501519084015160005b8381101561964857825182518082146196185760001960208710156195f7576001846195c9896020619e5d565b6195d39190619e4a565b6195de90600861acf0565b6195e990600261adee565b6195f39190619e5d565b1990505b81811683821681810391146196155797506154a79650505050505050565b50505b619623602086619e4a565b9450619630602085619e4a565b935050506020816196419190619e4a565b905061959c565b50845186516160d6919061ae69565b610b678061ae8a83390190565b61106f8061b9f183390190565b6120728061ca6083390190565b6040518060e001604052806060815260200160608152602001606081526020016000151581526020016000151581526020016000151581526020016196c16196c6565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016196c16040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156197785783516001600160a01b0316835260209384019390920191600101619751565b509095945050505050565b60005b8381101561979e578181015183820152602001619786565b50506000910152565b600081518084526197bf816020860160208601619783565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156198cf577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b818110156198b5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261989f8486516197a7565b6020958601959094509290920191600101619865565b5091975050506020948501949290920191506001016197fb565b50929695505050505050565b600081518084526020840193506020830160005b8281101561992f5781517fffffffff00000000000000000000000000000000000000000000000000000000168652602095860195909101906001016198ef565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156198cf577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281518051604087526199a560408801826197a7565b90506020820151915086810360208801526199c081836198db565b965050506020938401939190910190600101619961565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156198cf577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452619a398583516197a7565b945060209384019391909101906001016199ff565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156198cf577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152619acf60408701826198db565b9550506020938401939190910190600101619a76565b600060208284031215619af757600080fd5b8151801515811461565c57600080fd5b80516001600160a01b0381168114619b1e57600080fd5b919050565b600060208284031215619b3557600080fd5b61565c82619b07565b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff8816604083015286606083015260038610619bf8577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a0830152619c1960c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b600060208284031215619c4557600080fd5b5051919050565b600181811c90821680619c6057607f821691505b602082108103617821577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60008060408385031215619cac57600080fd5b619cb583619b07565b6020939093015192949293505050565b604081526000619cd860408301856197a7565b90508260208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715619d3957619d39619ce7565b60405290565b60008067ffffffffffffffff841115619d5a57619d5a619ce7565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715619d8957619d89619ce7565b604052838152905080828401851015619da157600080fd5b617324846020830185619783565b600060208284031215619dc157600080fd5b815167ffffffffffffffff811115619dd857600080fd5b8201601f81018413619de957600080fd5b6154a384825160208401619d3f565b600060208284031215619e0a57600080fd5b815160ff8116811461565c57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156154a7576154a7619e1b565b818103818111156154a7576154a7619e1b565b604081526000619e8360408301856197a7565b828103602084015261565881856197a7565b6001600160a01b0383168152604060208201526000616f5560408301846197a7565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351619eef81601a850160208801619783565b7f3a20000000000000000000000000000000000000000000000000000000000000601a918401918201528351619f2c81601c840160208801619783565b01601c01949350505050565b60208152600061565c60208301846197a7565b600082601f830112619f5c57600080fd5b61565c83835160208501619d3f565b600060208284031215619f7d57600080fd5b815167ffffffffffffffff811115619f9457600080fd5b6154a384828501619f4b565b60008351619fb2818460208801619783565b835190830190619fc6818360208801619783565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161a00781601a850160208801619783565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161a044816033840160208801619783565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f5554000000000000000000000000000000000000000000606082015260806020820152600061565c60808301846197a7565b6000855161a0d3818460208a01619783565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161a10d816001840160208a01619783565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161a14b816002840160208901619783565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161a18d816002840160208801619783565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061a1d860408301846197a7565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161a24f81601f850160208701619783565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061a2bc60408301846197a7565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061a30e60408301846197a7565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161a385816014850160208701619783565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161a420816001850160208701619783565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161a466818460208701619783565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161a51981604b850160208701619783565b91909101604b0192915050565b600060ff821660ff810361a53c5761a53c619e1b565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161a5a3816029850160208701619783565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061565c60808301846197a7565b60006020828403121561a60957600080fd5b815167ffffffffffffffff81111561a62057600080fd5b82016060818503121561a63257600080fd5b61a63a619d16565b81518060030b811461a64b57600080fd5b8152602082015167ffffffffffffffff81111561a66757600080fd5b61a67386828501619f4b565b602083015250604082015167ffffffffffffffff81111561a69357600080fd5b61a69f86828501619f4b565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161a70b816021850160208701619783565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161a8f7816021850160208801619783565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161a93481602e840160208801619783565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161a5a3816029850160208701619783565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161a9fc816022850160208701619783565b9190910160220192915050565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161aa4181600e850160208701619783565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161ab1f816018850160208801619783565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161ab5c81601c840160208801619783565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161ac62818460208701619783565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161acc981601c850160208701619783565b91909101601c0192915050565b6000600019820361ace95761ace9619e1b565b5060010190565b80820281158282048414176154a7576154a7619e1b565b6001815b600184111561ad425780850481111561ad265761ad26619e1b565b600184161561ad3457908102905b60019390931c92800261ad0b565b935093915050565b60008261ad59575060016154a7565b8161ad66575060006154a7565b816001811461ad7c576002811461ad865761ada2565b60019150506154a7565b60ff84111561ad975761ad97619e1b565b50506001821b6154a7565b5060208310610133831016604e8410600b841016171561adc5575081810a6154a7565b61add2600019848461ad07565b806000190482111561ade65761ade6619e1b565b029392505050565b600061565c838361ad4a565b60008161ae095761ae09619e1b565b506000190190565b6000835161ae23818460208801619783565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161ae5d816001840160208801619783565b01600101949350505050565b818103600083128015838313168383128216171561891c5761891c619e1b56fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea2646970667358221220b09c98b42d894b1b92a74ecc691587bcc17012fff7ef3bcfa6fe755f9b6255a564736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea2646970667358221220b13ccf97234dc9b7f658234f9bf37a57d08f465bb99c431b865174e7a399a30764736f6c634300081a003360c060405234801561001057600080fd5b5060405161207238038061207283398101604081905261002f916101f0565b6001600160a01b038216158061004c57506001600160a01b038116155b1561006a5760405163d92e233d60e01b815260040160405180910390fd5b60066100768982610342565b5060076100838882610342565b506008805460ff191660ff881617905560808590528360028111156100aa576100aa610400565b60a08160028111156100be576100be610400565b905250600192909255600080546001600160a01b039283166001600160a01b0319909116179055600880549190921661010002610100600160a81b0319909116179055506104169350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261013357600080fd5b81516001600160401b0381111561014c5761014c61010c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561017a5761017a61010c565b60405281815283820160200185101561019257600080fd5b60005b828110156101b157602081860181015183830182015201610195565b506000918101602001919091529392505050565b8051600381106101d457600080fd5b919050565b80516001600160a01b03811681146101d457600080fd5b600080600080600080600080610100898b03121561020d57600080fd5b88516001600160401b0381111561022357600080fd5b61022f8b828c01610122565b60208b015190995090506001600160401b0381111561024d57600080fd5b6102598b828c01610122565b975050604089015160ff8116811461027057600080fd5b60608a0151909650945061028660808a016101c5565b60a08a0151909450925061029c60c08a016101d9565b91506102aa60e08a016101d9565b90509295985092959890939650565b600181811c908216806102cd57607f821691505b6020821081036102ed57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561033d57806000526020600020601f840160051c8101602085101561031a5750805b601f840160051c820191505b8181101561033a5760008155600101610326565b50505b505050565b81516001600160401b0381111561035b5761035b61010c565b61036f8161036984546102b9565b846102f3565b6020601f8211600181146103a3576000831561038b5750848201515b600019600385901b1c1916600184901b17845561033a565b600084815260208120601f198516915b828110156103d357878501518255602094850194600190920191016103b3565b50848210156103f15786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a051611c1b61045760003960006103440152600081816102f001528181610bdc01528181610ce201528181610efe01526110040152611c1b6000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c806395d89b41116100f9578063ccc7759911610097578063eddeb12311610071578063eddeb12314610461578063f2441b3214610474578063f687d12a14610494578063fc5fecd5146104a757600080fd5b8063ccc77599146103d4578063d9eeebed146103e7578063dd62ed3e1461041b57600080fd5b8063b84c8246116100d3578063b84c824614610386578063c47f00271461039b578063c7012626146103ae578063c835d7cc146103c157600080fd5b806395d89b4114610337578063a3413d031461033f578063a9059cbb1461037357600080fd5b80633ce4a5bc116101665780634d8943bb116101405780634d8943bb146102ac57806370a08231146102b557806385e1f4d0146102eb5780638b851b951461031257600080fd5b80633ce4a5bc1461024657806342966c681461028657806347e7ef241461029957600080fd5b806318160ddd1161019757806318160ddd1461021657806323b872dd1461021e578063313ce5671461023157600080fd5b806306fdde03146101be578063091d2788146101dc578063095ea7b3146101f3575b600080fd5b6101c66104ba565b6040516101d39190611648565b60405180910390f35b6101e560015481565b6040519081526020016101d3565b610206610201366004611687565b61054c565b60405190151581526020016101d3565b6005546101e5565b61020661022c3660046116b3565b610563565b60085460405160ff90911681526020016101d3565b61026173735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d3565b6102066102943660046116f4565b6105fa565b6102066102a7366004611687565b61060e565b6101e560025481565b6101e56102c336600461170d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6101e57f000000000000000000000000000000000000000000000000000000000000000081565b60085461026190610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6101c6610767565b6103667f000000000000000000000000000000000000000000000000000000000000000081565b6040516101d3919061172a565b610206610381366004611687565b610776565b610399610394366004611832565b610783565b005b6103996103a9366004611832565b6107e0565b6102066103bc366004611883565b610839565b6103996103cf36600461170d565b610988565b6103996103e236600461170d565b610a9c565b6103ef610bb0565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101d3565b6101e56104293660046118dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205490565b61039961046f3660046116f4565b610dce565b6000546102619073ffffffffffffffffffffffffffffffffffffffff1681565b6103996104a23660046116f4565b610e50565b6103ef6104b53660046116f4565b610ed2565b6060600680546104c990611915565b80601f01602080910402602001604051908101604052809291908181526020018280546104f590611915565b80156105425780601f1061051757610100808354040283529160200191610542565b820191906000526020600020905b81548152906001019060200180831161052557829003601f168201915b5050505050905090565b60006105593384846110ee565b5060015b92915050565b60006105708484846111f7565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460209081526040808320338452909152902054828110156105db576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105ef85336105ea8685611997565b6110ee565b506001949350505050565b600061060633836113b2565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab1480159061064c575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156106755750600854610100900473ffffffffffffffffffffffffffffffffffffffff163314155b156106ac576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106b683836114f4565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526107569186906119aa565b60405180910390a250600192915050565b6060600780546104c990611915565b60006105593384846111f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab146107d0576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60076107dc8282611a1b565b5050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461082d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60066107dc8282611a1b565b6000806000610846610bb0565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156108d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fc9190611b34565b610932576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61093c33856113b2565b60025460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161097591899189918791611b56565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146109d5576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a22576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610ae9576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610b36576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c679190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610cb6576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d699190611ba2565b905080600003610da5576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060025460015483610db89190611bbb565b610dc29190611bd2565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e1b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610a91565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e9d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610f65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f899190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610fd8576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015611067573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108b9190611ba2565b9050806000036110c7576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000906110d78784611bbb565b6110e19190611bd2565b9296929550919350505050565b73ffffffffffffffffffffffffffffffffffffffff831661113b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611188576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611244576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611291576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040902054818110156112f1576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112fb8282611997565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260036020526040808220939093559085168152908120805484929061133e908490611bd2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113a491815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff82166113ff576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260409020548181101561145f576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114698282611997565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260036020526040812091909155600580548492906114a4908490611997565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016111ea565b73ffffffffffffffffffffffffffffffffffffffff8216611541576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008282546115539190611bd2565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805483929061158d908490611bd2565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561160a576020818501810151868301820152016115ee565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061165b60208301846115e4565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461168457600080fd5b50565b6000806040838503121561169a57600080fd5b82356116a581611662565b946020939093013593505050565b6000806000606084860312156116c857600080fd5b83356116d381611662565b925060208401356116e381611662565b929592945050506040919091013590565b60006020828403121561170657600080fd5b5035919050565b60006020828403121561171f57600080fd5b813561165b81611662565b6020810160038310611765577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff8411156117b5576117b561176b565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff821117156118025761180261176b565b60405283815290508082840185101561181a57600080fd5b83836020830137600060208583010152509392505050565b60006020828403121561184457600080fd5b813567ffffffffffffffff81111561185b57600080fd5b8201601f8101841361186c57600080fd5b61187b8482356020840161179a565b949350505050565b6000806040838503121561189657600080fd5b823567ffffffffffffffff8111156118ad57600080fd5b8301601f810185136118be57600080fd5b6118cd8582356020840161179a565b95602094909401359450505050565b600080604083850312156118ef57600080fd5b82356118fa81611662565b9150602083013561190a81611662565b809150509250929050565b600181811c9082168061192957607f821691505b602082108103611962577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561055d5761055d611968565b6040815260006119bd60408301856115e4565b90508260208301529392505050565b601f821115611a1657806000526020600020601f840160051c810160208510156119f35750805b601f840160051c820191505b81811015611a1357600081556001016119ff565b50505b505050565b815167ffffffffffffffff811115611a3557611a3561176b565b611a4981611a438454611915565b846119cc565b6020601f821160018114611a9b5760008315611a655750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611a13565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015611ae95787850151825560209485019460019092019101611ac9565b5084821015611b2557868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b600060208284031215611b4657600080fd5b8151801515811461165b57600080fd5b608081526000611b6960808301876115e4565b6020830195909552506040810192909252606090910152919050565b600060208284031215611b9757600080fd5b815161165b81611662565b600060208284031215611bb457600080fd5b5051919050565b808202811582820484141761055d5761055d611968565b8082018082111561055d5761055d61196856fea2646970667358221220d6ba834f25782689ed13bffb6ac9ff2c8d3b5342c94a515aea8197a76070ad3f64736f6c634300081a0033a2646970667358221220c6303c8781a872a704d6cdd850044897dca30408022610b574076ae16ffa313f64736f6c634300081a0033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061eb4f8061003c6000396000f3fe608060405234801561001057600080fd5b506004361061030a5760003560e01c80638ce7ef051161019c578063d1fd3291116100ee578063dfbdf60011610097578063f1f87f4011610071578063f1f87f40146104c3578063f2413096146104cb578063fa7626d4146104d357600080fd5b8063dfbdf600146104ab578063e13aba48146104b3578063e20c9f71146104bb57600080fd5b8063d591221f116100c8578063d591221f14610493578063d97136a21461049b578063dcba486a146104a357600080fd5b8063d1fd32911461047b578063d27b042714610483578063d509b16c1461048b57600080fd5b8063b0464fdc11610150578063ba414fa61161012a578063ba414fa614610453578063c35f9d1d1461046b578063d04cda981461047357600080fd5b8063b0464fdc1461043b578063b5508aa914610443578063b79cad091461044b57600080fd5b806392a68b8d1161018157806392a68b8d14610423578063a4aa6c7c1461042b578063ae9687dc1461043357600080fd5b80638ce7ef0514610406578063916a17c61461040e57600080fd5b80633f7286f4116102605780636ff45850116102095780637f924c4e116101e35780637f924c4e146103e157806380326680146103e957806385226c81146103f157600080fd5b80636ff45850146103c957806370557298146103d15780637ee68316146103d957600080fd5b80635539d92e1161023a5780635539d92e146103a45780635f01db7e146103ac57806366d9a9a0146103b457600080fd5b80633f7286f41461038c5780634cfc0aaa14610394578063513999621461039c57600080fd5b806328438826116102c2578063367e31231161029c578063367e3123146103745780633be9ec801461037c5780633e5e3c231461038457600080fd5b8063284388261461034f5780632ade3880146103575780632f6254fc1461036c57600080fd5b80630ea7e563116102f35780630ea7e563146103215780631142744e146103295780631ed7831c1461033157600080fd5b80630809dfef1461030f5780630a9254e414610319575b600080fd5b6103176104e0565b005b61031761066e565b610317610d6a565b610317610e53565b610339610f37565b604051610346919061977f565b60405180910390f35b610317610f99565b61035f6111e4565b604051610346919061981b565b610317611326565b610317611497565b610317611569565b610339611757565b6103396117b7565b610317611817565b6103176118f0565b610317611c6d565b610317611e9a565b6103bc612007565b6040516103469190619981565b610317612189565b610317612399565b6103176125e9565b610317612a7a565b610317612c9a565b6103f9612d6e565b6040516103469190619a1f565b610317612e3e565b61041661303e565b6040516103469190619a96565b610317613139565b61031761320c565b6103176133c1565b610416613699565b6103f9613794565b610317613864565b61045b613bf6565b6040519015158152602001610346565b610317613cca565b610317613d9c565b610317613ee0565b610317614023565b610317614166565b6103176147fa565b6103176148de565b610317614a64565b610317614ce7565b610317614e2a565b6103396150d4565b610317615134565b61031761527a565b601f5461045b9060ff1681565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561053957600080fd5b505af115801561054d573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156105bd57600080fd5b505af11580156105d1573d6000803e3d6000fd5b5050601f546040517f47e7ef2400000000000000000000000000000000000000000000000000000000815260006004820152620186a060248201526101009091046001600160a01b031692506347e7ef2491506044015b6020604051808303816000875af1158015610647573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066b9190619b2d565b50565b602480547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602580549091166112341790556040516106b49061969f565b604051809103906000f0801580156106d0573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600f81527f476174657761795a45564d2e736f6c0000000000000000000000000000000000602082015260248054925190810193909352921660448201526107b4919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc955000000000000000000000000000000000000000000000000000000001790526154d6565b602280546001600160a01b03929092167fffffffffffffffffffffffff00000000000000000000000000000000000000009283168117909155602180549092168117909155604080517f2722feee0000000000000000000000000000000000000000000000000000000081529051632722feee916004808201926020929091908290030181865afa15801561084d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108719190619b6b565b602680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691821790556040517f06447d560000000000000000000000000000000000000000000000000000000081526004810191909152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b15801561090f57600080fd5b505af1158015610923573d6000803e3d6000fd5b505050506000806000604051610938906196ac565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610974573d6000803e3d6000fd5b50602080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556021546040516012936001938493600093919216906109ca906196b9565b6109d996959493929190619b86565b604051809103906000f0801580156109f5573d6000803e3d6000fd5b50601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b03938416810291909117918290556020546040517fee2815ba00000000000000000000000000000000000000000000000000000000815260016004820152919092048316602482015291169063ee2815ba90604401600060405180830381600087803b158015610a9557600080fd5b505af1158015610aa9573d6000803e3d6000fd5b50506020546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b158015610b1357600080fd5b505af1158015610b27573d6000803e3d6000fd5b50506026546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610ba757600080fd5b505af1158015610bbb573d6000803e3d6000fd5b50506022546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610c3b57600080fd5b505af1158015610c4f573d6000803e3d6000fd5b5050601f54602480546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09281019290925261010090920490911692506347e7ef2491506044016020604051808303816000875af1158015610ccd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf19190619b2d565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610d5057600080fd5b505af1158015610d64573d6000803e3d6000fd5b50505050565b604051630618f58760e51b81527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015610dd657600080fd5b505af1158015610dea573d6000803e3d6000fd5b5050601f546040517fc835d7cc00000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063c835d7cc91506024015b600060405180830381600087803b158015610d5057600080fd5b604051630618f58760e51b81527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015610ebf57600080fd5b505af1158015610ed3573d6000803e3d6000fd5b5050601f54602480546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09281019290925261010090920490911692506347e7ef249150604401610628565b60606016805480602002602001604051908101604052809291908181526020018280548015610f8f57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610f71575b5050505050905090565b601f546025546040516370a0823160e01b81526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015610fee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110129190619c7b565b905061101f6000826154f5565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015611097573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110bb9190619b2d565b50604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561112857600080fd5b505af115801561113c573d6000803e3d6000fd5b5050601f546025546040517f23b872dd000000000000000000000000000000000000000000000000000000008152600060048201526001600160a01b039182166024820152604481018690526101009092041692506323b872dd91506064015b6020604051808303816000875af11580156111bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111df9190619b2d565b505050565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561131d57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561130657838290600052602060002001805461127990619c94565b80601f01602080910402602001604051908101604052809291908181526020018280546112a590619c94565b80156112f25780601f106112c7576101008083540402835291602001916112f2565b820191906000526020600020905b8154815290600101906020018083116112d557829003601f168201915b50505050508152602001906001019061125a565b505050508152505081526020019060010190611208565b50505050905090565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561137f57600080fd5b505af1158015611393573d6000803e3d6000fd5b5050601f546040517fc835d7cc00000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063c835d7cc9150602401600060405180830381600087803b1580156113fb57600080fd5b505af115801561140f573d6000803e3d6000fd5b50505050611495601f60019054906101000a90046001600160a01b03166001600160a01b031663f2441b326040518163ffffffff1660e01b8152600401602060405180830381865afa158015611469573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148d9190619b6b565b61321161557d565b565b604051630618f58760e51b81527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561150357600080fd5b505af1158015611517573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063eddeb1239150602401610e39565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156115c257600080fd5b505af11580156115d6573d6000803e3d6000fd5b50506020546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820152600060248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b15801561164057600080fd5b505af1158015611654573d6000803e3d6000fd5b5050604051630618f58760e51b81527fe661aed0000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b1580156116c557600080fd5b505af11580156116d9573d6000803e3d6000fd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa15801561172f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117539190619ce1565b5050565b60606018805480602002602001604051908101604052809291908181526020018280548015610f8f576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610f71575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610f8f576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610f71575050505050905090565b604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561188357600080fd5b505af1158015611897573d6000803e3d6000fd5b5050601f546040517f095ea7b300000000000000000000000000000000000000000000000000000000815260006004820152600a60248201526101009091046001600160a01b0316925063095ea7b39150604401610628565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152600a908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561194e57600080fd5b505af1158015611962573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600481018690526101009091046001600160a01b0316925063f687d12a9150602401600060405180830381600087803b1580156119c957600080fd5b505af11580156119dd573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015611a3a57600080fd5b505af1158015611a4e573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600481018590526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b158015611ab557600080fd5b505af1158015611ac9573d6000803e3d6000fd5b5050601f546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b03166004820181905260006024830152925063095ea7b391506044016020604051808303816000875af1158015611b3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b609190619b2d565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611bbf57600080fd5b505af1158015611bd3573d6000803e3d6000fd5b5050601f546025546040805160609290921b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208301528051601481840301815260348301918290527fc7012626000000000000000000000000000000000000000000000000000000009091526001600160a01b0361010090930492909216935063c7012626925061119c9190600190603801619d0d565b604051630618f58760e51b81527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015611cd957600080fd5b505af1158015611ced573d6000803e3d6000fd5b5050601f546040517fc47f002700000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f544f4b454e32000000000000000000000000000000000000000000000000000060448201526101009091046001600160a01b0316925063c47f00279150606401600060405180830381600087803b158015611d8157600080fd5b505af1158015611d95573d6000803e3d6000fd5b5050604051630618f58760e51b81527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015611e0557600080fd5b505af1158015611e19573d6000803e3d6000fd5b5050601f546040517fb84c8246000000000000000000000000000000000000000000000000000000008152602060048083019190915260248201527f544b4e320000000000000000000000000000000000000000000000000000000060448201526101009091046001600160a01b0316925063b84c82469150606401610e39565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611ef357600080fd5b505af1158015611f07573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063f687d12a9150602401600060405180830381600087803b158015611f6e57600080fd5b505af1158015611f82573d6000803e3d6000fd5b50505050611495600a601f60019054906101000a90046001600160a01b03166001600160a01b031663091d27886040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fde573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120029190619c7b565b6154f5565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561131d578382906000526020600020906002020160405180604001604052908160008201805461205e90619c94565b80601f016020809104026020016040519081016040528092919081815260200182805461208a90619c94565b80156120d75780601f106120ac576101008083540402835291602001916120d7565b820191906000526020600020905b8154815290600101906020018083116120ba57829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561217157602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161211e5790505b5050505050815250508152602001906001019061202b565b601f546025546040516370a0823160e01b81526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa1580156121de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122029190619c7b565b905061220f6000826154f5565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015612287573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ab9190619b2d565b50604051630618f58760e51b81527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561231857600080fd5b505af115801561232c573d6000803e3d6000fd5b5050601f54602480546025546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152908216928101929092526044820186905261010090920490911692506323b872dd915060640161119c565b601f546025546040516370a0823160e01b81526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa1580156123ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124129190619c7b565b905061241f6000826154f5565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261c35092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015612496573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ba9190619b2d565b50601f54602480546025546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169281019290925260448201849052610100909204909116906323b872dd906064015b6020604051808303816000875af115801561253f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125639190619b2d565b50601f546025546040516370a0823160e01b81526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa1580156125b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125dd9190619c7b565b90506111df82826154f5565b6126a26040518060400160405280600581526020017f544f4b454e000000000000000000000000000000000000000000000000000000815250601f60019054906101000a90046001600160a01b03166001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015612675573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261269d9190810190619df7565b6155de565b61272e6040518060400160405280600381526020017f544b4e0000000000000000000000000000000000000000000000000000000000815250601f60019054906101000a90046001600160a01b03166001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015612675573d6000803e3d6000fd5b60265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561278757600080fd5b505af115801561279b573d6000803e3d6000fd5b5050601f546040517fc47f002700000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f544f4b454e32000000000000000000000000000000000000000000000000000060448201526101009091046001600160a01b0316925063c47f00279150606401600060405180830381600087803b15801561282f57600080fd5b505af1158015612843573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156128a057600080fd5b505af11580156128b4573d6000803e3d6000fd5b5050601f546040517fb84c8246000000000000000000000000000000000000000000000000000000008152602060048083019190915260248201527f544b4e320000000000000000000000000000000000000000000000000000000060448201526101009091046001600160a01b0316925063b84c82469150606401600060405180830381600087803b15801561294a57600080fd5b505af115801561295e573d6000803e3d6000fd5b505050506129ee6040518060400160405280600681526020017f544f4b454e320000000000000000000000000000000000000000000000000000815250601f60019054906101000a90046001600160a01b03166001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015612675573d6000803e3d6000fd5b6114956040518060400160405280600481526020017f544b4e3200000000000000000000000000000000000000000000000000000000815250601f60019054906101000a90046001600160a01b03166001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015612675573d6000803e3d6000fd5b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612acf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612af39190619c7b565b9050612b02620186a0826154f5565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612b5b57600080fd5b505af1158015612b6f573d6000803e3d6000fd5b5050601f54602480546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09281019290925261010090920490911692506347e7ef2491506044016020604051808303816000875af1158015612bed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c119190619b2d565b506000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c8b9190619c7b565b905061175362030d40826154f5565b604051630618f58760e51b81527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015612d0657600080fd5b505af1158015612d1a573d6000803e3d6000fd5b5050601f546040517f42966c68000000000000000000000000000000000000000000000000000000008152620249f060048201526101009091046001600160a01b031692506342966c689150602401610628565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101561131d578382906000526020600020018054612db190619c94565b80601f0160208091040260200160405190810160405280929190818152602001828054612ddd90619c94565b8015612e2a5780601f10612dff57610100808354040283529160200191612e2a565b820191906000526020600020905b815481529060010190602001808311612e0d57829003601f168201915b505050505081526020019060010190612d92565b601f546025546040516370a0823160e01b81526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015612e93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eb79190619c7b565b9050612ec46000826154f5565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015612f3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f609190619b2d565b50604051630618f58760e51b81527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015612fcd57600080fd5b505af1158015612fe1573d6000803e3d6000fd5b5050601f546025546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810186905261010090920416925063a9059cbb915060440161119c565b6060601d805480602002602001604051908101604052809291908181526020016000905b8282101561131d5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561312157602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116130ce5790505b50505050508152505081526020019060010190613062565b604051630618f58760e51b81527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156131a557600080fd5b505af11580156131b9573d6000803e3d6000fd5b5050601f546040517fccc7759900000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063ccc775999150602401610e39565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015613284573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132a89190619b2d565b50604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561331557600080fd5b505af1158015613329573d6000803e3d6000fd5b5050601f546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815260006004820152602481018590526101009091046001600160a01b0316925063a9059cbb91506044015b6020604051808303816000875af115801561339d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117539190619b2d565b601f80546001600160a01b03610100808304821681027fffffffffffffffffffffff0000000000000000000000000000000000000000ff9093169290921792839055604080517f06fdde03000000000000000000000000000000000000000000000000000000008152905160009493909304909116916306fdde039160048082019286929091908290030181865afa158015613461573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526134899190810190619df7565b90506134ca6040518060400160405280600581526020017f544f4b454e000000000000000000000000000000000000000000000000000000815250826155de565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801561351f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135479190810190619df7565b90506135886040518060400160405280600381526020017f544b4e0000000000000000000000000000000000000000000000000000000000815250826155de565b6000601f60019054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156135dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136019190619e40565b905061361160128260ff166154f5565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613666573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061368a9190619c7b565b9050610d64620186a0826154f5565b6060601c805480602002602001604051908101604052809291908181526020016000905b8282101561131d5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561377c57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116137295790505b505050505081525050815260200190600101906136bd565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101561131d5783829060005260206000200180546137d790619c94565b80601f016020809104026020016040519081016040528092919081815260200182805461380390619c94565b80156138505780601f1061382557610100808354040283529160200191613850565b820191906000526020600020905b81548152906001019060200180831161383357829003601f168201915b5050505050815260200190600101906137b8565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152600a906305f5e10090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156138c657600080fd5b505af11580156138da573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600481018690526101009091046001600160a01b0316925063f687d12a9150602401600060405180830381600087803b15801561394157600080fd5b505af1158015613955573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156139b257600080fd5b505af11580156139c6573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600481018590526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b158015613a2d57600080fd5b505af1158015613a41573d6000803e3d6000fd5b5050601f546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b031660048201819052630bebc2006024830152925063095ea7b391506044016020604051808303816000875af1158015613ab7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613adb9190619b2d565b50604051630618f58760e51b81527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015613b4857600080fd5b505af1158015613b5c573d6000803e3d6000fd5b5050601f546025546040805160609290921b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208301528051601481840301815260348301918290527fc7012626000000000000000000000000000000000000000000000000000000009091526001600160a01b0361010090930492909216935063c7012626925061119c9190606490603801619d0d565b60085460009060ff1615613c0e575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015613c9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cc39190619c7b565b1415905090565b604051630618f58760e51b81527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015613d3657600080fd5b505af1158015613d4a573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063f687d12a9150602401610e39565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613df557600080fd5b505af1158015613e09573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b158015613e7057600080fd5b505af1158015613e84573d6000803e3d6000fd5b50505050611495600a601f60019054906101000a90046001600160a01b03166001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fde573d6000803e3d6000fd5b60265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613f3957600080fd5b505af1158015613f4d573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015613fbd57600080fd5b505af1158015613fd1573d6000803e3d6000fd5b5050601f546040517fccc77599000000000000000000000000000000000000000000000000000000008152600060048201526101009091046001600160a01b0316925063ccc775999150602401610e39565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561407c57600080fd5b505af1158015614090573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561410057600080fd5b505af1158015614114573d6000803e3d6000fd5b5050601f546040517fc835d7cc000000000000000000000000000000000000000000000000000000008152600060048201526101009091046001600160a01b0316925063c835d7cc9150602401610e39565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152600a908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156141c457600080fd5b505af11580156141d8573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600481018690526101009091046001600160a01b0316925063f687d12a9150602401600060405180830381600087803b15801561423f57600080fd5b505af1158015614253573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156142b057600080fd5b505af11580156142c4573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600481018590526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b15801561432b57600080fd5b505af115801561433f573d6000803e3d6000fd5b5050601f54602480546040516370a0823160e01b81526001600160a01b039182166004820152600095506101009093041692506370a082319101602060405180830381865afa158015614396573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143ba9190619c7b565b90506143c9620186a0826154f5565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561441e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144429190619c7b565b9050614451620186a0826154f5565b601f546026546040516370a0823160e01b81526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa1580156144a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144ca9190619c7b565b601f546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b03166004820181905261c350602483015291925063095ea7b3906044016020604051808303816000875af115801561453c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145609190619b2d565b50601f546025546040805160609290921b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208301528051601481840301815260348301918290527fc7012626000000000000000000000000000000000000000000000000000000009091526001600160a01b03610100909304929092169163c7012626916145f8919061c35090603801619d0d565b6020604051808303816000875af1158015614617573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061463b9190619b2d565b50601f546026546040516370a0823160e01b81526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015614691573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146b59190619c7b565b90506146d5856146c58885619e92565b6146cf9190619e92565b826154f5565b601f54602480546040516370a0823160e01b81526001600160a01b0391821660048201526000936101009004909116916370a082319101602060405180830381865afa158015614729573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061474d9190619c7b565b90506147698661475f8961c350619ea5565b6146cf9190619ea5565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156147be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147e29190619c7b565b90506147f061c350826154f5565b5050505050505050565b601f546025546040516370a0823160e01b81526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa15801561484f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148739190619c7b565b90506148806000826154f5565b601f546025546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261c350602482018190529261010090049091169063a9059cbb90604401612520565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015614956573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061497a9190619b2d565b50604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156149e757600080fd5b505af11580156149fb573d6000803e3d6000fd5b5050601f54602480546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000928101929092526044820186905261010090920490911692506323b872dd915060640161337e565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614abd57600080fd5b505af1158015614ad1573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a6004820181905293508392506101009091046001600160a01b03169063f687d12a90602401600060405180830381600087803b158015614b3d57600080fd5b505af1158015614b51573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015614bae57600080fd5b505af1158015614bc2573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b158015614c2957600080fd5b505af1158015614c3d573d6000803e3d6000fd5b50505050600080601f60019054906101000a90046001600160a01b03166001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015614c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614cba9190619ce1565b601f549193509150614cda9061010090046001600160a01b03168361557d565b610d646146cf8486619e92565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614d4057600080fd5b505af1158015614d54573d6000803e3d6000fd5b5050601f546040517fccc7759900000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063ccc775999150602401600060405180830381600087803b158015614dbc57600080fd5b505af1158015614dd0573d6000803e3d6000fd5b50505050611495601f60019054906101000a90046001600160a01b03166001600160a01b0316638b851b956040518163ffffffff1660e01b8152600401602060405180830381865afa158015611469573d6000803e3d6000fd5b601f54602480546040516370a0823160e01b81526001600160a01b0391821660048201526000936101009004909116916370a082319101602060405180830381865afa158015614e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614ea29190619c7b565b9050614eb1620186a0826154f5565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015614f06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614f2a9190619c7b565b9050614f39620186a0826154f5565b601f546040517f42966c6800000000000000000000000000000000000000000000000000000000815261c35060048201526101009091046001600160a01b0316906342966c68906024016020604051808303816000875af1158015614fa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614fc69190619b2d565b50601f54602480546040516370a0823160e01b81526001600160a01b0391821660048201526000936101009004909116916370a082319101602060405180830381865afa15801561501b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061503f9190619c7b565b905061504d61c350826154f5565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156150a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906150c69190619c7b565b9050610d6461c350826154f5565b60606015805480602002602001604051908101604052809291908181526020018280548015610f8f576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610f71575050505050905090565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561518d57600080fd5b505af11580156151a1573d6000803e3d6000fd5b50506020546040517fee2815ba00000000000000000000000000000000000000000000000000000000815260016004820152600060248201526001600160a01b03909116925063ee2815ba9150604401600060405180830381600087803b15801561520b57600080fd5b505af115801561521f573d6000803e3d6000fd5b5050604051630618f58760e51b81527f78fff396000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024016116ab565b601f546025546040516370a0823160e01b81526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa1580156152cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906152f39190619c7b565b90506153006000826154f5565b601f54602480546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201819052928101929092526000926101009004169063dd62ed3e90604401602060405180830381865afa158015615376573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061539a9190619c7b565b90506153a76000826154f5565b604051630618f58760e51b81527f10bad14700000000000000000000000000000000000000000000000000000000600482015261c35090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561541757600080fd5b505af115801561542b573d6000803e3d6000fd5b5050601f54602480546025546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152908216928101929092526044820186905261010090920490911692506323b872dd91506064016020604051808303816000875af11580156154b2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d649190619b2d565b60006154e06196c6565b6154eb848483615630565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c54906044015b60006040518083038186803b15801561556157600080fd5b505afa158015615575573d6000803e3d6000fd5b505050505050565b6040517f515361f60000000000000000000000000000000000000000000000000000000081526001600160a01b03808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f690604401615549565b6040517ff320d963000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f320d963906155499085908590600401619eb8565b60008061563d85846156ab565b90506156a06040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f7879000000815250828660405160200161568b929190619edd565b604051602081830303815290604052856156b7565b9150505b9392505050565b60006156a483836156e5565b60c081015151600090156156db576156d484848460c00151615700565b90506156a4565b6156d484846158a6565b60006156f18383615991565b6156a4838360200151846156b7565b60008061570b61599d565b905060006157198683615a70565b905060006157308260600151836020015185615f16565b9050600061574083838989616128565b9050600061574d82616fa5565b602081015181519192509060030b156157c057898260400151604051602001615777929190619eff565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526157b791600401619f80565b60405180910390fd5b60006158036040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001617174565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90615856908490600401619f80565b602060405180830381865afa158015615873573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906158979190619b6b565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc925906158fb908790600401619f80565b600060405180830381865afa158015615918573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526159409190810190619fb3565b9050600061596e828560405160200161595a929190619fe8565b604051602081830303815290604052617374565b90506001600160a01b0381166154eb57848460405160200161577792919061a017565b61175382826000617387565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90615a2490849060040161a0c2565b600060405180830381865afa158015615a41573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615a699190810190619df7565b9250505090565b615aa26040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050615aed6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b615af68561748a565b60208201526000615b068661786f565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015615b48573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615b709190810190619df7565b86838560200151604051602001615b8a949392919061a109565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190615be2908590600401619f80565b600060405180830381865afa158015615bff573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615c279190810190619df7565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690615c6f90849060040161a20d565b602060405180830381865afa158015615c8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615cb09190619b2d565b615cc55781604051602001615777919061a25f565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890615d0a90849060040161a2f1565b600060405180830381865afa158015615d27573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615d4f9190810190619df7565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690615d9690849060040161a343565b602060405180830381865afa158015615db3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615dd79190619b2d565b15615e6c576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890615e2190849060040161a343565b600060405180830381865afa158015615e3e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615e669190810190619df7565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001615e91919061a395565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401615ebd929190619eb8565b600060405180830381865afa158015615eda573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615f029190810190619df7565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081615f325790505090506040518060400160405280600481526020017f677265700000000000000000000000000000000000000000000000000000000081525081600081518110615f9257615f9261a401565b60200260200101819052506040518060400160405280600381526020017f2d726c000000000000000000000000000000000000000000000000000000000081525081600181518110615fe657615fe661a401565b602002602001018190525084604051602001616002919061a430565b604051602081830303815290604052816002815181106160245761602461a401565b602002602001018190525082604051602001616040919061a49c565b604051602081830303815290604052816003815181106160625761606261a401565b6020026020010181905250600061607882616fa5565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506161099060408051808201825260008082526020918201528151808301909252845182528085019082015290617af2565b61611e5785604051602001615777919061a4dd565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015616178565b511590565b6162ec57826020015115616234576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a4016157b7565b8260c00151156162ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a4016157b7565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161630557905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806163609061a56e565b935060ff16815181106163755761637561a401565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016163c6919061a58d565b6040516020818303038152906040528282806163e19061a56e565b935060ff16815181106163f6576163f661a401565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806164439061a56e565b935060ff16815181106164585761645861a401565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806164a59061a56e565b935060ff16815181106164ba576164ba61a401565b602002602001018190525087602001518282806164d69061a56e565b935060ff16815181106164eb576164eb61a401565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806165389061a56e565b935060ff168151811061654d5761654d61a401565b6020908102919091010152875182826165658161a56e565b935060ff168151811061657a5761657a61a401565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806165c79061a56e565b935060ff16815181106165dc576165dc61a401565b60200260200101819052506165f046617b53565b82826165fb8161a56e565b935060ff16815181106166105761661061a401565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c65000000000000000000000000000000000081525082828061665d9061a56e565b935060ff16815181106166725761667261a401565b60200260200101819052508682828061668a9061a56e565b935060ff168151811061669f5761669f61a401565b60209081029190910101528551156167c65760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826166f08161a56e565b935060ff16815181106167055761670561a401565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90616755908990600401619f80565b600060405180830381865afa158015616772573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261679a9190810190619df7565b82826167a58161a56e565b935060ff16815181106167ba576167ba61a401565b60200260200101819052505b8460200151156168965760408051808201909152601281527f2d2d766572696679536f75726365436f646500000000000000000000000000006020820152828261680f8161a56e565b935060ff16815181106168245761682461a401565b60200260200101819052506040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152508282806168719061a56e565b935060ff16815181106168865761688661a401565b6020026020010181905250616a5d565b6168ce6161738660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6169615760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826169118161a56e565b935060ff16815181106169265761692661a401565b60200260200101819052508460a00151604051602001616946919061a430565b6040516020818303038152906040528282806168719061a56e565b8460c001511580156169a45750604080890151815180830183526000808252602091820152825180840190935281518352908101908201526169a290511590565b155b15616a5d5760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826169e88161a56e565b935060ff16815181106169fd576169fd61a401565b6020026020010181905250616a1188617bf3565b604051602001616a21919061a430565b604051602081830303815290604052828280616a3c9061a56e565b935060ff1681518110616a5157616a5161a401565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152616a9190511590565b616b265760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282616ad48161a56e565b935060ff1681518110616ae957616ae961a401565b60200260200101819052508460400151828280616b059061a56e565b935060ff1681518110616b1a57616b1a61a401565b60200260200101819052505b606085015115616c475760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282616b6f8161a56e565b935060ff1681518110616b8457616b8461a401565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015616bf3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616c1b9190810190619df7565b8282616c268161a56e565b935060ff1681518110616c3b57616c3b61a401565b60200260200101819052505b60e08501515115616cee5760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282616c918161a56e565b935060ff1681518110616ca657616ca661a401565b6020026020010181905250616cc28560e0015160000151617b53565b8282616ccd8161a56e565b935060ff1681518110616ce257616ce261a401565b60200260200101819052505b60e08501516020015115616d985760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282616d3b8161a56e565b935060ff1681518110616d5057616d5061a401565b6020026020010181905250616d6c8560e0015160200151617b53565b8282616d778161a56e565b935060ff1681518110616d8c57616d8c61a401565b60200260200101819052505b60e08501516040015115616e425760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282616de58161a56e565b935060ff1681518110616dfa57616dfa61a401565b6020026020010181905250616e168560e0015160400151617b53565b8282616e218161a56e565b935060ff1681518110616e3657616e3661a401565b60200260200101819052505b60e08501516060015115616eec5760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282616e8f8161a56e565b935060ff1681518110616ea457616ea461a401565b6020026020010181905250616ec08560e0015160600151617b53565b8282616ecb8161a56e565b935060ff1681518110616ee057616ee061a401565b60200260200101819052505b60008160ff1667ffffffffffffffff811115616f0a57616f0a619d2f565b604051908082528060200260200182016040528015616f3d57816020015b6060815260200190600190039081616f285790505b50905060005b8260ff168160ff161015616f9657838160ff1681518110616f6657616f6661a401565b6020026020010151828260ff1681518110616f8357616f8361a401565b6020908102919091010152600101616f43565b5093505050505b949350505050565b616fcc6040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916170529186910161a5f8565b600060405180830381865afa15801561706f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526170979190810190619df7565b905060006170a586836186e2565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b81526004016170d59190619a1f565b6000604051808303816000875af11580156170f4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261711c919081019061a63f565b805190915060030b158015906171355750602081015151155b80156171445750604081015151155b1561611e578160008151811061715c5761715c61a401565b6020026020010151604051602001615777919061a6f5565b606060006171a98560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506171e09082905b90618837565b1561733d57600061725d82617257846172516172238a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b9061885e565b906188c0565b604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506172c1908290618837565b1561732b57604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617328905b8290618945565b90505b6173348161896b565b925050506156a4565b821561735657848460405160200161577792919061a8e1565b50506040805160208101909152600081526156a4565b509392505050565b6000808251602084016000f09392505050565b8160a001511561739657505050565b60006173a38484846189d4565b905060006173b082616fa5565b602081015181519192509060030b15801561744c5750604080518082018252600781527f53554343455353000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261744c906040805180820182526000808252602091820152815180830190925284518252808501908201526171da565b1561745957505050505050565b60408201515115617479578160400151604051602001615777919061a988565b80604051602001615777919061a9e6565b606060006174bf8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150617524905b8290617af2565b1561759357604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526156a49061758e908390618f6f565b61896b565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526175f5905b8290618ff9565b6001036176c257604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261765b90617321565b50604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526156a49061758e905b8390618945565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526177219061751d565b1561785857604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290617789908390619093565b90506000816001835161779c9190619ea5565b815181106177ac576177ac61a401565b6020026020010151905061784f61758e6178226040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290618f6f565b95945050505050565b82604051602001615777919061aa51565b50919050565b606060006178a48360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506179069061751d565b15617914576156a48161896b565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617973906175ee565b6001036179dd57604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526156a49061758e906176bb565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617a3c9061751d565b1561785857604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290617aa4908390619093565b9050600181511115617ae0578060028251617abf9190619ea5565b81518110617acf57617acf61a401565b602002602001015192505050919050565b5082604051602001615777919061aa51565b805182516000911115617b07575060006154ef565b81518351602085015160009291617b1d91619e92565b617b279190619ea5565b905082602001518103617b3e5760019150506154ef565b82516020840151819020912014905092915050565b60606000617b6083619138565b600101905060008167ffffffffffffffff811115617b8057617b80619d2f565b6040519080825280601f01601f191660200182016040528015617baa576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084617bb457509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091617c7f905b829061921a565b15617cbf57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617d1e90617c78565b15617d5e57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617dbd90617c78565b15617dfd57505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617e5c90617c78565b80617ec15750604080518082018252601081527f47504c2d322e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617ec190617c78565b15617f0157505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617f6090617c78565b80617fc55750604080518082018252601081527f47504c2d332e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617fc590617c78565b1561800557505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261806490617c78565b806180c95750604080518082018252601181527f4c47504c2d322e312d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526180c990617c78565b1561810957505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261816890617c78565b806181cd5750604080518082018252601181527f4c47504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526181cd90617c78565b1561820d57505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261826c90617c78565b156182ac57505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261830b90617c78565b1561834b57505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526183aa90617c78565b156183ea57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261844990617c78565b1561848957505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e3000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526184e890617c78565b1561852857505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261858790617c78565b806185ec5750604080518082018252601181527f4147504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526185ec90617c78565b1561862c57505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261868b90617c78565b156186cb57505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151615777929060200161ab2f565b60608060005b845181101561876d57818582815181106187045761870461a401565b602002602001015160405160200161871d929190619fe8565b60405160208183030381529060405291506001855161873c9190619ea5565b81146187655781604051602001618753919061ac98565b60405160208183030381529060405291505b6001016186e8565b5060408051600380825260808201909252600091816020015b606081526020019060019003908161878657905050905083816000815181106187b1576187b161a401565b60200260200101819052506040518060400160405280600281526020017f2d63000000000000000000000000000000000000000000000000000000000000815250816001815181106188055761880561a401565b602002602001018190525081816002815181106188245761882461a401565b6020908102919091010152949350505050565b6020808301518351835192840151600093618855929184919061922e565b14159392505050565b60408051808201909152600080825260208201526000618890846000015185602001518560000151866020015161933f565b90508360200151816188a29190619ea5565b845185906188b1908390619ea5565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156188e55750816154ef565b602080830151908401516001911461890c5750815160208481015190840151829020919020145b801561893d57825184518590618923908390619ea5565b9052508251602085018051618939908390619e92565b9052505b509192915050565b604080518082019091526000808252602082015261896483838361945f565b5092915050565b60606000826000015167ffffffffffffffff81111561898c5761898c619d2f565b6040519080825280601f01601f1916602001820160405280156189b6576020820181803683370190505b5090506000602082019050618964818560200151866000015161950a565b606060006189e061599d565b6040805160ff808252612000820190925291925060009190816020015b60608152602001906001900390816189fd57905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280618a589061a56e565b935060ff1681518110618a6d57618a6d61a401565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001618abe919061acd9565b604051602081830303815290604052828280618ad99061a56e565b935060ff1681518110618aee57618aee61a401565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280618b3b9061a56e565b935060ff1681518110618b5057618b5061a401565b602002602001018190525082604051602001618b6c919061a49c565b604051602081830303815290604052828280618b879061a56e565b935060ff1681518110618b9c57618b9c61a401565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280618be99061a56e565b935060ff1681518110618bfe57618bfe61a401565b6020026020010181905250618c138784619584565b8282618c1e8161a56e565b935060ff1681518110618c3357618c3361a401565b602090810291909101015285515115618cdf5760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282618c858161a56e565b935060ff1681518110618c9a57618c9a61a401565b6020026020010181905250618cb3866000015184619584565b8282618cbe8161a56e565b935060ff1681518110618cd357618cd361a401565b60200260200101819052505b856080015115618d4d5760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282618d288161a56e565b935060ff1681518110618d3d57618d3d61a401565b6020026020010181905250618db3565b8415618db35760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282618d928161a56e565b935060ff1681518110618da757618da761a401565b60200260200101819052505b60408601515115618e4f5760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282618dfd8161a56e565b935060ff1681518110618e1257618e1261a401565b60200260200101819052508560400151828280618e2e9061a56e565b935060ff1681518110618e4357618e4361a401565b60200260200101819052505b856060015115618eb95760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282618e988161a56e565b935060ff1681518110618ead57618ead61a401565b60200260200101819052505b60008160ff1667ffffffffffffffff811115618ed757618ed7619d2f565b604051908082528060200260200182016040528015618f0a57816020015b6060815260200190600190039081618ef55790505b50905060005b8260ff168160ff161015618f6357838160ff1681518110618f3357618f3361a401565b6020026020010151828260ff1681518110618f5057618f5061a401565b6020908102919091010152600101618f10565b50979650505050505050565b6040805180820190915260008082526020820152815183511015618f945750816154ef565b81518351602085015160009291618faa91619e92565b618fb49190619ea5565b60208401519091506001908214618fd5575082516020840151819020908220145b8015618ff057835185518690618fec908390619ea5565b9052505b50929392505050565b600080826000015161901d856000015186602001518660000151876020015161933f565b6190279190619e92565b90505b8351602085015161903b9190619e92565b8111618964578161904b8161ad1e565b92505082600001516190828560200151836190669190619ea5565b86516190729190619ea5565b838660000151876020015161933f565b61908c9190619e92565b905061902a565b606060006190a18484618ff9565b6190ac906001619e92565b67ffffffffffffffff8111156190c4576190c4619d2f565b6040519080825280602002602001820160405280156190f757816020015b60608152602001906001900390816190e25790505b50905060005b815181101561736c5761911361758e8686618945565b8282815181106191255761912561a401565b60209081029190910101526001016190fd565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310619181577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106191ad576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106191cb57662386f26fc10000830492506010015b6305f5e10083106191e3576305f5e100830492506008015b61271083106191f757612710830492506004015b60648310619209576064830492506002015b600a83106154ef5760010192915050565b600061922683836195c4565b159392505050565b60008085841161933557602084116192e15760008415619279576001619255866020619ea5565b61926090600861ad38565b61926b90600261ae36565b6192759190619ea5565b1990505b83518116856192888989619e92565b6192929190619ea5565b805190935082165b8181146192cc578784116192b45787945050505050616f9d565b836192be8161ae42565b94505082845116905061929a565b6192d68785619e92565b945050505050616f9d565b8383206192ee8588619ea5565b6192f89087619e92565b91505b85821061933357848220808203619320576193168684619e92565b9350505050616f9d565b61932b600184619ea5565b9250506192fb565b505b5092949350505050565b6000838186851161944a57602085116193f9576000851561938b576001619367876020619ea5565b61937290600861ad38565b61937d90600261ae36565b6193879190619ea5565b1990505b8451811660008761939c8b8b619e92565b6193a69190619ea5565b855190915083165b8281146193eb578186106193d3576193c68b8b619e92565b9650505050505050616f9d565b856193dd8161ad1e565b9650508386511690506193ae565b859650505050505050616f9d565b508383206000905b61940b8689619ea5565b8211619448578583208082036194275783945050505050616f9d565b619432600185619e92565b93505081806194409061ad1e565b925050619401565b505b6194548787619e92565b979650505050505050565b60408051808201909152600080825260208201526000619491856000015186602001518660000151876020015161933f565b6020808701805191860191909152519091506194ad9082619ea5565b8352845160208601516194c09190619e92565b81036194cf5760008552619501565b835183516194dd9190619e92565b855186906194ec908390619ea5565b90525083516194fb9082619e92565b60208601525b50909392505050565b602081106195425781518352619521602084619e92565b925061952e602083619e92565b915061953b602082619ea5565b905061950a565b6000198115619571576001619558836020619ea5565b6195649061010061ae36565b61956e9190619ea5565b90505b9151835183169219169190911790915250565b606060006195928484615a70565b80516020808301516040519394506195ac9390910161ae59565b60405160208183030381529060405291505092915050565b81518151600091908111156195d7575081515b6020808501519084015160005b83811015619690578251825180821461966057600019602087101561963f57600184619611896020619ea5565b61961b9190619e92565b61962690600861ad38565b61963190600261ae36565b61963b9190619ea5565b1990505b818116838216818103911461965d5797506154ef9650505050505050565b50505b61966b602086619e92565b9450619678602085619e92565b935050506020816196899190619e92565b90506195e4565b508451865161611e919061aeb1565b610b678061aed283390190565b61106f8061ba3983390190565b6120728061caa883390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161970961970e565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016197096040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156197c05783516001600160a01b0316835260209384019390920191600101619799565b509095945050505050565b60005b838110156197e65781810151838201526020016197ce565b50506000910152565b600081518084526198078160208601602086016197cb565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015619917577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b818110156198fd577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a85030183526198e78486516197ef565b60209586019590945092909201916001016198ad565b509197505050602094850194929092019150600101619843565b50929695505050505050565b600081518084526020840193506020830160005b828110156199775781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101619937565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015619917577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281518051604087526199ed60408801826197ef565b9050602082015191508681036020880152619a088183619923565b9650505060209384019391909101906001016199a9565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015619917577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452619a818583516197ef565b94506020938401939190910190600101619a47565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015619917577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152619b176040870182619923565b9550506020938401939190910190600101619abe565b600060208284031215619b3f57600080fd5b815180151581146156a457600080fd5b80516001600160a01b0381168114619b6657600080fd5b919050565b600060208284031215619b7d57600080fd5b6156a482619b4f565b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff8816604083015286606083015260038610619c40577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a0830152619c6160c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b600060208284031215619c8d57600080fd5b5051919050565b600181811c90821680619ca857607f821691505b602082108103617869577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60008060408385031215619cf457600080fd5b619cfd83619b4f565b6020939093015192949293505050565b604081526000619d2060408301856197ef565b90508260208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715619d8157619d81619d2f565b60405290565b60008067ffffffffffffffff841115619da257619da2619d2f565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715619dd157619dd1619d2f565b604052838152905080828401851015619de957600080fd5b61736c8460208301856197cb565b600060208284031215619e0957600080fd5b815167ffffffffffffffff811115619e2057600080fd5b8201601f81018413619e3157600080fd5b6154eb84825160208401619d87565b600060208284031215619e5257600080fd5b815160ff811681146156a457600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156154ef576154ef619e63565b818103818111156154ef576154ef619e63565b604081526000619ecb60408301856197ef565b82810360208401526156a081856197ef565b6001600160a01b0383168152604060208201526000616f9d60408301846197ef565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351619f3781601a8501602088016197cb565b7f3a20000000000000000000000000000000000000000000000000000000000000601a918401918201528351619f7481601c8401602088016197cb565b01601c01949350505050565b6020815260006156a460208301846197ef565b600082601f830112619fa457600080fd5b6156a483835160208501619d87565b600060208284031215619fc557600080fd5b815167ffffffffffffffff811115619fdc57600080fd5b6154eb84828501619f93565b60008351619ffa8184602088016197cb565b83519083019061a00e8183602088016197cb565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161a04f81601a8501602088016197cb565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161a08c8160338401602088016197cb565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f555400000000000000000000000000000000000000000060608201526080602082015260006156a460808301846197ef565b6000855161a11b818460208a016197cb565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161a155816001840160208a016197cb565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161a1938160028401602089016197cb565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161a1d58160028401602088016197cb565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061a22060408301846197ef565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161a29781601f8501602087016197cb565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061a30460408301846197ef565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061a35660408301846197ef565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161a3cd8160148501602087016197cb565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161a4688160018501602087016197cb565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161a4ae8184602087016197cb565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161a56181604b8501602087016197cb565b91909101604b0192915050565b600060ff821660ff810361a5845761a584619e63565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161a5eb8160298501602087016197cb565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f504154480000000000000000000060608201526080602082015260006156a460808301846197ef565b60006020828403121561a65157600080fd5b815167ffffffffffffffff81111561a66857600080fd5b82016060818503121561a67a57600080fd5b61a682619d5e565b81518060030b811461a69357600080fd5b8152602082015167ffffffffffffffff81111561a6af57600080fd5b61a6bb86828501619f93565b602083015250604082015167ffffffffffffffff81111561a6db57600080fd5b61a6e786828501619f93565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161a7538160218501602087016197cb565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161a93f8160218501602088016197cb565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161a97c81602e8401602088016197cb565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161a5eb8160298501602087016197cb565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161aa448160228501602087016197cb565b9190910160220192915050565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161aa8981600e8501602087016197cb565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161ab678160188501602088016197cb565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161aba481601c8401602088016197cb565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161acaa8184602087016197cb565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161ad1181601c8501602087016197cb565b91909101601c0192915050565b6000600019820361ad315761ad31619e63565b5060010190565b80820281158282048414176154ef576154ef619e63565b6001815b600184111561ad8a5780850481111561ad6e5761ad6e619e63565b600184161561ad7c57908102905b60019390931c92800261ad53565b935093915050565b60008261ada1575060016154ef565b8161adae575060006154ef565b816001811461adc4576002811461adce5761adea565b60019150506154ef565b60ff84111561addf5761addf619e63565b50506001821b6154ef565b5060208310610133831016604e8410600b841016171561ae0d575081810a6154ef565b61ae1a600019848461ad4f565b806000190482111561ae2e5761ae2e619e63565b029392505050565b60006156a4838361ad92565b60008161ae515761ae51619e63565b506000190190565b6000835161ae6b8184602088016197cb565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161aea58160018401602088016197cb565b01600101949350505050565b818103600083128015838313168383128216171561896457618964619e6356fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea2646970667358221220c069e4cb3e16bcddc5b07d6ba4019a062fbae92d695877ad19f66fc9ac6047fd64736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea2646970667358221220eaa287ea22d82335c1d97ef661cb17f1296902daa41cca34de107966248e954364736f6c634300081a003360c060405234801561001057600080fd5b5060405161207238038061207283398101604081905261002f916101f0565b6001600160a01b038216158061004c57506001600160a01b038116155b1561006a5760405163d92e233d60e01b815260040160405180910390fd5b60066100768982610342565b5060076100838882610342565b506008805460ff191660ff881617905560808590528360028111156100aa576100aa610400565b60a08160028111156100be576100be610400565b905250600192909255600080546001600160a01b039283166001600160a01b0319909116179055600880549190921661010002610100600160a81b0319909116179055506104169350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261013357600080fd5b81516001600160401b0381111561014c5761014c61010c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561017a5761017a61010c565b60405281815283820160200185101561019257600080fd5b60005b828110156101b157602081860181015183830182015201610195565b506000918101602001919091529392505050565b8051600381106101d457600080fd5b919050565b80516001600160a01b03811681146101d457600080fd5b600080600080600080600080610100898b03121561020d57600080fd5b88516001600160401b0381111561022357600080fd5b61022f8b828c01610122565b60208b015190995090506001600160401b0381111561024d57600080fd5b6102598b828c01610122565b975050604089015160ff8116811461027057600080fd5b60608a0151909650945061028660808a016101c5565b60a08a0151909450925061029c60c08a016101d9565b91506102aa60e08a016101d9565b90509295985092959890939650565b600181811c908216806102cd57607f821691505b6020821081036102ed57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561033d57806000526020600020601f840160051c8101602085101561031a5750805b601f840160051c820191505b8181101561033a5760008155600101610326565b50505b505050565b81516001600160401b0381111561035b5761035b61010c565b61036f8161036984546102b9565b846102f3565b6020601f8211600181146103a3576000831561038b5750848201515b600019600385901b1c1916600184901b17845561033a565b600084815260208120601f198516915b828110156103d357878501518255602094850194600190920191016103b3565b50848210156103f15786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a051611c1b61045760003960006103440152600081816102f001528181610bdc01528181610ce201528181610efe01526110040152611c1b6000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c806395d89b41116100f9578063ccc7759911610097578063eddeb12311610071578063eddeb12314610461578063f2441b3214610474578063f687d12a14610494578063fc5fecd5146104a757600080fd5b8063ccc77599146103d4578063d9eeebed146103e7578063dd62ed3e1461041b57600080fd5b8063b84c8246116100d3578063b84c824614610386578063c47f00271461039b578063c7012626146103ae578063c835d7cc146103c157600080fd5b806395d89b4114610337578063a3413d031461033f578063a9059cbb1461037357600080fd5b80633ce4a5bc116101665780634d8943bb116101405780634d8943bb146102ac57806370a08231146102b557806385e1f4d0146102eb5780638b851b951461031257600080fd5b80633ce4a5bc1461024657806342966c681461028657806347e7ef241461029957600080fd5b806318160ddd1161019757806318160ddd1461021657806323b872dd1461021e578063313ce5671461023157600080fd5b806306fdde03146101be578063091d2788146101dc578063095ea7b3146101f3575b600080fd5b6101c66104ba565b6040516101d39190611648565b60405180910390f35b6101e560015481565b6040519081526020016101d3565b610206610201366004611687565b61054c565b60405190151581526020016101d3565b6005546101e5565b61020661022c3660046116b3565b610563565b60085460405160ff90911681526020016101d3565b61026173735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d3565b6102066102943660046116f4565b6105fa565b6102066102a7366004611687565b61060e565b6101e560025481565b6101e56102c336600461170d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6101e57f000000000000000000000000000000000000000000000000000000000000000081565b60085461026190610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6101c6610767565b6103667f000000000000000000000000000000000000000000000000000000000000000081565b6040516101d3919061172a565b610206610381366004611687565b610776565b610399610394366004611832565b610783565b005b6103996103a9366004611832565b6107e0565b6102066103bc366004611883565b610839565b6103996103cf36600461170d565b610988565b6103996103e236600461170d565b610a9c565b6103ef610bb0565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101d3565b6101e56104293660046118dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205490565b61039961046f3660046116f4565b610dce565b6000546102619073ffffffffffffffffffffffffffffffffffffffff1681565b6103996104a23660046116f4565b610e50565b6103ef6104b53660046116f4565b610ed2565b6060600680546104c990611915565b80601f01602080910402602001604051908101604052809291908181526020018280546104f590611915565b80156105425780601f1061051757610100808354040283529160200191610542565b820191906000526020600020905b81548152906001019060200180831161052557829003601f168201915b5050505050905090565b60006105593384846110ee565b5060015b92915050565b60006105708484846111f7565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460209081526040808320338452909152902054828110156105db576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105ef85336105ea8685611997565b6110ee565b506001949350505050565b600061060633836113b2565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab1480159061064c575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156106755750600854610100900473ffffffffffffffffffffffffffffffffffffffff163314155b156106ac576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106b683836114f4565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526107569186906119aa565b60405180910390a250600192915050565b6060600780546104c990611915565b60006105593384846111f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab146107d0576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60076107dc8282611a1b565b5050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461082d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60066107dc8282611a1b565b6000806000610846610bb0565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156108d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fc9190611b34565b610932576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61093c33856113b2565b60025460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161097591899189918791611b56565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146109d5576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a22576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610ae9576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610b36576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c679190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610cb6576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d699190611ba2565b905080600003610da5576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060025460015483610db89190611bbb565b610dc29190611bd2565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e1b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610a91565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e9d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610f65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f899190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610fd8576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015611067573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108b9190611ba2565b9050806000036110c7576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000906110d78784611bbb565b6110e19190611bd2565b9296929550919350505050565b73ffffffffffffffffffffffffffffffffffffffff831661113b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611188576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611244576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611291576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040902054818110156112f1576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112fb8282611997565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260036020526040808220939093559085168152908120805484929061133e908490611bd2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113a491815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff82166113ff576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260409020548181101561145f576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114698282611997565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260036020526040812091909155600580548492906114a4908490611997565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016111ea565b73ffffffffffffffffffffffffffffffffffffffff8216611541576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008282546115539190611bd2565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805483929061158d908490611bd2565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561160a576020818501810151868301820152016115ee565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061165b60208301846115e4565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461168457600080fd5b50565b6000806040838503121561169a57600080fd5b82356116a581611662565b946020939093013593505050565b6000806000606084860312156116c857600080fd5b83356116d381611662565b925060208401356116e381611662565b929592945050506040919091013590565b60006020828403121561170657600080fd5b5035919050565b60006020828403121561171f57600080fd5b813561165b81611662565b6020810160038310611765577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff8411156117b5576117b561176b565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff821117156118025761180261176b565b60405283815290508082840185101561181a57600080fd5b83836020830137600060208583010152509392505050565b60006020828403121561184457600080fd5b813567ffffffffffffffff81111561185b57600080fd5b8201601f8101841361186c57600080fd5b61187b8482356020840161179a565b949350505050565b6000806040838503121561189657600080fd5b823567ffffffffffffffff8111156118ad57600080fd5b8301601f810185136118be57600080fd5b6118cd8582356020840161179a565b95602094909401359450505050565b600080604083850312156118ef57600080fd5b82356118fa81611662565b9150602083013561190a81611662565b809150509250929050565b600181811c9082168061192957607f821691505b602082108103611962577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561055d5761055d611968565b6040815260006119bd60408301856115e4565b90508260208301529392505050565b601f821115611a1657806000526020600020601f840160051c810160208510156119f35750805b601f840160051c820191505b81811015611a1357600081556001016119ff565b50505b505050565b815167ffffffffffffffff811115611a3557611a3561176b565b611a4981611a438454611915565b846119cc565b6020601f821160018114611a9b5760008315611a655750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611a13565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015611ae95787850151825560209485019460019092019101611ac9565b5084821015611b2557868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b600060208284031215611b4657600080fd5b8151801515811461165b57600080fd5b608081526000611b6960808301876115e4565b6020830195909552506040810192909252606090910152919050565b600060208284031215611b9757600080fd5b815161165b81611662565b600060208284031215611bb457600080fd5b5051919050565b808202811582820484141761055d5761055d611968565b8082018082111561055d5761055d61196856fea26469706673582212202a06c5d72036d88c206ff2bfdd016b3ce8555bc0090e8bb5487bc61ea043732b64736f6c634300081a0033a264697066735822122066e9537345b817c2ed415cac956c3089c0217820d9083d6a4d72dd266953717664736f6c634300081a0033", } // ZRC20TestABI is the input ABI used to generate the binding from. diff --git a/v2/test/utils/ReceiverEVM.sol b/v2/test/utils/ReceiverEVM.sol index 2d5e1f717..35e36b0e0 100644 --- a/v2/test/utils/ReceiverEVM.sol +++ b/v2/test/utils/ReceiverEVM.sol @@ -73,14 +73,7 @@ contract ReceiverEVM is IReceiverEVMEvents, ReentrancyGuard { emit ReceivedRevert(msg.sender, revertContext); } - function onCall( - MessageContext calldata, - bytes calldata - ) - external - payable - returns (bytes memory) - { + function onCall(MessageContext calldata, bytes calldata) external payable returns (bytes memory) { emit ReceivedOnCall(); return ""; } diff --git a/v2/test/utils/SenderZEVM.sol b/v2/test/utils/SenderZEVM.sol index a268c2f7f..c23fa2b8c 100644 --- a/v2/test/utils/SenderZEVM.sol +++ b/v2/test/utils/SenderZEVM.sol @@ -42,10 +42,7 @@ contract SenderZEVM { uint256 gasLimit = 1; IZRC20(zrc20).approve(gateway, gasLimit); - CallOptions memory callOptions = CallOptions({ - gasLimit: gasLimit, - isArbitraryCall: true - }); + CallOptions memory callOptions = CallOptions({ gasLimit: gasLimit, isArbitraryCall: true }); // Pass encoded call to gateway IGatewayZEVM(gateway).call(receiver, zrc20, message, callOptions, revertOptions); @@ -83,10 +80,7 @@ contract SenderZEVM { onRevertGasLimit: 0 }); - CallOptions memory callOptions = CallOptions({ - gasLimit: 1, - isArbitraryCall: true - }); + CallOptions memory callOptions = CallOptions({ gasLimit: 1, isArbitraryCall: true }); // Pass encoded call to gateway IGatewayZEVM(gateway).withdrawAndCall(receiver, amount, zrc20, message, callOptions, revertOptions); diff --git a/v2/test/utils/TestUniversalContract.sol b/v2/test/utils/TestUniversalContract.sol index 19a9fc226..d7a9cd42f 100644 --- a/v2/test/utils/TestUniversalContract.sol +++ b/v2/test/utils/TestUniversalContract.sol @@ -30,8 +30,8 @@ contract TestUniversalContract is UniversalContract, Revertable { /// @dev Decodes the message and emits a ContextData event. function onCall( MessageContext calldata context, - address /*zrc20*/, - uint256 /*amount*/, + address, /*zrc20*/ + uint256, /*amount*/ bytes calldata message ) external diff --git a/v2/test/utils/upgrades/ZetaConnectorNativeUpgradeTest.sol b/v2/test/utils/upgrades/ZetaConnectorNativeUpgradeTest.sol index d236dbf0b..0151a3ac2 100644 --- a/v2/test/utils/upgrades/ZetaConnectorNativeUpgradeTest.sol +++ b/v2/test/utils/upgrades/ZetaConnectorNativeUpgradeTest.sol @@ -86,7 +86,7 @@ contract ZetaConnectorNativeUpgradeTest is ZetaConnectorBase { address to, uint256 amount, bytes calldata data, - bytes32 /*internalSendHash*/, + bytes32, /*internalSendHash*/ RevertContext calldata revertContext ) external diff --git a/v2/types/ReceiverEVM.ts b/v2/types/ReceiverEVM.ts index b1e5f896a..8497bf776 100644 --- a/v2/types/ReceiverEVM.ts +++ b/v2/types/ReceiverEVM.ts @@ -279,7 +279,7 @@ export interface ReceiverEVM extends BaseContract { ): Promise; onCall: TypedContractMethod< - [messageContext: MessageContextStruct, message: BytesLike], + [arg0: MessageContextStruct, arg1: BytesLike], [string], "payable" >; @@ -323,7 +323,7 @@ export interface ReceiverEVM extends BaseContract { getFunction( nameOrSignature: "onCall" ): TypedContractMethod< - [messageContext: MessageContextStruct, message: BytesLike], + [arg0: MessageContextStruct, arg1: BytesLike], [string], "payable" >; diff --git a/v2/types/TestUniversalContract.ts b/v2/types/TestUniversalContract.ts index 9e3af20d6..171aa6558 100644 --- a/v2/types/TestUniversalContract.ts +++ b/v2/types/TestUniversalContract.ts @@ -155,8 +155,8 @@ export interface TestUniversalContract extends BaseContract { onCall: TypedContractMethod< [ context: MessageContextStruct, - zrc20: AddressLike, - amount: BigNumberish, + arg1: AddressLike, + arg2: BigNumberish, message: BytesLike ], [void], @@ -178,8 +178,8 @@ export interface TestUniversalContract extends BaseContract { ): TypedContractMethod< [ context: MessageContextStruct, - zrc20: AddressLike, - amount: BigNumberish, + arg1: AddressLike, + arg2: BigNumberish, message: BytesLike ], [void], diff --git a/v2/types/ZetaConnectorNative.ts b/v2/types/ZetaConnectorNative.ts index 61e876b73..ea04ccf26 100644 --- a/v2/types/ZetaConnectorNative.ts +++ b/v2/types/ZetaConnectorNative.ts @@ -542,18 +542,13 @@ export interface ZetaConnectorNative extends BaseContract { >; withdraw: TypedContractMethod< - [to: AddressLike, amount: BigNumberish, internalSendHash: BytesLike], + [to: AddressLike, amount: BigNumberish, arg2: BytesLike], [void], "nonpayable" >; withdrawAndCall: TypedContractMethod< - [ - to: AddressLike, - amount: BigNumberish, - data: BytesLike, - internalSendHash: BytesLike - ], + [to: AddressLike, amount: BigNumberish, data: BytesLike, arg3: BytesLike], [void], "nonpayable" >; @@ -563,7 +558,7 @@ export interface ZetaConnectorNative extends BaseContract { to: AddressLike, amount: BigNumberish, data: BytesLike, - internalSendHash: BytesLike, + arg3: BytesLike, revertContext: RevertContextStruct ], [void], @@ -671,19 +666,14 @@ export interface ZetaConnectorNative extends BaseContract { getFunction( nameOrSignature: "withdraw" ): TypedContractMethod< - [to: AddressLike, amount: BigNumberish, internalSendHash: BytesLike], + [to: AddressLike, amount: BigNumberish, arg2: BytesLike], [void], "nonpayable" >; getFunction( nameOrSignature: "withdrawAndCall" ): TypedContractMethod< - [ - to: AddressLike, - amount: BigNumberish, - data: BytesLike, - internalSendHash: BytesLike - ], + [to: AddressLike, amount: BigNumberish, data: BytesLike, arg3: BytesLike], [void], "nonpayable" >; @@ -694,7 +684,7 @@ export interface ZetaConnectorNative extends BaseContract { to: AddressLike, amount: BigNumberish, data: BytesLike, - internalSendHash: BytesLike, + arg3: BytesLike, revertContext: RevertContextStruct ], [void], diff --git a/v2/types/ZetaConnectorNativeUpgradeTest.ts b/v2/types/ZetaConnectorNativeUpgradeTest.ts index 2f64d3a99..851d562df 100644 --- a/v2/types/ZetaConnectorNativeUpgradeTest.ts +++ b/v2/types/ZetaConnectorNativeUpgradeTest.ts @@ -556,18 +556,13 @@ export interface ZetaConnectorNativeUpgradeTest extends BaseContract { >; withdraw: TypedContractMethod< - [to: AddressLike, amount: BigNumberish, internalSendHash: BytesLike], + [to: AddressLike, amount: BigNumberish, arg2: BytesLike], [void], "nonpayable" >; withdrawAndCall: TypedContractMethod< - [ - to: AddressLike, - amount: BigNumberish, - data: BytesLike, - internalSendHash: BytesLike - ], + [to: AddressLike, amount: BigNumberish, data: BytesLike, arg3: BytesLike], [void], "nonpayable" >; @@ -577,7 +572,7 @@ export interface ZetaConnectorNativeUpgradeTest extends BaseContract { to: AddressLike, amount: BigNumberish, data: BytesLike, - internalSendHash: BytesLike, + arg3: BytesLike, revertContext: RevertContextStruct ], [void], @@ -685,19 +680,14 @@ export interface ZetaConnectorNativeUpgradeTest extends BaseContract { getFunction( nameOrSignature: "withdraw" ): TypedContractMethod< - [to: AddressLike, amount: BigNumberish, internalSendHash: BytesLike], + [to: AddressLike, amount: BigNumberish, arg2: BytesLike], [void], "nonpayable" >; getFunction( nameOrSignature: "withdrawAndCall" ): TypedContractMethod< - [ - to: AddressLike, - amount: BigNumberish, - data: BytesLike, - internalSendHash: BytesLike - ], + [to: AddressLike, amount: BigNumberish, data: BytesLike, arg3: BytesLike], [void], "nonpayable" >; @@ -708,7 +698,7 @@ export interface ZetaConnectorNativeUpgradeTest extends BaseContract { to: AddressLike, amount: BigNumberish, data: BytesLike, - internalSendHash: BytesLike, + arg3: BytesLike, revertContext: RevertContextStruct ], [void], diff --git a/v2/types/factories/Address__factory.ts b/v2/types/factories/Address__factory.ts index f409d3d34..8e4f2460b 100644 --- a/v2/types/factories/Address__factory.ts +++ b/v2/types/factories/Address__factory.ts @@ -42,7 +42,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220525f69d25bb56f3e15d69270d52349856b0d9c92f346a3233a662178749fd33264736f6c634300081a0033"; + "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122092e7aecc4d2ccb1e367abefe25d03e613e1b1d9f823e0dffcbae8c231c191fbf64736f6c634300081a0033"; type AddressConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/BeaconProxy__factory.ts b/v2/types/factories/BeaconProxy__factory.ts index f2d549740..a918ea36a 100644 --- a/v2/types/factories/BeaconProxy__factory.ts +++ b/v2/types/factories/BeaconProxy__factory.ts @@ -97,7 +97,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a06040526040516105eb3803806105eb83398101604081905261002291610387565b61002c828261003e565b506001600160a01b0316608052610484565b610047826100fe565b6040516001600160a01b038316907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a28051156100f2576100ed826001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e7919061044d565b82610211565b505050565b6100fa610288565b5050565b806001600160a01b03163b60000361013957604051631933b43b60e21b81526001600160a01b03821660048201526024015b60405180910390fd5b807fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392831617905560408051635c60da1b60e01b81529051600092841691635c60da1b9160048083019260209291908290030181865afa1580156101b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d9919061044d565b9050806001600160a01b03163b6000036100fa57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610130565b6060600080846001600160a01b03168460405161022e9190610468565b600060405180830381855af49150503d8060008114610269576040519150601f19603f3d011682016040523d82523d6000602084013e61026e565b606091505b50909250905061027f8583836102a9565b95945050505050565b34156102a75760405163b398979f60e01b815260040160405180910390fd5b565b6060826102be576102b982610308565b610301565b81511580156102d557506001600160a01b0384163b155b156102fe57604051639996b31560e01b81526001600160a01b0385166004820152602401610130565b50805b9392505050565b8051156103185780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80516001600160a01b038116811461034857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561037e578181015183820152602001610366565b50506000910152565b6000806040838503121561039a57600080fd5b6103a383610331565b60208401519092506001600160401b038111156103bf57600080fd5b8301601f810185136103d057600080fd5b80516001600160401b038111156103e9576103e961034d565b604051601f8201601f19908116603f011681016001600160401b03811182821017156104175761041761034d565b60405281815282820160200187101561042f57600080fd5b610440826020830160208601610363565b8093505050509250929050565b60006020828403121561045f57600080fd5b61030182610331565b6000825161047a818460208701610363565b9190910192915050565b60805161014d61049e60003960006024015261014d6000f3fe608060405261000c61000e565b005b61001e610019610020565b6100b6565b565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561008d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100b191906100da565b905090565b3660008037600080366000845af43d6000803e8080156100d5573d6000f35b3d6000fd5b6000602082840312156100ec57600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461011057600080fd5b939250505056fea2646970667358221220361a0dc2b1da1d9258f68e8b1f1c9708b2cd315a53fe53be9f849efbd82649d964736f6c634300081a0033"; + "0x60a06040526040516105eb3803806105eb83398101604081905261002291610387565b61002c828261003e565b506001600160a01b0316608052610484565b610047826100fe565b6040516001600160a01b038316907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a28051156100f2576100ed826001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e7919061044d565b82610211565b505050565b6100fa610288565b5050565b806001600160a01b03163b60000361013957604051631933b43b60e21b81526001600160a01b03821660048201526024015b60405180910390fd5b807fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392831617905560408051635c60da1b60e01b81529051600092841691635c60da1b9160048083019260209291908290030181865afa1580156101b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d9919061044d565b9050806001600160a01b03163b6000036100fa57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610130565b6060600080846001600160a01b03168460405161022e9190610468565b600060405180830381855af49150503d8060008114610269576040519150601f19603f3d011682016040523d82523d6000602084013e61026e565b606091505b50909250905061027f8583836102a9565b95945050505050565b34156102a75760405163b398979f60e01b815260040160405180910390fd5b565b6060826102be576102b982610308565b610301565b81511580156102d557506001600160a01b0384163b155b156102fe57604051639996b31560e01b81526001600160a01b0385166004820152602401610130565b50805b9392505050565b8051156103185780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80516001600160a01b038116811461034857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561037e578181015183820152602001610366565b50506000910152565b6000806040838503121561039a57600080fd5b6103a383610331565b60208401519092506001600160401b038111156103bf57600080fd5b8301601f810185136103d057600080fd5b80516001600160401b038111156103e9576103e961034d565b604051601f8201601f19908116603f011681016001600160401b03811182821017156104175761041761034d565b60405281815282820160200187101561042f57600080fd5b610440826020830160208601610363565b8093505050509250929050565b60006020828403121561045f57600080fd5b61030182610331565b6000825161047a818460208701610363565b9190910192915050565b60805161014d61049e60003960006024015261014d6000f3fe608060405261000c61000e565b005b61001e610019610020565b6100b6565b565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561008d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100b191906100da565b905090565b3660008037600080366000845af43d6000803e8080156100d5573d6000f35b3d6000fd5b6000602082840312156100ec57600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461011057600080fd5b939250505056fea2646970667358221220f057f84db33183a0d3a6c76e9622f96eee9a0aa593cc3a6a4209d5809c1fe2fd64736f6c634300081a0033"; type BeaconProxyConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/ERC1967Proxy__factory.ts b/v2/types/factories/ERC1967Proxy__factory.ts index f6bae4bc5..4db9eef86 100644 --- a/v2/types/factories/ERC1967Proxy__factory.ts +++ b/v2/types/factories/ERC1967Proxy__factory.ts @@ -86,7 +86,7 @@ const _abi = [ ] as const; const _bytecode = - "0x608060405260405161041d38038061041d83398101604081905261002291610268565b61002c8282610033565b5050610358565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b919061033c565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b038111156102ae57600080fd5b8301601f810185136102bf57600080fd5b80516001600160401b038111156102d8576102d861022e565b604051601f8201601f19908116603f011681016001600160401b03811182821017156103065761030661022e565b60405281815282820160200187101561031e57600080fd5b61032f826020830160208601610244565b8093505050509250929050565b6000825161034e818460208701610244565b9190910192915050565b60b7806103666000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220c882f735e5f8d521dae58bd08ba62d17508690600f26f161a5901184c092b5d964736f6c634300081a0033"; + "0x608060405260405161041d38038061041d83398101604081905261002291610268565b61002c8282610033565b5050610358565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b919061033c565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b038111156102ae57600080fd5b8301601f810185136102bf57600080fd5b80516001600160401b038111156102d8576102d861022e565b604051601f8201601f19908116603f011681016001600160401b03811182821017156103065761030661022e565b60405281815282820160200187101561031e57600080fd5b61032f826020830160208601610244565b8093505050509250929050565b6000825161034e818460208701610244565b9190910192915050565b60b7806103666000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea264697066735822122068bfc28cb2d118b34036260d2fe0b28765c5c90aab15cf90c1fb21f7a4b1fb6d64736f6c634300081a0033"; type ERC1967ProxyConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/ERC1967Utils__factory.ts b/v2/types/factories/ERC1967Utils__factory.ts index 54d95849b..329e33fc5 100644 --- a/v2/types/factories/ERC1967Utils__factory.ts +++ b/v2/types/factories/ERC1967Utils__factory.ts @@ -98,7 +98,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122091156d60084c9fce5d95d631aade7a5afdd10bcc0a25ba43333a535126264e7264736f6c634300081a0033"; + "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206d1d9a34e41300a1f4abe728c05aea568c8b941becc75807d526810fe900e81464736f6c634300081a0033"; type ERC1967UtilsConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/ERC20CustodyUpgradeTest__factory.ts b/v2/types/factories/ERC20CustodyUpgradeTest__factory.ts index a8b7d7464..4ba106f4e 100644 --- a/v2/types/factories/ERC20CustodyUpgradeTest__factory.ts +++ b/v2/types/factories/ERC20CustodyUpgradeTest__factory.ts @@ -998,7 +998,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a060405230608052348015601357600080fd5b5060805161295861003d60003960008181611928015281816119510152611b2701526129586000f3fe6080604052600436106101c25760003560e01c806385f438c1116100f7578063ad3cb1cc11610095578063d9caed1211610064578063d9caed12146105f6578063e609055e14610616578063e63ab1e914610636578063eab103df1461066a57600080fd5b8063ad3cb1cc14610530578063c0c53b8b14610586578063d547741f146105a6578063d936547e146105c657600080fd5b806399a3c356116100d157806399a3c356146104bb5780639a590427146104db5780639b19251a146104fb578063a217fddf1461051b57600080fd5b806385f438c11461040257806391d1485414610436578063950837aa1461049b57600080fd5b80633f4ba83a11610164578063570618e11161013e578063570618e1146103625780635b112591146103965780635c975abb146103b65780638456cb59146103ed57600080fd5b80633f4ba83a146103255780634f1ef2861461033a57806352d1902d1461034d57600080fd5b8063248a9ca3116101a0578063248a9ca314610256578063252f07bf146102b35780632f2ff15d146102e557806336568abe1461030557600080fd5b806301ffc9a7146101c7578063116191b6146101fc57806321fc65f214610234575b600080fd5b3480156101d357600080fd5b506101e76101e236600461216e565b61068a565b60405190151581526020015b60405180910390f35b34801561020857600080fd5b5060005461021c906001600160a01b031681565b6040516001600160a01b0390911681526020016101f3565b34801561024057600080fd5b5061025461024f36600461220e565b610723565b005b34801561026257600080fd5b506102a5610271366004612281565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101f3565b3480156102bf57600080fd5b506002546101e79074010000000000000000000000000000000000000000900460ff1681565b3480156102f157600080fd5b5061025461030036600461229a565b6108cc565b34801561031157600080fd5b5061025461032036600461229a565b610916565b34801561033157600080fd5b50610254610967565b6102546103483660046122f9565b61099c565b34801561035957600080fd5b506102a56109bb565b34801561036e57600080fd5b506102a57f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a81565b3480156103a257600080fd5b5060025461021c906001600160a01b031681565b3480156103c257600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101e7565b3480156103f957600080fd5b506102546109ea565b34801561040e57600080fd5b506102a57f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b34801561044257600080fd5b506101e761045136600461229a565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156104a757600080fd5b506102546104b6366004612402565b610a1c565b3480156104c757600080fd5b506102546104d636600461241f565b610ba1565b3480156104e757600080fd5b506102546104f6366004612402565b610d4f565b34801561050757600080fd5b50610254610516366004612402565b610e03565b34801561052757600080fd5b506102a5600081565b34801561053c57600080fd5b506105796040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101f391906124e6565b34801561059257600080fd5b506102546105a1366004612537565b610ebd565b3480156105b257600080fd5b506102546105c136600461229a565b6111b7565b3480156105d257600080fd5b506101e76105e1366004612402565b60016020526000908152604090205460ff1681565b34801561060257600080fd5b50610254610611366004612582565b6111fb565b34801561062257600080fd5b506102546106313660046125c3565b611312565b34801561064257600080fd5b506102a57f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b34801561067657600080fd5b50610254610685366004612662565b61155d565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061071d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61072b6115b3565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461075581611634565b61075d61163e565b6001600160a01b03851660009081526001602052604090205460ff166107af576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546107c9906001600160a01b0387811691168661169c565b6000546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690635131ab599061081a9088908a908990899089906004016126c8565b600060405180830381600087803b15801561083457600080fd5b505af1158015610848573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167f6478cbb6e28c0823c691dfd74c01c985634faddd4c401b990fe4ec26277ea8d58686866040516108939392919061270b565b60405180910390a3506108c560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461090681611634565b6109108383611736565b50505050565b6001600160a01b0381163314610958576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109628282611805565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61099181611634565b6109996118ab565b50565b6109a461191d565b6109ad826119ed565b6109b782826119f8565b5050565b60006109c5611b1c565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a1481611634565b610999611b7e565b6000610a2781611634565b6001600160a01b038216610a67576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254610a9e907f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4906001600160a01b0316611805565b50600254610ad6907f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a906001600160a01b0316611805565b50610b017f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483611736565b50610b2c7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a83611736565b50600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0384169081179091556040805182815260208101929092527f4d3470c839d3c4dd664eec934b920c12fe0966e3185103dd40149496815df2b6910160405180910390a15050565b610ba96115b3565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610bd381611634565b610bdb61163e565b6001600160a01b03861660009081526001602052604090205460ff16610c2d576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610c47906001600160a01b0388811691168761169c565b6000546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063aa0c0fc190610c9a9089908b908a908a908a908a906004016127da565b600060405180830381600087803b158015610cb457600080fd5b505af1158015610cc8573d6000803e3d6000fd5b50505050856001600160a01b0316876001600160a01b03167f7b53ec10a80164e60591c43d9c222e9354886981b880a3fba19c9ceb77fb972187878787604051610d159493929190612831565b60405180910390a350610d4760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a610d7981611634565b6001600160a01b038216610db9576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216600081815260016020526040808220805460ff19169055517f51085ddf9ebdded84b76e829eb58c4078e4b5bdf97d9a94723f336039da467919190a25050565b7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a610e2d81611634565b6001600160a01b038216610e6d576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166000818152600160208190526040808320805460ff1916909217909155517faab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a549190a25050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f085750825b905060008267ffffffffffffffff166001148015610f255750303b155b905081158015610f33575080155b15610f6a576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fcb5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0388161580610fe857506001600160a01b038716155b80610ffa57506001600160a01b038616155b15611031576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611039611bd9565b611041611be1565b611049611bd9565b611051611bf1565b600080546001600160a01b03808b167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617835560028054918b169190921617905561109f9087611736565b506110ca7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611736565b506110f57f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e488611736565b506111207f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a87611736565b5061114b7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a88611736565b5083156111ad5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546111f181611634565b6109108383611805565b6112036115b3565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461122d81611634565b61123561163e565b6001600160a01b03831660009081526001602052604090205460ff16611287576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61129b6001600160a01b038416858461169c565b826001600160a01b0316846001600160a01b03167fd4dabfe72081670cc78f2ebda8e2eddaf3feebde6288dcb8fe673b3dc201b5a4846040516112e091815260200190565b60405180910390a35061096260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b61131a6115b3565b61132261163e565b60025474010000000000000000000000000000000000000000900460ff16611376576040517f73cba66300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03841660009081526001602052604090205460ff166113c8576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015611428573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144c919061285d565b90506114636001600160a01b038616333087611c01565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038616907f1dafa057cc5c3bccb5ad974129a2bccd3c74002d9dfd7062404ba9523b18d6ae9089908990859085906370a0823190602401602060405180830381865afa1580156114ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150e919061285d565b6115189190612876565b878760405161152b9594939291906128b0565b60405180910390a250610d4760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b600061156881611634565b506002805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0161162e576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6109998133611c3a565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff161561169a576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040516001600160a01b0383811660248301526044820183905261096291859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611cc7565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166117fb576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556117b13390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061071d565b600091505061071d565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156117fb576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061071d565b6118b3611d43565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806119b657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166119aa7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b1561169a576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006109b781611634565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611a70575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611a6d9181019061285d565b60015b611ab6576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611b12576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611aad565b6109628383611d9e565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461169a576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b8661163e565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258336118ff565b61169a611df4565b611be9611df4565b61169a611e5b565b611bf9611df4565b61169a611e63565b6040516001600160a01b0384811660248301528381166044830152606482018390526109109186918216906323b872dd906084016116c9565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166109b7576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611aad565b6000611cdc6001600160a01b03841683611e96565b90508051600014158015611d01575080806020019051810190611cff91906128e9565b155b15610962576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401611aad565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1661169a576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611da782611eab565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611dec576109628282611f53565b6109b7611fc9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661169a576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611710611df4565b611e6b611df4565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff19169055565b6060611ea483836000612001565b9392505050565b806001600160a01b03163b600003611efa576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611aad565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611f709190612906565b600060405180830381855af49150503d8060008114611fab576040519150601f19603f3d011682016040523d82523d6000602084013e611fb0565b606091505b5091509150611fc08583836120b7565b95945050505050565b341561169a576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608147101561203f576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401611aad565b600080856001600160a01b0316848660405161205b9190612906565b60006040518083038185875af1925050503d8060008114612098576040519150601f19603f3d011682016040523d82523d6000602084013e61209d565b606091505b50915091506120ad8683836120b7565b9695505050505050565b6060826120cc576120c78261212c565b611ea4565b81511580156120e357506001600160a01b0384163b155b15612125576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611aad565b5080611ea4565b80511561213c5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561218057600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611ea457600080fd5b6001600160a01b038116811461099957600080fd5b60008083601f8401126121d757600080fd5b50813567ffffffffffffffff8111156121ef57600080fd5b60208301915083602082850101111561220757600080fd5b9250929050565b60008060008060006080868803121561222657600080fd5b8535612231816121b0565b94506020860135612241816121b0565b935060408601359250606086013567ffffffffffffffff81111561226457600080fd5b612270888289016121c5565b969995985093965092949392505050565b60006020828403121561229357600080fd5b5035919050565b600080604083850312156122ad57600080fd5b8235915060208301356122bf816121b0565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561230c57600080fd5b8235612317816121b0565b9150602083013567ffffffffffffffff81111561233357600080fd5b8301601f8101851361234457600080fd5b803567ffffffffffffffff81111561235e5761235e6122ca565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156123ca576123ca6122ca565b6040528181528282016020018710156123e257600080fd5b816020840160208301376000602083830101528093505050509250929050565b60006020828403121561241457600080fd5b8135611ea4816121b0565b60008060008060008060a0878903121561243857600080fd5b8635612443816121b0565b95506020870135612453816121b0565b945060408701359350606087013567ffffffffffffffff81111561247657600080fd5b61248289828a016121c5565b909450925050608087013567ffffffffffffffff8111156124a257600080fd5b87016080818a0312156124b457600080fd5b809150509295509295509295565b60005b838110156124dd5781810151838201526020016124c5565b50506000910152565b60208152600082518060208401526125058160408501602087016124c2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008060006060848603121561254c57600080fd5b8335612557816121b0565b92506020840135612567816121b0565b91506040840135612577816121b0565b809150509250925092565b60008060006060848603121561259757600080fd5b83356125a2816121b0565b925060208401356125b2816121b0565b929592945050506040919091013590565b600080600080600080608087890312156125dc57600080fd5b863567ffffffffffffffff8111156125f357600080fd5b6125ff89828a016121c5565b9097509550506020870135612613816121b0565b935060408701359250606087013567ffffffffffffffff81111561263657600080fd5b61264289828a016121c5565b979a9699509497509295939492505050565b801515811461099957600080fd5b60006020828403121561267457600080fd5b8135611ea481612654565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015260806060820152600061270060808301848661267f565b979650505050505050565b838152604060208201526000611fc060408301848661267f565b60008135612732816121b0565b6001600160a01b03168352602082013561274b816121b0565b6001600160a01b03166020840152604082810135908401526060820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe101811261279957600080fd5b820160208101903567ffffffffffffffff8111156127b657600080fd5b8036038213156127c557600080fd5b60806060860152611fc060808601828461267f565b6001600160a01b03871681526001600160a01b038616602082015284604082015260a06060820152600061281260a08301858761267f565b82810360808401526128248185612725565b9998505050505050505050565b84815260606020820152600061284b60608301858761267f565b82810360408401526127008185612725565b60006020828403121561286f57600080fd5b5051919050565b8181038181111561071d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6060815260006128c460608301878961267f565b85602084015282810360408401526128dd81858761267f565b98975050505050505050565b6000602082840312156128fb57600080fd5b8151611ea481612654565b600082516129188184602087016124c2565b919091019291505056fea26469706673582212209677fb20584c2da2d9821bbbc7955ade138c175013e15534e533f173d0e2389c64736f6c634300081a0033"; + "0x60a060405230608052348015601357600080fd5b5060805161295861003d60003960008181611928015281816119510152611b2701526129586000f3fe6080604052600436106101c25760003560e01c806385f438c1116100f7578063ad3cb1cc11610095578063d9caed1211610064578063d9caed12146105f6578063e609055e14610616578063e63ab1e914610636578063eab103df1461066a57600080fd5b8063ad3cb1cc14610530578063c0c53b8b14610586578063d547741f146105a6578063d936547e146105c657600080fd5b806399a3c356116100d157806399a3c356146104bb5780639a590427146104db5780639b19251a146104fb578063a217fddf1461051b57600080fd5b806385f438c11461040257806391d1485414610436578063950837aa1461049b57600080fd5b80633f4ba83a11610164578063570618e11161013e578063570618e1146103625780635b112591146103965780635c975abb146103b65780638456cb59146103ed57600080fd5b80633f4ba83a146103255780634f1ef2861461033a57806352d1902d1461034d57600080fd5b8063248a9ca3116101a0578063248a9ca314610256578063252f07bf146102b35780632f2ff15d146102e557806336568abe1461030557600080fd5b806301ffc9a7146101c7578063116191b6146101fc57806321fc65f214610234575b600080fd5b3480156101d357600080fd5b506101e76101e236600461216e565b61068a565b60405190151581526020015b60405180910390f35b34801561020857600080fd5b5060005461021c906001600160a01b031681565b6040516001600160a01b0390911681526020016101f3565b34801561024057600080fd5b5061025461024f36600461220e565b610723565b005b34801561026257600080fd5b506102a5610271366004612281565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101f3565b3480156102bf57600080fd5b506002546101e79074010000000000000000000000000000000000000000900460ff1681565b3480156102f157600080fd5b5061025461030036600461229a565b6108cc565b34801561031157600080fd5b5061025461032036600461229a565b610916565b34801561033157600080fd5b50610254610967565b6102546103483660046122f9565b61099c565b34801561035957600080fd5b506102a56109bb565b34801561036e57600080fd5b506102a57f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a81565b3480156103a257600080fd5b5060025461021c906001600160a01b031681565b3480156103c257600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101e7565b3480156103f957600080fd5b506102546109ea565b34801561040e57600080fd5b506102a57f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b34801561044257600080fd5b506101e761045136600461229a565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156104a757600080fd5b506102546104b6366004612402565b610a1c565b3480156104c757600080fd5b506102546104d636600461241f565b610ba1565b3480156104e757600080fd5b506102546104f6366004612402565b610d4f565b34801561050757600080fd5b50610254610516366004612402565b610e03565b34801561052757600080fd5b506102a5600081565b34801561053c57600080fd5b506105796040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101f391906124e6565b34801561059257600080fd5b506102546105a1366004612537565b610ebd565b3480156105b257600080fd5b506102546105c136600461229a565b6111b7565b3480156105d257600080fd5b506101e76105e1366004612402565b60016020526000908152604090205460ff1681565b34801561060257600080fd5b50610254610611366004612582565b6111fb565b34801561062257600080fd5b506102546106313660046125c3565b611312565b34801561064257600080fd5b506102a57f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b34801561067657600080fd5b50610254610685366004612662565b61155d565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061071d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61072b6115b3565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461075581611634565b61075d61163e565b6001600160a01b03851660009081526001602052604090205460ff166107af576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546107c9906001600160a01b0387811691168661169c565b6000546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690635131ab599061081a9088908a908990899089906004016126c8565b600060405180830381600087803b15801561083457600080fd5b505af1158015610848573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167f6478cbb6e28c0823c691dfd74c01c985634faddd4c401b990fe4ec26277ea8d58686866040516108939392919061270b565b60405180910390a3506108c560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461090681611634565b6109108383611736565b50505050565b6001600160a01b0381163314610958576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109628282611805565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61099181611634565b6109996118ab565b50565b6109a461191d565b6109ad826119ed565b6109b782826119f8565b5050565b60006109c5611b1c565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a1481611634565b610999611b7e565b6000610a2781611634565b6001600160a01b038216610a67576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254610a9e907f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4906001600160a01b0316611805565b50600254610ad6907f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a906001600160a01b0316611805565b50610b017f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483611736565b50610b2c7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a83611736565b50600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0384169081179091556040805182815260208101929092527f4d3470c839d3c4dd664eec934b920c12fe0966e3185103dd40149496815df2b6910160405180910390a15050565b610ba96115b3565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610bd381611634565b610bdb61163e565b6001600160a01b03861660009081526001602052604090205460ff16610c2d576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610c47906001600160a01b0388811691168761169c565b6000546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063aa0c0fc190610c9a9089908b908a908a908a908a906004016127da565b600060405180830381600087803b158015610cb457600080fd5b505af1158015610cc8573d6000803e3d6000fd5b50505050856001600160a01b0316876001600160a01b03167f7b53ec10a80164e60591c43d9c222e9354886981b880a3fba19c9ceb77fb972187878787604051610d159493929190612831565b60405180910390a350610d4760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a610d7981611634565b6001600160a01b038216610db9576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216600081815260016020526040808220805460ff19169055517f51085ddf9ebdded84b76e829eb58c4078e4b5bdf97d9a94723f336039da467919190a25050565b7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a610e2d81611634565b6001600160a01b038216610e6d576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166000818152600160208190526040808320805460ff1916909217909155517faab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a549190a25050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f085750825b905060008267ffffffffffffffff166001148015610f255750303b155b905081158015610f33575080155b15610f6a576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fcb5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0388161580610fe857506001600160a01b038716155b80610ffa57506001600160a01b038616155b15611031576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611039611bd9565b611041611be1565b611049611bd9565b611051611bf1565b600080546001600160a01b03808b167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617835560028054918b169190921617905561109f9087611736565b506110ca7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611736565b506110f57f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e488611736565b506111207f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a87611736565b5061114b7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a88611736565b5083156111ad5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546111f181611634565b6109108383611805565b6112036115b3565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461122d81611634565b61123561163e565b6001600160a01b03831660009081526001602052604090205460ff16611287576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61129b6001600160a01b038416858461169c565b826001600160a01b0316846001600160a01b03167fd4dabfe72081670cc78f2ebda8e2eddaf3feebde6288dcb8fe673b3dc201b5a4846040516112e091815260200190565b60405180910390a35061096260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b61131a6115b3565b61132261163e565b60025474010000000000000000000000000000000000000000900460ff16611376576040517f73cba66300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03841660009081526001602052604090205460ff166113c8576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015611428573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144c919061285d565b90506114636001600160a01b038616333087611c01565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038616907f1dafa057cc5c3bccb5ad974129a2bccd3c74002d9dfd7062404ba9523b18d6ae9089908990859085906370a0823190602401602060405180830381865afa1580156114ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150e919061285d565b6115189190612876565b878760405161152b9594939291906128b0565b60405180910390a250610d4760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b600061156881611634565b506002805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0161162e576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6109998133611c3a565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff161561169a576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040516001600160a01b0383811660248301526044820183905261096291859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611cc7565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166117fb576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556117b13390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061071d565b600091505061071d565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156117fb576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061071d565b6118b3611d43565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806119b657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166119aa7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b1561169a576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006109b781611634565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611a70575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611a6d9181019061285d565b60015b611ab6576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611b12576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611aad565b6109628383611d9e565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461169a576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b8661163e565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258336118ff565b61169a611df4565b611be9611df4565b61169a611e5b565b611bf9611df4565b61169a611e63565b6040516001600160a01b0384811660248301528381166044830152606482018390526109109186918216906323b872dd906084016116c9565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166109b7576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611aad565b6000611cdc6001600160a01b03841683611e96565b90508051600014158015611d01575080806020019051810190611cff91906128e9565b155b15610962576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401611aad565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1661169a576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611da782611eab565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611dec576109628282611f53565b6109b7611fc9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661169a576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611710611df4565b611e6b611df4565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff19169055565b6060611ea483836000612001565b9392505050565b806001600160a01b03163b600003611efa576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611aad565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611f709190612906565b600060405180830381855af49150503d8060008114611fab576040519150601f19603f3d011682016040523d82523d6000602084013e611fb0565b606091505b5091509150611fc08583836120b7565b95945050505050565b341561169a576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608147101561203f576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401611aad565b600080856001600160a01b0316848660405161205b9190612906565b60006040518083038185875af1925050503d8060008114612098576040519150601f19603f3d011682016040523d82523d6000602084013e61209d565b606091505b50915091506120ad8683836120b7565b9695505050505050565b6060826120cc576120c78261212c565b611ea4565b81511580156120e357506001600160a01b0384163b155b15612125576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611aad565b5080611ea4565b80511561213c5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561218057600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611ea457600080fd5b6001600160a01b038116811461099957600080fd5b60008083601f8401126121d757600080fd5b50813567ffffffffffffffff8111156121ef57600080fd5b60208301915083602082850101111561220757600080fd5b9250929050565b60008060008060006080868803121561222657600080fd5b8535612231816121b0565b94506020860135612241816121b0565b935060408601359250606086013567ffffffffffffffff81111561226457600080fd5b612270888289016121c5565b969995985093965092949392505050565b60006020828403121561229357600080fd5b5035919050565b600080604083850312156122ad57600080fd5b8235915060208301356122bf816121b0565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561230c57600080fd5b8235612317816121b0565b9150602083013567ffffffffffffffff81111561233357600080fd5b8301601f8101851361234457600080fd5b803567ffffffffffffffff81111561235e5761235e6122ca565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156123ca576123ca6122ca565b6040528181528282016020018710156123e257600080fd5b816020840160208301376000602083830101528093505050509250929050565b60006020828403121561241457600080fd5b8135611ea4816121b0565b60008060008060008060a0878903121561243857600080fd5b8635612443816121b0565b95506020870135612453816121b0565b945060408701359350606087013567ffffffffffffffff81111561247657600080fd5b61248289828a016121c5565b909450925050608087013567ffffffffffffffff8111156124a257600080fd5b87016080818a0312156124b457600080fd5b809150509295509295509295565b60005b838110156124dd5781810151838201526020016124c5565b50506000910152565b60208152600082518060208401526125058160408501602087016124c2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008060006060848603121561254c57600080fd5b8335612557816121b0565b92506020840135612567816121b0565b91506040840135612577816121b0565b809150509250925092565b60008060006060848603121561259757600080fd5b83356125a2816121b0565b925060208401356125b2816121b0565b929592945050506040919091013590565b600080600080600080608087890312156125dc57600080fd5b863567ffffffffffffffff8111156125f357600080fd5b6125ff89828a016121c5565b9097509550506020870135612613816121b0565b935060408701359250606087013567ffffffffffffffff81111561263657600080fd5b61264289828a016121c5565b979a9699509497509295939492505050565b801515811461099957600080fd5b60006020828403121561267457600080fd5b8135611ea481612654565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015260806060820152600061270060808301848661267f565b979650505050505050565b838152604060208201526000611fc060408301848661267f565b60008135612732816121b0565b6001600160a01b03168352602082013561274b816121b0565b6001600160a01b03166020840152604082810135908401526060820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe101811261279957600080fd5b820160208101903567ffffffffffffffff8111156127b657600080fd5b8036038213156127c557600080fd5b60806060860152611fc060808601828461267f565b6001600160a01b03871681526001600160a01b038616602082015284604082015260a06060820152600061281260a08301858761267f565b82810360808401526128248185612725565b9998505050505050505050565b84815260606020820152600061284b60608301858761267f565b82810360408401526127008185612725565b60006020828403121561286f57600080fd5b5051919050565b8181038181111561071d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6060815260006128c460608301878961267f565b85602084015282810360408401526128dd81858761267f565b98975050505050505050565b6000602082840312156128fb57600080fd5b8151611ea481612654565b600082516129188184602087016124c2565b919091019291505056fea2646970667358221220fbb55424e7ee194b89ec113d95e0692cfe9170bbcc6967609a29f30f15ae2be764736f6c634300081a0033"; type ERC20CustodyUpgradeTestConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/ERC20Custody__factory.ts b/v2/types/factories/ERC20Custody__factory.ts index 8048c93fe..a01db0df1 100644 --- a/v2/types/factories/ERC20Custody__factory.ts +++ b/v2/types/factories/ERC20Custody__factory.ts @@ -970,7 +970,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a060405230608052348015601357600080fd5b5060805161299161003d600039600081816119610152818161198a0152611b6001526129916000f3fe6080604052600436106101c25760003560e01c806385f438c1116100f7578063ad3cb1cc11610095578063d9caed1211610064578063d9caed12146105f6578063e609055e14610616578063e63ab1e914610636578063eab103df1461066a57600080fd5b8063ad3cb1cc14610530578063c0c53b8b14610586578063d547741f146105a6578063d936547e146105c657600080fd5b806399a3c356116100d157806399a3c356146104bb5780639a590427146104db5780639b19251a146104fb578063a217fddf1461051b57600080fd5b806385f438c11461040257806391d1485414610436578063950837aa1461049b57600080fd5b80633f4ba83a11610164578063570618e11161013e578063570618e1146103625780635b112591146103965780635c975abb146103b65780638456cb59146103ed57600080fd5b80633f4ba83a146103255780634f1ef2861461033a57806352d1902d1461034d57600080fd5b8063248a9ca3116101a0578063248a9ca314610256578063252f07bf146102b35780632f2ff15d146102e557806336568abe1461030557600080fd5b806301ffc9a7146101c7578063116191b6146101fc57806321fc65f214610234575b600080fd5b3480156101d357600080fd5b506101e76101e23660046121a7565b61068a565b60405190151581526020015b60405180910390f35b34801561020857600080fd5b5060005461021c906001600160a01b031681565b6040516001600160a01b0390911681526020016101f3565b34801561024057600080fd5b5061025461024f366004612247565b610723565b005b34801561026257600080fd5b506102a56102713660046122ba565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101f3565b3480156102bf57600080fd5b506002546101e79074010000000000000000000000000000000000000000900460ff1681565b3480156102f157600080fd5b506102546103003660046122d3565b6108cc565b34801561031157600080fd5b506102546103203660046122d3565b610916565b34801561033157600080fd5b50610254610967565b610254610348366004612332565b61099c565b34801561035957600080fd5b506102a56109bb565b34801561036e57600080fd5b506102a57f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a81565b3480156103a257600080fd5b5060025461021c906001600160a01b031681565b3480156103c257600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101e7565b3480156103f957600080fd5b506102546109ea565b34801561040e57600080fd5b506102a57f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b34801561044257600080fd5b506101e76104513660046122d3565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156104a757600080fd5b506102546104b636600461243b565b610a1c565b3480156104c757600080fd5b506102546104d6366004612458565b610baf565b3480156104e757600080fd5b506102546104f636600461243b565b610d5d565b34801561050757600080fd5b5061025461051636600461243b565b610e11565b34801561052757600080fd5b506102a5600081565b34801561053c57600080fd5b506105796040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101f3919061251f565b34801561059257600080fd5b506102546105a1366004612570565b610ecb565b3480156105b257600080fd5b506102546105c13660046122d3565b6111f0565b3480156105d257600080fd5b506101e76105e136600461243b565b60016020526000908152604090205460ff1681565b34801561060257600080fd5b506102546106113660046125bb565b611234565b34801561062257600080fd5b506102546106313660046125fc565b61134b565b34801561064257600080fd5b506102a57f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b34801561067657600080fd5b5061025461068536600461269b565b611596565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061071d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61072b6115ec565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107558161166d565b61075d611677565b6001600160a01b03851660009081526001602052604090205460ff166107af576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546107c9906001600160a01b038781169116866116d5565b6000546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690635131ab599061081a9088908a90899089908990600401612701565b600060405180830381600087803b15801561083457600080fd5b505af1158015610848573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167f6478cbb6e28c0823c691dfd74c01c985634faddd4c401b990fe4ec26277ea8d586868660405161089393929190612744565b60405180910390a3506108c560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546109068161166d565b610910838361176f565b50505050565b6001600160a01b0381163314610958576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610962828261183e565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6109918161166d565b6109996118e4565b50565b6109a4611956565b6109ad82611a26565b6109b78282611a31565b5050565b60006109c5611b55565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a148161166d565b610999611bb7565b6000610a278161166d565b6001600160a01b038216610a67576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254610a9e907f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4906001600160a01b031661183e565b50600254610ad6907f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a906001600160a01b031661183e565b50610b017f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48361176f565b50610b2c7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a8361176f565b50600254604080516001600160a01b03928316815291841660208301527f4d3470c839d3c4dd664eec934b920c12fe0966e3185103dd40149496815df2b6910160405180910390a150600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b610bb76115ec565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610be18161166d565b610be9611677565b6001600160a01b03861660009081526001602052604090205460ff16610c3b576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610c55906001600160a01b038881169116876116d5565b6000546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063aa0c0fc190610ca89089908b908a908a908a908a90600401612813565b600060405180830381600087803b158015610cc257600080fd5b505af1158015610cd6573d6000803e3d6000fd5b50505050856001600160a01b0316876001600160a01b03167f7b53ec10a80164e60591c43d9c222e9354886981b880a3fba19c9ceb77fb972187878787604051610d23949392919061286a565b60405180910390a350610d5560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a610d878161166d565b6001600160a01b038216610dc7576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216600081815260016020526040808220805460ff19169055517f51085ddf9ebdded84b76e829eb58c4078e4b5bdf97d9a94723f336039da467919190a25050565b7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a610e3b8161166d565b6001600160a01b038216610e7b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166000818152600160208190526040808320805460ff1916909217909155517faab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a549190a25050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f165750825b905060008267ffffffffffffffff166001148015610f335750303b155b905081158015610f41575080155b15610f78576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fd95784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0388161580610ff657506001600160a01b038716155b8061100857506001600160a01b038616155b1561103f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611047611c12565b61104f611c1a565b611057611c12565b61105f611c2a565b600080546001600160a01b03808b167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617835560028054918b16919092161790556110ad908761176f565b506110d87f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8761176f565b506111037f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8861176f565b5061112e7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48861176f565b506111597f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a8761176f565b506111847f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a8861176f565b5083156111e65784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461122a8161166d565b610910838361183e565b61123c6115ec565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46112668161166d565b61126e611677565b6001600160a01b03831660009081526001602052604090205460ff166112c0576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112d46001600160a01b03841685846116d5565b826001600160a01b0316846001600160a01b03167fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb8460405161131991815260200190565b60405180910390a35061096260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6113536115ec565b61135b611677565b60025474010000000000000000000000000000000000000000900460ff166113af576040517f73cba66300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03841660009081526001602052604090205460ff16611401576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015611461573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114859190612896565b905061149c6001600160a01b038616333087611c3a565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038616907f1dafa057cc5c3bccb5ad974129a2bccd3c74002d9dfd7062404ba9523b18d6ae9089908990859085906370a0823190602401602060405180830381865afa158015611523573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115479190612896565b61155191906128af565b87876040516115649594939291906128e9565b60405180910390a250610d5560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60006115a18161166d565b506002805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611667576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6109998133611c73565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16156116d3576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040516001600160a01b0383811660248301526044820183905261096291859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d00565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611834576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556117ea3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061071d565b600091505061071d565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611834576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061071d565b6118ec611d7c565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806119ef57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166119e37f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b156116d3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006109b78161166d565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611aa9575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611aa691810190612896565b60015b611aef576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611b4b576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611ae6565b6109628383611dd7565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146116d3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611bbf611677565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611938565b6116d3611e2d565b611c22611e2d565b6116d3611e94565b611c32611e2d565b6116d3611e9c565b6040516001600160a01b0384811660248301528381166044830152606482018390526109109186918216906323b872dd90608401611702565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166109b7576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611ae6565b6000611d156001600160a01b03841683611ecf565b90508051600014158015611d3a575080806020019051810190611d389190612922565b155b15610962576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401611ae6565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166116d3576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611de082611ee4565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611e25576109628282611f8c565b6109b7612002565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166116d3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611749611e2d565b611ea4611e2d565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff19169055565b6060611edd8383600061203a565b9392505050565b806001600160a01b03163b600003611f33576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611ae6565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611fa9919061293f565b600060405180830381855af49150503d8060008114611fe4576040519150601f19603f3d011682016040523d82523d6000602084013e611fe9565b606091505b5091509150611ff98583836120f0565b95945050505050565b34156116d3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081471015612078576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401611ae6565b600080856001600160a01b03168486604051612094919061293f565b60006040518083038185875af1925050503d80600081146120d1576040519150601f19603f3d011682016040523d82523d6000602084013e6120d6565b606091505b50915091506120e68683836120f0565b9695505050505050565b6060826121055761210082612165565b611edd565b815115801561211c57506001600160a01b0384163b155b1561215e576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611ae6565b5080611edd565b8051156121755780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602082840312156121b957600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611edd57600080fd5b6001600160a01b038116811461099957600080fd5b60008083601f84011261221057600080fd5b50813567ffffffffffffffff81111561222857600080fd5b60208301915083602082850101111561224057600080fd5b9250929050565b60008060008060006080868803121561225f57600080fd5b853561226a816121e9565b9450602086013561227a816121e9565b935060408601359250606086013567ffffffffffffffff81111561229d57600080fd5b6122a9888289016121fe565b969995985093965092949392505050565b6000602082840312156122cc57600080fd5b5035919050565b600080604083850312156122e657600080fd5b8235915060208301356122f8816121e9565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561234557600080fd5b8235612350816121e9565b9150602083013567ffffffffffffffff81111561236c57600080fd5b8301601f8101851361237d57600080fd5b803567ffffffffffffffff81111561239757612397612303565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561240357612403612303565b60405281815282820160200187101561241b57600080fd5b816020840160208301376000602083830101528093505050509250929050565b60006020828403121561244d57600080fd5b8135611edd816121e9565b60008060008060008060a0878903121561247157600080fd5b863561247c816121e9565b9550602087013561248c816121e9565b945060408701359350606087013567ffffffffffffffff8111156124af57600080fd5b6124bb89828a016121fe565b909450925050608087013567ffffffffffffffff8111156124db57600080fd5b87016080818a0312156124ed57600080fd5b809150509295509295509295565b60005b838110156125165781810151838201526020016124fe565b50506000910152565b602081526000825180602084015261253e8160408501602087016124fb565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008060006060848603121561258557600080fd5b8335612590816121e9565b925060208401356125a0816121e9565b915060408401356125b0816121e9565b809150509250925092565b6000806000606084860312156125d057600080fd5b83356125db816121e9565b925060208401356125eb816121e9565b929592945050506040919091013590565b6000806000806000806080878903121561261557600080fd5b863567ffffffffffffffff81111561262c57600080fd5b61263889828a016121fe565b909750955050602087013561264c816121e9565b935060408701359250606087013567ffffffffffffffff81111561266f57600080fd5b61267b89828a016121fe565b979a9699509497509295939492505050565b801515811461099957600080fd5b6000602082840312156126ad57600080fd5b8135611edd8161268d565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b03861681526001600160a01b03851660208201528360408201526080606082015260006127396080830184866126b8565b979650505050505050565b838152604060208201526000611ff96040830184866126b8565b6000813561276b816121e9565b6001600160a01b031683526020820135612784816121e9565b6001600160a01b03166020840152604082810135908401526060820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe10181126127d257600080fd5b820160208101903567ffffffffffffffff8111156127ef57600080fd5b8036038213156127fe57600080fd5b60806060860152611ff96080860182846126b8565b6001600160a01b03871681526001600160a01b038616602082015284604082015260a06060820152600061284b60a0830185876126b8565b828103608084015261285d818561275e565b9998505050505050505050565b8481526060602082015260006128846060830185876126b8565b8281036040840152612739818561275e565b6000602082840312156128a857600080fd5b5051919050565b8181038181111561071d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6060815260006128fd6060830187896126b8565b85602084015282810360408401526129168185876126b8565b98975050505050505050565b60006020828403121561293457600080fd5b8151611edd8161268d565b600082516129518184602087016124fb565b919091019291505056fea264697066735822122032725bd2b7dce3e2ae6a3b0195af5832fc237f7d832025eeb8bb10b9c42be63964736f6c634300081a0033"; + "0x60a060405230608052348015601357600080fd5b5060805161299161003d600039600081816119610152818161198a0152611b6001526129916000f3fe6080604052600436106101c25760003560e01c806385f438c1116100f7578063ad3cb1cc11610095578063d9caed1211610064578063d9caed12146105f6578063e609055e14610616578063e63ab1e914610636578063eab103df1461066a57600080fd5b8063ad3cb1cc14610530578063c0c53b8b14610586578063d547741f146105a6578063d936547e146105c657600080fd5b806399a3c356116100d157806399a3c356146104bb5780639a590427146104db5780639b19251a146104fb578063a217fddf1461051b57600080fd5b806385f438c11461040257806391d1485414610436578063950837aa1461049b57600080fd5b80633f4ba83a11610164578063570618e11161013e578063570618e1146103625780635b112591146103965780635c975abb146103b65780638456cb59146103ed57600080fd5b80633f4ba83a146103255780634f1ef2861461033a57806352d1902d1461034d57600080fd5b8063248a9ca3116101a0578063248a9ca314610256578063252f07bf146102b35780632f2ff15d146102e557806336568abe1461030557600080fd5b806301ffc9a7146101c7578063116191b6146101fc57806321fc65f214610234575b600080fd5b3480156101d357600080fd5b506101e76101e23660046121a7565b61068a565b60405190151581526020015b60405180910390f35b34801561020857600080fd5b5060005461021c906001600160a01b031681565b6040516001600160a01b0390911681526020016101f3565b34801561024057600080fd5b5061025461024f366004612247565b610723565b005b34801561026257600080fd5b506102a56102713660046122ba565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101f3565b3480156102bf57600080fd5b506002546101e79074010000000000000000000000000000000000000000900460ff1681565b3480156102f157600080fd5b506102546103003660046122d3565b6108cc565b34801561031157600080fd5b506102546103203660046122d3565b610916565b34801561033157600080fd5b50610254610967565b610254610348366004612332565b61099c565b34801561035957600080fd5b506102a56109bb565b34801561036e57600080fd5b506102a57f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a81565b3480156103a257600080fd5b5060025461021c906001600160a01b031681565b3480156103c257600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101e7565b3480156103f957600080fd5b506102546109ea565b34801561040e57600080fd5b506102a57f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b34801561044257600080fd5b506101e76104513660046122d3565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156104a757600080fd5b506102546104b636600461243b565b610a1c565b3480156104c757600080fd5b506102546104d6366004612458565b610baf565b3480156104e757600080fd5b506102546104f636600461243b565b610d5d565b34801561050757600080fd5b5061025461051636600461243b565b610e11565b34801561052757600080fd5b506102a5600081565b34801561053c57600080fd5b506105796040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101f3919061251f565b34801561059257600080fd5b506102546105a1366004612570565b610ecb565b3480156105b257600080fd5b506102546105c13660046122d3565b6111f0565b3480156105d257600080fd5b506101e76105e136600461243b565b60016020526000908152604090205460ff1681565b34801561060257600080fd5b506102546106113660046125bb565b611234565b34801561062257600080fd5b506102546106313660046125fc565b61134b565b34801561064257600080fd5b506102a57f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b34801561067657600080fd5b5061025461068536600461269b565b611596565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061071d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61072b6115ec565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107558161166d565b61075d611677565b6001600160a01b03851660009081526001602052604090205460ff166107af576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546107c9906001600160a01b038781169116866116d5565b6000546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690635131ab599061081a9088908a90899089908990600401612701565b600060405180830381600087803b15801561083457600080fd5b505af1158015610848573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167f6478cbb6e28c0823c691dfd74c01c985634faddd4c401b990fe4ec26277ea8d586868660405161089393929190612744565b60405180910390a3506108c560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546109068161166d565b610910838361176f565b50505050565b6001600160a01b0381163314610958576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610962828261183e565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6109918161166d565b6109996118e4565b50565b6109a4611956565b6109ad82611a26565b6109b78282611a31565b5050565b60006109c5611b55565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a148161166d565b610999611bb7565b6000610a278161166d565b6001600160a01b038216610a67576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254610a9e907f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4906001600160a01b031661183e565b50600254610ad6907f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a906001600160a01b031661183e565b50610b017f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48361176f565b50610b2c7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a8361176f565b50600254604080516001600160a01b03928316815291841660208301527f4d3470c839d3c4dd664eec934b920c12fe0966e3185103dd40149496815df2b6910160405180910390a150600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b610bb76115ec565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610be18161166d565b610be9611677565b6001600160a01b03861660009081526001602052604090205460ff16610c3b576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610c55906001600160a01b038881169116876116d5565b6000546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063aa0c0fc190610ca89089908b908a908a908a908a90600401612813565b600060405180830381600087803b158015610cc257600080fd5b505af1158015610cd6573d6000803e3d6000fd5b50505050856001600160a01b0316876001600160a01b03167f7b53ec10a80164e60591c43d9c222e9354886981b880a3fba19c9ceb77fb972187878787604051610d23949392919061286a565b60405180910390a350610d5560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a610d878161166d565b6001600160a01b038216610dc7576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216600081815260016020526040808220805460ff19169055517f51085ddf9ebdded84b76e829eb58c4078e4b5bdf97d9a94723f336039da467919190a25050565b7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a610e3b8161166d565b6001600160a01b038216610e7b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166000818152600160208190526040808320805460ff1916909217909155517faab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a549190a25050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f165750825b905060008267ffffffffffffffff166001148015610f335750303b155b905081158015610f41575080155b15610f78576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fd95784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0388161580610ff657506001600160a01b038716155b8061100857506001600160a01b038616155b1561103f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611047611c12565b61104f611c1a565b611057611c12565b61105f611c2a565b600080546001600160a01b03808b167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617835560028054918b16919092161790556110ad908761176f565b506110d87f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8761176f565b506111037f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8861176f565b5061112e7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48861176f565b506111597f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a8761176f565b506111847f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a8861176f565b5083156111e65784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461122a8161166d565b610910838361183e565b61123c6115ec565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46112668161166d565b61126e611677565b6001600160a01b03831660009081526001602052604090205460ff166112c0576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112d46001600160a01b03841685846116d5565b826001600160a01b0316846001600160a01b03167fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb8460405161131991815260200190565b60405180910390a35061096260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6113536115ec565b61135b611677565b60025474010000000000000000000000000000000000000000900460ff166113af576040517f73cba66300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03841660009081526001602052604090205460ff16611401576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015611461573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114859190612896565b905061149c6001600160a01b038616333087611c3a565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038616907f1dafa057cc5c3bccb5ad974129a2bccd3c74002d9dfd7062404ba9523b18d6ae9089908990859085906370a0823190602401602060405180830381865afa158015611523573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115479190612896565b61155191906128af565b87876040516115649594939291906128e9565b60405180910390a250610d5560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60006115a18161166d565b506002805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611667576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6109998133611c73565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16156116d3576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040516001600160a01b0383811660248301526044820183905261096291859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d00565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611834576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556117ea3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061071d565b600091505061071d565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611834576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061071d565b6118ec611d7c565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806119ef57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166119e37f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b156116d3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006109b78161166d565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611aa9575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611aa691810190612896565b60015b611aef576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611b4b576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611ae6565b6109628383611dd7565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146116d3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611bbf611677565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611938565b6116d3611e2d565b611c22611e2d565b6116d3611e94565b611c32611e2d565b6116d3611e9c565b6040516001600160a01b0384811660248301528381166044830152606482018390526109109186918216906323b872dd90608401611702565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166109b7576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611ae6565b6000611d156001600160a01b03841683611ecf565b90508051600014158015611d3a575080806020019051810190611d389190612922565b155b15610962576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401611ae6565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166116d3576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611de082611ee4565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611e25576109628282611f8c565b6109b7612002565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166116d3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611749611e2d565b611ea4611e2d565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff19169055565b6060611edd8383600061203a565b9392505050565b806001600160a01b03163b600003611f33576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611ae6565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611fa9919061293f565b600060405180830381855af49150503d8060008114611fe4576040519150601f19603f3d011682016040523d82523d6000602084013e611fe9565b606091505b5091509150611ff98583836120f0565b95945050505050565b34156116d3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081471015612078576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401611ae6565b600080856001600160a01b03168486604051612094919061293f565b60006040518083038185875af1925050503d80600081146120d1576040519150601f19603f3d011682016040523d82523d6000602084013e6120d6565b606091505b50915091506120e68683836120f0565b9695505050505050565b6060826121055761210082612165565b611edd565b815115801561211c57506001600160a01b0384163b155b1561215e576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611ae6565b5080611edd565b8051156121755780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602082840312156121b957600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611edd57600080fd5b6001600160a01b038116811461099957600080fd5b60008083601f84011261221057600080fd5b50813567ffffffffffffffff81111561222857600080fd5b60208301915083602082850101111561224057600080fd5b9250929050565b60008060008060006080868803121561225f57600080fd5b853561226a816121e9565b9450602086013561227a816121e9565b935060408601359250606086013567ffffffffffffffff81111561229d57600080fd5b6122a9888289016121fe565b969995985093965092949392505050565b6000602082840312156122cc57600080fd5b5035919050565b600080604083850312156122e657600080fd5b8235915060208301356122f8816121e9565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561234557600080fd5b8235612350816121e9565b9150602083013567ffffffffffffffff81111561236c57600080fd5b8301601f8101851361237d57600080fd5b803567ffffffffffffffff81111561239757612397612303565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561240357612403612303565b60405281815282820160200187101561241b57600080fd5b816020840160208301376000602083830101528093505050509250929050565b60006020828403121561244d57600080fd5b8135611edd816121e9565b60008060008060008060a0878903121561247157600080fd5b863561247c816121e9565b9550602087013561248c816121e9565b945060408701359350606087013567ffffffffffffffff8111156124af57600080fd5b6124bb89828a016121fe565b909450925050608087013567ffffffffffffffff8111156124db57600080fd5b87016080818a0312156124ed57600080fd5b809150509295509295509295565b60005b838110156125165781810151838201526020016124fe565b50506000910152565b602081526000825180602084015261253e8160408501602087016124fb565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008060006060848603121561258557600080fd5b8335612590816121e9565b925060208401356125a0816121e9565b915060408401356125b0816121e9565b809150509250925092565b6000806000606084860312156125d057600080fd5b83356125db816121e9565b925060208401356125eb816121e9565b929592945050506040919091013590565b6000806000806000806080878903121561261557600080fd5b863567ffffffffffffffff81111561262c57600080fd5b61263889828a016121fe565b909750955050602087013561264c816121e9565b935060408701359250606087013567ffffffffffffffff81111561266f57600080fd5b61267b89828a016121fe565b979a9699509497509295939492505050565b801515811461099957600080fd5b6000602082840312156126ad57600080fd5b8135611edd8161268d565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b03861681526001600160a01b03851660208201528360408201526080606082015260006127396080830184866126b8565b979650505050505050565b838152604060208201526000611ff96040830184866126b8565b6000813561276b816121e9565b6001600160a01b031683526020820135612784816121e9565b6001600160a01b03166020840152604082810135908401526060820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe10181126127d257600080fd5b820160208101903567ffffffffffffffff8111156127ef57600080fd5b8036038213156127fe57600080fd5b60806060860152611ff96080860182846126b8565b6001600160a01b03871681526001600160a01b038616602082015284604082015260a06060820152600061284b60a0830185876126b8565b828103608084015261285d818561275e565b9998505050505050505050565b8481526060602082015260006128846060830185876126b8565b8281036040840152612739818561275e565b6000602082840312156128a857600080fd5b5051919050565b8181038181111561071d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6060815260006128fd6060830187896126b8565b85602084015282810360408401526129168185876126b8565b98975050505050505050565b60006020828403121561293457600080fd5b8151611edd8161268d565b600082516129518184602087016124fb565b919091019291505056fea26469706673582212207a20ae6f4de44d8614b3f15643f6f6aea60080c2e642775549b18270202b098464736f6c634300081a0033"; type ERC20CustodyConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/GatewayEVMUpgradeTest__factory.ts b/v2/types/factories/GatewayEVMUpgradeTest__factory.ts index 2d75df66e..fd1b7a001 100644 --- a/v2/types/factories/GatewayEVMUpgradeTest__factory.ts +++ b/v2/types/factories/GatewayEVMUpgradeTest__factory.ts @@ -1401,7 +1401,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161386d6100fd600039600081816121ee015281816122170152612685015261386d6000f3fe6080604052600436106101fe5760003560e01c80635c975abb1161011d578063aa0c0fc1116100b0578063cb7ba8e51161007f578063d547741f11610064578063d547741f1461066f578063dda79b751461068f578063e63ab1e9146106af57600080fd5b8063cb7ba8e51461063c578063d09e3b781461064f57600080fd5b8063aa0c0fc114610593578063ad3cb1cc146105b3578063ae7a3a6f146105fc578063c0c53b8b1461061c57600080fd5b80638456cb59116100ec5780638456cb59146104d057806391d14854146104e5578063a217fddf1461054a578063a783c7891461055f57600080fd5b80635c975abb1461043f5780635d62c86014610476578063726ac97c146104aa578063744b9b8b146104bd57600080fd5b806336568abe116101955780635131ab59116101645780635131ab59146103ca57806352d1902d146103ea57806357bec62f146103ff5780635b1125911461041f57600080fd5b806336568abe1461036f57806338e225271461038f5780633f4ba83a146103a25780634f1ef286146103b757600080fd5b80631cff79cd116101d15780631cff79cd1461029a57806321e093b1146102ba578063248a9ca3146102f25780632f2ff15d1461034f57600080fd5b806301ffc9a71461020357806310188aef14610238578063102614b01461025a5780631becceb41461027a575b600080fd5b34801561020f57600080fd5b5061022361021e366004612df1565b6106e3565b60405190151581526020015b60405180910390f35b34801561024457600080fd5b50610258610253366004612e4f565b61077c565b005b34801561026657600080fd5b50610258610275366004612e82565b610857565b34801561028657600080fd5b50610258610295366004612f33565b610951565b6102ad6102a8366004612f9a565b6109cf565b60405161022f919061303d565b3480156102c657600080fd5b506003546102da906001600160a01b031681565b6040516001600160a01b03909116815260200161022f565b3480156102fe57600080fd5b5061034161030d366004613050565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b60405190815260200161022f565b34801561035b57600080fd5b5061025861036a366004613069565b610a87565b34801561037b57600080fd5b5061025861038a366004613069565b610acb565b6102ad61039d366004613095565b610b1c565b3480156103ae57600080fd5b50610258610c08565b6102586103c5366004613186565b610c3d565b3480156103d657600080fd5b506102586103e5366004613217565b610c5c565b3480156103f657600080fd5b50610341610f5c565b34801561040b57600080fd5b506002546102da906001600160a01b031681565b34801561042b57600080fd5b506001546102da906001600160a01b031681565b34801561044b57600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610223565b34801561048257600080fd5b506103417f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b6102586104b8366004613286565b610f8b565b6102586104cb366004612f33565b611103565b3480156104dc57600080fd5b5061025861127f565b3480156104f157600080fd5b50610223610500366004613069565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561055657600080fd5b50610341600081565b34801561056b57600080fd5b506103417f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561059f57600080fd5b506102586105ae3660046132e6565b6112b1565b3480156105bf57600080fd5b506102ad6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b34801561060857600080fd5b50610258610617366004612e4f565b61145a565b34801561062857600080fd5b5061025861063736600461337e565b611535565b61025861064a3660046133c1565b6117fc565b34801561065b57600080fd5b5061025861066a366004613434565b6119e4565b34801561067b57600080fd5b5061025861068a366004613069565b611adc565b34801561069b57600080fd5b506000546102da906001600160a01b031681565b3480156106bb57600080fd5b506103417f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061077657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600061078781611b20565b6001600160a01b0382166107ae5760405163d92e233d60e01b815260040160405180910390fd5b6002546001600160a01b0316156107f1576040517f0c8dc01600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61081b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611b2a565b5050600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61085f611c17565b610867611c75565b826000036108a1576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166108c85760405163d92e233d60e01b815260040160405180910390fd5b6108d3338385611cf6565b836001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c85858560405161091a939291906135d9565b60405180910390a361094b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050565b610959611c17565b610961611c75565b6001600160a01b0384166109885760405163d92e233d60e01b815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167fd34634f30f94a646fdf4ce7078f38fc5fa0d3f0b193658facea4e3e43330d97485858560405161091a9392919061360f565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb6109fb81611b20565b610a03611c17565b6001600160a01b038516610a2a5760405163d92e233d60e01b815260040160405180910390fd5b6000610a37868686611f59565b9050856001600160a01b03167f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e8546348787604051610a7693929190613635565b60405180910390a295945050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610ac181611b20565b61094b8383611b2a565b6001600160a01b0381163314610b0d576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b17828261200c565b505050565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610b4881611b20565b610b50611c17565b610b58611c75565b6001600160a01b038516610b7f5760405163d92e233d60e01b815260040160405180910390fd5b6060610b8d878787876120d0565b9050856001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f348787604051610bcc93929190613635565b60405180910390a29150610bff60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50949350505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610c3281611b20565b610c3a612153565b50565b610c456121e3565b610c4e826122b3565b610c5882826122be565b5050565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9610c8681611b20565b610c8e611c17565b610c96611c75565b83600003610cd0576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038516610cf75760405163d92e233d60e01b815260040160405180910390fd5b610d0186866123c4565b610d37576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905287169063095ea7b3906044016020604051808303816000875af1158015610d9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc3919061364f565b610df9576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e04858484611f59565b50610e0f86866123c4565b610e45576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610ea5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec9919061366c565b90508015610edb57610edb8782612454565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610f2293929190613635565b60405180910390a350610f5460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b6000610f6661267a565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610f93611c17565b610f9b611c75565b34600003610fd5576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216610ffc5760405163d92e233d60e01b815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114611049576040519150601f19603f3d011682016040523d82523d6000602084013e61104e565b606091505b5050905080611089576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c346000866040516110d1939291906135d9565b60405180910390a350610c5860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b61110b611c17565b611113611c75565b3460000361114d576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166111745760405163d92e233d60e01b815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146111c1576040519150601f19603f3d011682016040523d82523d6000602084013e6111c6565b606091505b5050905080611201576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c34600088888860405161124d959493929190613685565b60405180910390a35061094b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6112a981611b20565b610c3a6126dc565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b96112db81611b20565b6112e3611c17565b6112eb611c75565b84600003611325576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03861661134c5760405163d92e233d60e01b815260040160405180910390fd5b6113606001600160a01b0388168787612755565b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063c9028a36906113a5908590600401613728565b600060405180830381600087803b1580156113bf57600080fd5b505af11580156113d3573d6000803e3d6000fd5b50505050866001600160a01b0316866001600160a01b03167fde7603a6ed5d07c9f43597ccfe9043d15b66d3284f0de321f5cdf56329e6e03587878787604051611420949392919061373b565b60405180910390a361145160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050505050565b600061146581611b20565b6001600160a01b03821661148c5760405163d92e233d60e01b815260040160405180910390fd5b6000546001600160a01b0316156114cf576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114f97f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611b2a565b5050600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156115805750825b905060008267ffffffffffffffff16600114801561159d5750303b155b9050811580156115ab575080155b156115e2576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156116435784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038816158061166057506001600160a01b038716155b1561167e5760405163d92e233d60e01b815260040160405180910390fd5b6116866127c9565b61168e6127d1565b6116966127c9565b61169e6127e1565b6116a9600087611b2a565b506116d47f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611b2a565b506116ff7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a89611b2a565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a1617905561175d7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb89611b2a565b50600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03891617905583156117f25784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb61182681611b20565b61182e611c17565b611836611c75565b6001600160a01b03851661185d5760405163d92e233d60e01b815260040160405180910390fd5b6000856001600160a01b03163460405160006040518083038185875af1925050503d80600081146118aa576040519150601f19603f3d011682016040523d82523d6000602084013e6118af565b606091505b50509050806118ea576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063c9028a369061192f908690600401613728565b600060405180830381600087803b15801561194957600080fd5b505af115801561195d573d6000803e3d6000fd5b5050505060006001600160a01b0316866001600160a01b03167fde7603a6ed5d07c9f43597ccfe9043d15b66d3284f0de321f5cdf56329e6e035348888886040516119ab949392919061373b565b60405180910390a3506119dd60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6119ec611c17565b6119f4611c75565b84600003611a2e576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038616611a555760405163d92e233d60e01b815260040160405180910390fd5b611a60338587611cf6565b856001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c8787878787604051611aab959493929190613685565b60405180910390a3610f5460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154611b1681611b20565b61094b838361200c565b610c3a81336127f1565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611c0d576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611bc33390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610776565b6000915050610776565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611c73576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611cf0576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6003546001600160a01b0390811690831603611e5a57611d216001600160a01b03831684308461287e565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611d8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611db1919061364f565b611de7576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611e4657600080fd5b505af1158015611451573d6000803e3d6000fd5b6000546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301529091169063d936547e90602401602060405180830381865afa158015611ebd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee1919061364f565b611f17576040517fac2175f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610b17906001600160a01b03848116918691168461287e565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6060611f6583836128b7565b600080856001600160a01b0316348686604051611f83929190613772565b60006040518083038185875af1925050503d8060008114611fc0576040519150601f19603f3d011682016040523d82523d6000602084013e611fc5565b606091505b509150915081612001576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611c0d576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610776565b6060836001600160a01b031663676cc054348786866040518563ffffffff1660e01b815260040161210393929190613782565b60006040518083038185885af1158015612121573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261214a91908101906137ad565b95945050505050565b61215b61293c565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061227c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166122707f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611c73576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610c5881611b20565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612318575060408051601f3d908101601f191682019092526123159181019061366c565b60015b61235e576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146123ba576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401612355565b610b178383612997565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015612430573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612005919061364f565b6003546001600160a01b03908116908316036125a3576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af11580156124d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124fa919061364f565b612530576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561258f57600080fd5b505af1158015610f54573d6000803e3d6000fd5b6000546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301529091169063d936547e90602401602060405180830381865afa158015612606573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061262a919061364f565b612660576040517fac2175f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610c58906001600160a01b03848116911683612755565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611c73576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6126e4611c17565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258336121c5565b6040516001600160a01b03838116602483015260448201839052610b1791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506129ed565b611c73612a69565b6127d9612a69565b611c73612ad0565b6127e9612a69565b611c73612ad8565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610c58576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401612355565b6040516001600160a01b03848116602483015283811660448301526064820183905261094b9186918216906323b872dd90608401612782565b60048110610c585781357f98933fac000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000821601610b17576040517fed69977500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611c73576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6129a082612b29565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156129e557610b178282612bd1565b610c58612c3e565b6000612a026001600160a01b03841683612c76565b90508051600014158015612a27575080806020019051810190612a25919061364f565b155b15610b17576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401612355565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611c73576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f33612a69565b612ae0612a69565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b806001600160a01b03163b600003612b78576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401612355565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051612bee919061381b565b600060405180830381855af49150503d8060008114612c29576040519150601f19603f3d011682016040523d82523d6000602084013e612c2e565b606091505b509150915061214a858383612c84565b3415611c73576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061200583836000612cf9565b606082612c9957612c9482612daf565b612005565b8151158015612cb057506001600160a01b0384163b155b15612cf2576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401612355565b5080612005565b606081471015612d37576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401612355565b600080856001600160a01b03168486604051612d53919061381b565b60006040518083038185875af1925050503d8060008114612d90576040519150601f19603f3d011682016040523d82523d6000602084013e612d95565b606091505b5091509150612da5868383612c84565b9695505050505050565b805115612dbf5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215612e0357600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461200557600080fd5b80356001600160a01b0381168114612e4a57600080fd5b919050565b600060208284031215612e6157600080fd5b61200582612e33565b600060a08284031215612e7c57600080fd5b50919050565b60008060008060808587031215612e9857600080fd5b612ea185612e33565b935060208501359250612eb660408601612e33565b9150606085013567ffffffffffffffff811115612ed257600080fd5b612ede87828801612e6a565b91505092959194509250565b60008083601f840112612efc57600080fd5b50813567ffffffffffffffff811115612f1457600080fd5b602083019150836020828501011115612f2c57600080fd5b9250929050565b60008060008060608587031215612f4957600080fd5b612f5285612e33565b9350602085013567ffffffffffffffff811115612f6e57600080fd5b612f7a87828801612eea565b909450925050604085013567ffffffffffffffff811115612ed257600080fd5b600080600060408486031215612faf57600080fd5b612fb884612e33565b9250602084013567ffffffffffffffff811115612fd457600080fd5b612fe086828701612eea565b9497909650939450505050565b60005b83811015613008578181015183820152602001612ff0565b50506000910152565b60008151808452613029816020860160208601612fed565b601f01601f19169290920160200192915050565b6020815260006120056020830184613011565b60006020828403121561306257600080fd5b5035919050565b6000806040838503121561307c57600080fd5b8235915061308c60208401612e33565b90509250929050565b60008060008084860360608112156130ac57600080fd5b60208112156130ba57600080fd5b508493506130ca60208601612e33565b9250604085013567ffffffffffffffff8111156130e657600080fd5b6130f287828801612eea565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613156576131566130fe565b604052919050565b600067ffffffffffffffff821115613178576131786130fe565b50601f01601f191660200190565b6000806040838503121561319957600080fd5b6131a283612e33565b9150602083013567ffffffffffffffff8111156131be57600080fd5b8301601f810185136131cf57600080fd5b80356131e26131dd8261315e565b61312d565b8181528660208385010111156131f757600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008060008060006080868803121561322f57600080fd5b61323886612e33565b945061324660208701612e33565b935060408601359250606086013567ffffffffffffffff81111561326957600080fd5b61327588828901612eea565b969995985093965092949392505050565b6000806040838503121561329957600080fd5b6132a283612e33565b9150602083013567ffffffffffffffff8111156132be57600080fd5b6132ca85828601612e6a565b9150509250929050565b600060808284031215612e7c57600080fd5b60008060008060008060a087890312156132ff57600080fd5b61330887612e33565b955061331660208801612e33565b945060408701359350606087013567ffffffffffffffff81111561333957600080fd5b61334589828a01612eea565b909450925050608087013567ffffffffffffffff81111561336557600080fd5b61337189828a016132d4565b9150509295509295509295565b60008060006060848603121561339357600080fd5b61339c84612e33565b92506133aa60208501612e33565b91506133b860408501612e33565b90509250925092565b600080600080606085870312156133d757600080fd5b6133e085612e33565b9350602085013567ffffffffffffffff8111156133fc57600080fd5b61340887828801612eea565b909450925050604085013567ffffffffffffffff81111561342857600080fd5b612ede878288016132d4565b60008060008060008060a0878903121561344d57600080fd5b61345687612e33565b95506020870135945061346b60408801612e33565b9350606087013567ffffffffffffffff81111561348757600080fd5b61349389828a01612eea565b909450925050608087013567ffffffffffffffff8111156134b357600080fd5b61337189828a01612e6a565b8015158114610c3a57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261350257600080fd5b830160208101925035905067ffffffffffffffff81111561352257600080fd5b803603821315612f2c57600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6001600160a01b0361356d82612e33565b16825260006020820135613580816134bf565b151560208401526001600160a01b0361359b60408401612e33565b1660408401526135ae60608301836134cd565b60a060608601526135c360a086018284613531565b6080948501359590940194909452509092915050565b8381526001600160a01b0383166020820152608060408201526000608082015260a06060820152600061214a60a083018461355c565b604081526000613623604083018587613531565b8281036020840152612da5818561355c565b83815260406020820152600061214a604083018486613531565b60006020828403121561366157600080fd5b8151612005816134bf565b60006020828403121561367e57600080fd5b5051919050565b8581526001600160a01b03851660208201526080604082015260006136ae608083018587613531565b82810360608401526136c0818561355c565b98975050505050505050565b6001600160a01b036136dd82612e33565b1682526001600160a01b036136f460208301612e33565b16602083015260408181013590830152600061371360608301836134cd565b6080606086015261214a608086018284613531565b60208152600061200560208301846136cc565b848152606060208201526000613755606083018587613531565b828103604084015261376781856136cc565b979650505050505050565b8183823760009101908152919050565b6001600160a01b0361379385612e33565b16815260406020820152600061214a604083018486613531565b6000602082840312156137bf57600080fd5b815167ffffffffffffffff8111156137d657600080fd5b8201601f810184136137e757600080fd5b80516137f56131dd8261315e565b81815285602083850101111561380a57600080fd5b61214a826020830160208601612fed565b6000825161382d818460208701612fed565b919091019291505056fea26469706673582212208b72f5389b712bdb905de4b6561d7eed975fa0feeef1beea3562eb3d8e499dc564736f6c634300081a0033"; + "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161386d6100fd600039600081816121ee015281816122170152612685015261386d6000f3fe6080604052600436106101fe5760003560e01c80635c975abb1161011d578063aa0c0fc1116100b0578063cb7ba8e51161007f578063d547741f11610064578063d547741f1461066f578063dda79b751461068f578063e63ab1e9146106af57600080fd5b8063cb7ba8e51461063c578063d09e3b781461064f57600080fd5b8063aa0c0fc114610593578063ad3cb1cc146105b3578063ae7a3a6f146105fc578063c0c53b8b1461061c57600080fd5b80638456cb59116100ec5780638456cb59146104d057806391d14854146104e5578063a217fddf1461054a578063a783c7891461055f57600080fd5b80635c975abb1461043f5780635d62c86014610476578063726ac97c146104aa578063744b9b8b146104bd57600080fd5b806336568abe116101955780635131ab59116101645780635131ab59146103ca57806352d1902d146103ea57806357bec62f146103ff5780635b1125911461041f57600080fd5b806336568abe1461036f57806338e225271461038f5780633f4ba83a146103a25780634f1ef286146103b757600080fd5b80631cff79cd116101d15780631cff79cd1461029a57806321e093b1146102ba578063248a9ca3146102f25780632f2ff15d1461034f57600080fd5b806301ffc9a71461020357806310188aef14610238578063102614b01461025a5780631becceb41461027a575b600080fd5b34801561020f57600080fd5b5061022361021e366004612df1565b6106e3565b60405190151581526020015b60405180910390f35b34801561024457600080fd5b50610258610253366004612e4f565b61077c565b005b34801561026657600080fd5b50610258610275366004612e82565b610857565b34801561028657600080fd5b50610258610295366004612f33565b610951565b6102ad6102a8366004612f9a565b6109cf565b60405161022f919061303d565b3480156102c657600080fd5b506003546102da906001600160a01b031681565b6040516001600160a01b03909116815260200161022f565b3480156102fe57600080fd5b5061034161030d366004613050565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b60405190815260200161022f565b34801561035b57600080fd5b5061025861036a366004613069565b610a87565b34801561037b57600080fd5b5061025861038a366004613069565b610acb565b6102ad61039d366004613095565b610b1c565b3480156103ae57600080fd5b50610258610c08565b6102586103c5366004613186565b610c3d565b3480156103d657600080fd5b506102586103e5366004613217565b610c5c565b3480156103f657600080fd5b50610341610f5c565b34801561040b57600080fd5b506002546102da906001600160a01b031681565b34801561042b57600080fd5b506001546102da906001600160a01b031681565b34801561044b57600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610223565b34801561048257600080fd5b506103417f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b6102586104b8366004613286565b610f8b565b6102586104cb366004612f33565b611103565b3480156104dc57600080fd5b5061025861127f565b3480156104f157600080fd5b50610223610500366004613069565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561055657600080fd5b50610341600081565b34801561056b57600080fd5b506103417f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561059f57600080fd5b506102586105ae3660046132e6565b6112b1565b3480156105bf57600080fd5b506102ad6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b34801561060857600080fd5b50610258610617366004612e4f565b61145a565b34801561062857600080fd5b5061025861063736600461337e565b611535565b61025861064a3660046133c1565b6117fc565b34801561065b57600080fd5b5061025861066a366004613434565b6119e4565b34801561067b57600080fd5b5061025861068a366004613069565b611adc565b34801561069b57600080fd5b506000546102da906001600160a01b031681565b3480156106bb57600080fd5b506103417f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061077657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600061078781611b20565b6001600160a01b0382166107ae5760405163d92e233d60e01b815260040160405180910390fd5b6002546001600160a01b0316156107f1576040517f0c8dc01600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61081b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611b2a565b5050600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61085f611c17565b610867611c75565b826000036108a1576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166108c85760405163d92e233d60e01b815260040160405180910390fd5b6108d3338385611cf6565b836001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c85858560405161091a939291906135d9565b60405180910390a361094b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050565b610959611c17565b610961611c75565b6001600160a01b0384166109885760405163d92e233d60e01b815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167fd34634f30f94a646fdf4ce7078f38fc5fa0d3f0b193658facea4e3e43330d97485858560405161091a9392919061360f565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb6109fb81611b20565b610a03611c17565b6001600160a01b038516610a2a5760405163d92e233d60e01b815260040160405180910390fd5b6000610a37868686611f59565b9050856001600160a01b03167f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e8546348787604051610a7693929190613635565b60405180910390a295945050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610ac181611b20565b61094b8383611b2a565b6001600160a01b0381163314610b0d576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b17828261200c565b505050565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610b4881611b20565b610b50611c17565b610b58611c75565b6001600160a01b038516610b7f5760405163d92e233d60e01b815260040160405180910390fd5b6060610b8d878787876120d0565b9050856001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f348787604051610bcc93929190613635565b60405180910390a29150610bff60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50949350505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610c3281611b20565b610c3a612153565b50565b610c456121e3565b610c4e826122b3565b610c5882826122be565b5050565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9610c8681611b20565b610c8e611c17565b610c96611c75565b83600003610cd0576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038516610cf75760405163d92e233d60e01b815260040160405180910390fd5b610d0186866123c4565b610d37576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905287169063095ea7b3906044016020604051808303816000875af1158015610d9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc3919061364f565b610df9576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e04858484611f59565b50610e0f86866123c4565b610e45576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610ea5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec9919061366c565b90508015610edb57610edb8782612454565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610f2293929190613635565b60405180910390a350610f5460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b6000610f6661267a565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610f93611c17565b610f9b611c75565b34600003610fd5576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216610ffc5760405163d92e233d60e01b815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114611049576040519150601f19603f3d011682016040523d82523d6000602084013e61104e565b606091505b5050905080611089576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c346000866040516110d1939291906135d9565b60405180910390a350610c5860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b61110b611c17565b611113611c75565b3460000361114d576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166111745760405163d92e233d60e01b815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146111c1576040519150601f19603f3d011682016040523d82523d6000602084013e6111c6565b606091505b5050905080611201576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c34600088888860405161124d959493929190613685565b60405180910390a35061094b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6112a981611b20565b610c3a6126dc565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b96112db81611b20565b6112e3611c17565b6112eb611c75565b84600003611325576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03861661134c5760405163d92e233d60e01b815260040160405180910390fd5b6113606001600160a01b0388168787612755565b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063c9028a36906113a5908590600401613728565b600060405180830381600087803b1580156113bf57600080fd5b505af11580156113d3573d6000803e3d6000fd5b50505050866001600160a01b0316866001600160a01b03167fde7603a6ed5d07c9f43597ccfe9043d15b66d3284f0de321f5cdf56329e6e03587878787604051611420949392919061373b565b60405180910390a361145160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050505050565b600061146581611b20565b6001600160a01b03821661148c5760405163d92e233d60e01b815260040160405180910390fd5b6000546001600160a01b0316156114cf576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114f97f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611b2a565b5050600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156115805750825b905060008267ffffffffffffffff16600114801561159d5750303b155b9050811580156115ab575080155b156115e2576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156116435784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038816158061166057506001600160a01b038716155b1561167e5760405163d92e233d60e01b815260040160405180910390fd5b6116866127c9565b61168e6127d1565b6116966127c9565b61169e6127e1565b6116a9600087611b2a565b506116d47f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611b2a565b506116ff7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a89611b2a565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a1617905561175d7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb89611b2a565b50600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03891617905583156117f25784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb61182681611b20565b61182e611c17565b611836611c75565b6001600160a01b03851661185d5760405163d92e233d60e01b815260040160405180910390fd5b6000856001600160a01b03163460405160006040518083038185875af1925050503d80600081146118aa576040519150601f19603f3d011682016040523d82523d6000602084013e6118af565b606091505b50509050806118ea576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063c9028a369061192f908690600401613728565b600060405180830381600087803b15801561194957600080fd5b505af115801561195d573d6000803e3d6000fd5b5050505060006001600160a01b0316866001600160a01b03167fde7603a6ed5d07c9f43597ccfe9043d15b66d3284f0de321f5cdf56329e6e035348888886040516119ab949392919061373b565b60405180910390a3506119dd60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6119ec611c17565b6119f4611c75565b84600003611a2e576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038616611a555760405163d92e233d60e01b815260040160405180910390fd5b611a60338587611cf6565b856001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c8787878787604051611aab959493929190613685565b60405180910390a3610f5460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154611b1681611b20565b61094b838361200c565b610c3a81336127f1565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611c0d576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611bc33390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610776565b6000915050610776565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611c73576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611cf0576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6003546001600160a01b0390811690831603611e5a57611d216001600160a01b03831684308461287e565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611d8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611db1919061364f565b611de7576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611e4657600080fd5b505af1158015611451573d6000803e3d6000fd5b6000546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301529091169063d936547e90602401602060405180830381865afa158015611ebd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee1919061364f565b611f17576040517fac2175f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610b17906001600160a01b03848116918691168461287e565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6060611f6583836128b7565b600080856001600160a01b0316348686604051611f83929190613772565b60006040518083038185875af1925050503d8060008114611fc0576040519150601f19603f3d011682016040523d82523d6000602084013e611fc5565b606091505b509150915081612001576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611c0d576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610776565b6060836001600160a01b031663676cc054348786866040518563ffffffff1660e01b815260040161210393929190613782565b60006040518083038185885af1158015612121573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261214a91908101906137ad565b95945050505050565b61215b61293c565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061227c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166122707f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611c73576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610c5881611b20565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612318575060408051601f3d908101601f191682019092526123159181019061366c565b60015b61235e576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146123ba576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401612355565b610b178383612997565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015612430573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612005919061364f565b6003546001600160a01b03908116908316036125a3576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af11580156124d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124fa919061364f565b612530576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561258f57600080fd5b505af1158015610f54573d6000803e3d6000fd5b6000546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301529091169063d936547e90602401602060405180830381865afa158015612606573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061262a919061364f565b612660576040517fac2175f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610c58906001600160a01b03848116911683612755565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611c73576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6126e4611c17565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258336121c5565b6040516001600160a01b03838116602483015260448201839052610b1791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506129ed565b611c73612a69565b6127d9612a69565b611c73612ad0565b6127e9612a69565b611c73612ad8565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610c58576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401612355565b6040516001600160a01b03848116602483015283811660448301526064820183905261094b9186918216906323b872dd90608401612782565b60048110610c585781357f98933fac000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000821601610b17576040517fed69977500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611c73576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6129a082612b29565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156129e557610b178282612bd1565b610c58612c3e565b6000612a026001600160a01b03841683612c76565b90508051600014158015612a27575080806020019051810190612a25919061364f565b155b15610b17576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401612355565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611c73576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f33612a69565b612ae0612a69565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b806001600160a01b03163b600003612b78576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401612355565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051612bee919061381b565b600060405180830381855af49150503d8060008114612c29576040519150601f19603f3d011682016040523d82523d6000602084013e612c2e565b606091505b509150915061214a858383612c84565b3415611c73576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061200583836000612cf9565b606082612c9957612c9482612daf565b612005565b8151158015612cb057506001600160a01b0384163b155b15612cf2576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401612355565b5080612005565b606081471015612d37576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401612355565b600080856001600160a01b03168486604051612d53919061381b565b60006040518083038185875af1925050503d8060008114612d90576040519150601f19603f3d011682016040523d82523d6000602084013e612d95565b606091505b5091509150612da5868383612c84565b9695505050505050565b805115612dbf5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215612e0357600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461200557600080fd5b80356001600160a01b0381168114612e4a57600080fd5b919050565b600060208284031215612e6157600080fd5b61200582612e33565b600060a08284031215612e7c57600080fd5b50919050565b60008060008060808587031215612e9857600080fd5b612ea185612e33565b935060208501359250612eb660408601612e33565b9150606085013567ffffffffffffffff811115612ed257600080fd5b612ede87828801612e6a565b91505092959194509250565b60008083601f840112612efc57600080fd5b50813567ffffffffffffffff811115612f1457600080fd5b602083019150836020828501011115612f2c57600080fd5b9250929050565b60008060008060608587031215612f4957600080fd5b612f5285612e33565b9350602085013567ffffffffffffffff811115612f6e57600080fd5b612f7a87828801612eea565b909450925050604085013567ffffffffffffffff811115612ed257600080fd5b600080600060408486031215612faf57600080fd5b612fb884612e33565b9250602084013567ffffffffffffffff811115612fd457600080fd5b612fe086828701612eea565b9497909650939450505050565b60005b83811015613008578181015183820152602001612ff0565b50506000910152565b60008151808452613029816020860160208601612fed565b601f01601f19169290920160200192915050565b6020815260006120056020830184613011565b60006020828403121561306257600080fd5b5035919050565b6000806040838503121561307c57600080fd5b8235915061308c60208401612e33565b90509250929050565b60008060008084860360608112156130ac57600080fd5b60208112156130ba57600080fd5b508493506130ca60208601612e33565b9250604085013567ffffffffffffffff8111156130e657600080fd5b6130f287828801612eea565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613156576131566130fe565b604052919050565b600067ffffffffffffffff821115613178576131786130fe565b50601f01601f191660200190565b6000806040838503121561319957600080fd5b6131a283612e33565b9150602083013567ffffffffffffffff8111156131be57600080fd5b8301601f810185136131cf57600080fd5b80356131e26131dd8261315e565b61312d565b8181528660208385010111156131f757600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008060008060006080868803121561322f57600080fd5b61323886612e33565b945061324660208701612e33565b935060408601359250606086013567ffffffffffffffff81111561326957600080fd5b61327588828901612eea565b969995985093965092949392505050565b6000806040838503121561329957600080fd5b6132a283612e33565b9150602083013567ffffffffffffffff8111156132be57600080fd5b6132ca85828601612e6a565b9150509250929050565b600060808284031215612e7c57600080fd5b60008060008060008060a087890312156132ff57600080fd5b61330887612e33565b955061331660208801612e33565b945060408701359350606087013567ffffffffffffffff81111561333957600080fd5b61334589828a01612eea565b909450925050608087013567ffffffffffffffff81111561336557600080fd5b61337189828a016132d4565b9150509295509295509295565b60008060006060848603121561339357600080fd5b61339c84612e33565b92506133aa60208501612e33565b91506133b860408501612e33565b90509250925092565b600080600080606085870312156133d757600080fd5b6133e085612e33565b9350602085013567ffffffffffffffff8111156133fc57600080fd5b61340887828801612eea565b909450925050604085013567ffffffffffffffff81111561342857600080fd5b612ede878288016132d4565b60008060008060008060a0878903121561344d57600080fd5b61345687612e33565b95506020870135945061346b60408801612e33565b9350606087013567ffffffffffffffff81111561348757600080fd5b61349389828a01612eea565b909450925050608087013567ffffffffffffffff8111156134b357600080fd5b61337189828a01612e6a565b8015158114610c3a57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261350257600080fd5b830160208101925035905067ffffffffffffffff81111561352257600080fd5b803603821315612f2c57600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6001600160a01b0361356d82612e33565b16825260006020820135613580816134bf565b151560208401526001600160a01b0361359b60408401612e33565b1660408401526135ae60608301836134cd565b60a060608601526135c360a086018284613531565b6080948501359590940194909452509092915050565b8381526001600160a01b0383166020820152608060408201526000608082015260a06060820152600061214a60a083018461355c565b604081526000613623604083018587613531565b8281036020840152612da5818561355c565b83815260406020820152600061214a604083018486613531565b60006020828403121561366157600080fd5b8151612005816134bf565b60006020828403121561367e57600080fd5b5051919050565b8581526001600160a01b03851660208201526080604082015260006136ae608083018587613531565b82810360608401526136c0818561355c565b98975050505050505050565b6001600160a01b036136dd82612e33565b1682526001600160a01b036136f460208301612e33565b16602083015260408181013590830152600061371360608301836134cd565b6080606086015261214a608086018284613531565b60208152600061200560208301846136cc565b848152606060208201526000613755606083018587613531565b828103604084015261376781856136cc565b979650505050505050565b8183823760009101908152919050565b6001600160a01b0361379385612e33565b16815260406020820152600061214a604083018486613531565b6000602082840312156137bf57600080fd5b815167ffffffffffffffff8111156137d657600080fd5b8201601f810184136137e757600080fd5b80516137f56131dd8261315e565b81815285602083850101111561380a57600080fd5b61214a826020830160208601612fed565b6000825161382d818460208701612fed565b919091019291505056fea264697066735822122022d40b9e785f46c5c32d3f24d5e9bbe74f9a765997a8161aeac2bbb027d5d21b64736f6c634300081a0033"; type GatewayEVMUpgradeTestConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/GatewayEVM__factory.ts b/v2/types/factories/GatewayEVM__factory.ts index c4b68489e..d20cb6401 100644 --- a/v2/types/factories/GatewayEVM__factory.ts +++ b/v2/types/factories/GatewayEVM__factory.ts @@ -1399,7 +1399,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051613c976100fd600039600081816124fe0152818161252701526129950152613c976000f3fe6080604052600436106102345760003560e01c80635d62c86011610138578063aa0c0fc1116100b0578063cb7ba8e51161007f578063d547741f11610064578063d547741f146106db578063dda79b75146106fb578063e63ab1e91461071b57600080fd5b8063cb7ba8e5146106a8578063d09e3b78146106bb57600080fd5b8063aa0c0fc1146105ff578063ad3cb1cc1461061f578063ae7a3a6f14610668578063c0c53b8b1461068857600080fd5b806391d1485411610107578063a217fddf116100ec578063a217fddf146105a0578063a2ba1934146105b5578063a783c789146105cb57600080fd5b806391d148541461051b578063950837aa1461058057600080fd5b80635d62c860146104ac578063726ac97c146104e0578063744b9b8b146104f35780638456cb591461050657600080fd5b806336568abe116101cb5780635131ab591161019a57806357bec62f1161017f57806357bec62f146104355780635b112591146104555780635c975abb1461047557600080fd5b80635131ab591461040057806352d1902d1461042057600080fd5b806336568abe146103a557806338e22527146103c55780633f4ba83a146103d85780634f1ef286146103ed57600080fd5b80631cff79cd116102075780631cff79cd146102d057806321e093b1146102f0578063248a9ca3146103285780632f2ff15d1461038557600080fd5b806301ffc9a71461023957806310188aef1461026e578063102614b0146102905780631becceb4146102b0575b600080fd5b34801561024557600080fd5b5061025961025436600461317c565b61074f565b60405190151581526020015b60405180910390f35b34801561027a57600080fd5b5061028e6102893660046131da565b6107e8565b005b34801561029c57600080fd5b5061028e6102ab36600461320d565b6108c3565b3480156102bc57600080fd5b5061028e6102cb3660046132be565b610a07565b6102e36102de366004613325565b610ad8565b60405161026591906133c8565b3480156102fc57600080fd5b50600354610310906001600160a01b031681565b6040516001600160a01b039091168152602001610265565b34801561033457600080fd5b506103776103433660046133db565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610265565b34801561039157600080fd5b5061028e6103a03660046133f4565b610b90565b3480156103b157600080fd5b5061028e6103c03660046133f4565b610bd4565b6102e36103d3366004613420565b610c25565b3480156103e457600080fd5b5061028e610d11565b61028e6103fb366004613511565b610d46565b34801561040c57600080fd5b5061028e61041b3660046135a2565b610d65565b34801561042c57600080fd5b50610377611065565b34801561044157600080fd5b50600254610310906001600160a01b031681565b34801561046157600080fd5b50600154610310906001600160a01b031681565b34801561048157600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610259565b3480156104b857600080fd5b506103777f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b61028e6104ee366004613611565b611094565b61028e6105013660046132be565b611256565b34801561051257600080fd5b5061028e611425565b34801561052757600080fd5b506102596105363660046133f4565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561058c57600080fd5b5061028e61059b3660046131da565b611457565b3480156105ac57600080fd5b50610377600081565b3480156105c157600080fd5b5061037761040081565b3480156105d757600080fd5b506103777f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561060b57600080fd5b5061028e61061a366004613671565b61156e565b34801561062b57600080fd5b506102e36040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b34801561067457600080fd5b5061028e6106833660046131da565b611717565b34801561069457600080fd5b5061028e6106a3366004613709565b6117f2565b61028e6106b636600461374c565b611ab9565b3480156106c757600080fd5b5061028e6106d63660046137bf565b611ca1565b3480156106e757600080fd5b5061028e6106f63660046133f4565b611dec565b34801561070757600080fd5b50600054610310906001600160a01b031681565b34801561072757600080fd5b506103777f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806107e257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60006107f381611e30565b6001600160a01b03821661081a5760405163d92e233d60e01b815260040160405180910390fd5b6002546001600160a01b03161561085d576040517f0c8dc01600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108877f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611e3a565b5050600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6108cb611f27565b6108d3611f85565b8260000361090d576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166109345760405163d92e233d60e01b815260040160405180910390fd5b610400610944606083018361384a565b9050111561097e576040517f386691aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610989338385612006565b836001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c8585856040516109d0939291906139c9565b60405180910390a3610a0160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050565b610a0f611f27565b610a17611f85565b6001600160a01b038416610a3e5760405163d92e233d60e01b815260040160405180910390fd5b610400610a4e606083018361384a565b610a599150846139ff565b1115610a91576040517f386691aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167fd34634f30f94a646fdf4ce7078f38fc5fa0d3f0b193658facea4e3e43330d9748585856040516109d093929190613a39565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610b0481611e30565b610b0c611f27565b6001600160a01b038516610b335760405163d92e233d60e01b815260040160405180910390fd5b6000610b40868686612269565b9050856001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f348787604051610b7f93929190613a5f565b60405180910390a295945050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610bca81611e30565b610a018383611e3a565b6001600160a01b0381163314610c16576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c20828261231c565b505050565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610c5181611e30565b610c59611f27565b610c61611f85565b6001600160a01b038516610c885760405163d92e233d60e01b815260040160405180910390fd5b6060610c96878787876123e0565b9050856001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f348787604051610cd593929190613a5f565b60405180910390a29150610d0860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50949350505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610d3b81611e30565b610d43612463565b50565b610d4e6124f3565b610d57826125c3565b610d6182826125ce565b5050565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9610d8f81611e30565b610d97611f27565b610d9f611f85565b83600003610dd9576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038516610e005760405163d92e233d60e01b815260040160405180910390fd5b610e0a86866126d4565b610e40576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905287169063095ea7b3906044016020604051808303816000875af1158015610ea8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ecc9190613a79565b610f02576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f0d858484612269565b50610f1886866126d4565b610f4e576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610fae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd29190613a96565b90508015610fe457610fe48782612764565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b738287878760405161102b93929190613a5f565b60405180910390a35061105d60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b600061106f61298a565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b61109c611f27565b6110a4611f85565b346000036110de576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166111055760405163d92e233d60e01b815260040160405180910390fd5b610400611115606083018361384a565b9050111561114f576040517f386691aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d806000811461119c576040519150601f19603f3d011682016040523d82523d6000602084013e6111a1565b606091505b50509050806111dc576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c34600086604051611224939291906139c9565b60405180910390a350610d6160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b61125e611f27565b611266611f85565b346000036112a0576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166112c75760405163d92e233d60e01b815260040160405180910390fd5b6104006112d7606083018361384a565b6112e29150846139ff565b111561131a576040517f386691aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114611367576040519150601f19603f3d011682016040523d82523d6000602084013e61136c565b606091505b50509050806113a7576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c3460008888886040516113f3959493929190613aaf565b60405180910390a350610a0160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61144f81611e30565b610d436129ec565b600061146281611e30565b6001600160a01b0382166114895760405163d92e233d60e01b815260040160405180910390fd5b6001546114c0907f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb906001600160a01b031661231c565b506114eb7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb83611e3a565b50600154604080516001600160a01b03928316815291841660208301527f3a7b8d6372645f474fe60c115a2ef21421306a3ed4664fa0023c461413c08579910160405180910390a150600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b961159881611e30565b6115a0611f27565b6115a8611f85565b846000036115e2576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0386166116095760405163d92e233d60e01b815260040160405180910390fd5b61161d6001600160a01b0388168787612a65565b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063c9028a3690611662908590600401613b52565b600060405180830381600087803b15801561167c57600080fd5b505af1158015611690573d6000803e3d6000fd5b50505050866001600160a01b0316866001600160a01b03167fde7603a6ed5d07c9f43597ccfe9043d15b66d3284f0de321f5cdf56329e6e035878787876040516116dd9493929190613b65565b60405180910390a361170e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050505050565b600061172281611e30565b6001600160a01b0382166117495760405163d92e233d60e01b815260040160405180910390fd5b6000546001600160a01b03161561178c576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117b67f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611e3a565b5050600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff1660008115801561183d5750825b905060008267ffffffffffffffff16600114801561185a5750303b155b905081158015611868575080155b1561189f576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156119005784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038816158061191d57506001600160a01b038716155b1561193b5760405163d92e233d60e01b815260040160405180910390fd5b611943612ad9565b61194b612ae1565b611953612ad9565b61195b612af1565b611966600087611e3a565b506119917f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611e3a565b506119bc7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a89611e3a565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a16179055611a1a7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb89611e3a565b50600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0389161790558315611aaf5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb611ae381611e30565b611aeb611f27565b611af3611f85565b6001600160a01b038516611b1a5760405163d92e233d60e01b815260040160405180910390fd5b6000856001600160a01b03163460405160006040518083038185875af1925050503d8060008114611b67576040519150601f19603f3d011682016040523d82523d6000602084013e611b6c565b606091505b5050905080611ba7576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063c9028a3690611bec908690600401613b52565b600060405180830381600087803b158015611c0657600080fd5b505af1158015611c1a573d6000803e3d6000fd5b5050505060006001600160a01b0316866001600160a01b03167fde7603a6ed5d07c9f43597ccfe9043d15b66d3284f0de321f5cdf56329e6e03534888888604051611c689493929190613b65565b60405180910390a350611c9a60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b611ca9611f27565b611cb1611f85565b84600003611ceb576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038616611d125760405163d92e233d60e01b815260040160405180910390fd5b610400611d22606083018361384a565b611d2d9150846139ff565b1115611d65576040517f386691aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d70338587612006565b856001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c8787878787604051611dbb959493929190613aaf565b60405180910390a361105d60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154611e2681611e30565b610a01838361231c565b610d438133612b01565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611f1d576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611ed33390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506107e2565b60009150506107e2565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611f83576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01612000576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6003546001600160a01b039081169083160361216a576120316001600160a01b038316843084612b8e565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561209d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c19190613a79565b6120f7576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561215657600080fd5b505af115801561170e573d6000803e3d6000fd5b6000546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301529091169063d936547e90602401602060405180830381865afa1580156121cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f19190613a79565b612227576040517fac2175f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610c20906001600160a01b038481169186911684612b8e565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60606122758383612bc7565b600080856001600160a01b0316348686604051612293929190613b9c565b60006040518083038185875af1925050503d80600081146122d0576040519150601f19603f3d011682016040523d82523d6000602084013e6122d5565b606091505b509150915081612311576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611f1d576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506107e2565b6060836001600160a01b031663676cc054348786866040518563ffffffff1660e01b815260040161241393929190613bac565b60006040518083038185885af1158015612431573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261245a9190810190613bd7565b95945050505050565b61246b612cc7565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061258c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166125807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611f83576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d6181611e30565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612628575060408051601f3d908101601f1916820190925261262591810190613a96565b60015b61266e576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146126ca576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401612665565b610c208383612d22565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015612740573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123159190613a79565b6003546001600160a01b03908116908316036128b3576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af11580156127e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061280a9190613a79565b612840576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561289f57600080fd5b505af115801561105d573d6000803e3d6000fd5b6000546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301529091169063d936547e90602401602060405180830381865afa158015612916573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061293a9190613a79565b612970576040517fac2175f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610d61906001600160a01b03848116911683612a65565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611f83576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6129f4611f27565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258336124d5565b6040516001600160a01b03838116602483015260448201839052610c2091859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612d78565b611f83612df4565b612ae9612df4565b611f83612e5b565b612af9612df4565b611f83612e63565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610d61576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401612665565b6040516001600160a01b038481166024830152838116604483015260648201839052610a019186918216906323b872dd90608401612a92565b60048110610d615781357f98933fac000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000821601612c4c576040517fed69977500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f36fd75ca000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000821601610c20576040517ff3459a9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611f83576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612d2b82612eb4565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115612d7057610c208282612f5c565b610d61612fc9565b6000612d8d6001600160a01b03841683613001565b90508051600014158015612db2575080806020019051810190612db09190613a79565b155b15610c20576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401612665565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611f83576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612243612df4565b612e6b612df4565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b806001600160a01b03163b600003612f03576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401612665565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051612f799190613c45565b600060405180830381855af49150503d8060008114612fb4576040519150601f19603f3d011682016040523d82523d6000602084013e612fb9565b606091505b509150915061245a85838361300f565b3415611f83576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061231583836000613084565b6060826130245761301f8261313a565b612315565b815115801561303b57506001600160a01b0384163b155b1561307d576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401612665565b5080612315565b6060814710156130c2576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401612665565b600080856001600160a01b031684866040516130de9190613c45565b60006040518083038185875af1925050503d806000811461311b576040519150601f19603f3d011682016040523d82523d6000602084013e613120565b606091505b509150915061313086838361300f565b9695505050505050565b80511561314a5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561318e57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461231557600080fd5b80356001600160a01b03811681146131d557600080fd5b919050565b6000602082840312156131ec57600080fd5b612315826131be565b600060a0828403121561320757600080fd5b50919050565b6000806000806080858703121561322357600080fd5b61322c856131be565b935060208501359250613241604086016131be565b9150606085013567ffffffffffffffff81111561325d57600080fd5b613269878288016131f5565b91505092959194509250565b60008083601f84011261328757600080fd5b50813567ffffffffffffffff81111561329f57600080fd5b6020830191508360208285010111156132b757600080fd5b9250929050565b600080600080606085870312156132d457600080fd5b6132dd856131be565b9350602085013567ffffffffffffffff8111156132f957600080fd5b61330587828801613275565b909450925050604085013567ffffffffffffffff81111561325d57600080fd5b60008060006040848603121561333a57600080fd5b613343846131be565b9250602084013567ffffffffffffffff81111561335f57600080fd5b61336b86828701613275565b9497909650939450505050565b60005b8381101561339357818101518382015260200161337b565b50506000910152565b600081518084526133b4816020860160208601613378565b601f01601f19169290920160200192915050565b602081526000612315602083018461339c565b6000602082840312156133ed57600080fd5b5035919050565b6000806040838503121561340757600080fd5b82359150613417602084016131be565b90509250929050565b600080600080848603606081121561343757600080fd5b602081121561344557600080fd5b50849350613455602086016131be565b9250604085013567ffffffffffffffff81111561347157600080fd5b61347d87828801613275565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156134e1576134e1613489565b604052919050565b600067ffffffffffffffff82111561350357613503613489565b50601f01601f191660200190565b6000806040838503121561352457600080fd5b61352d836131be565b9150602083013567ffffffffffffffff81111561354957600080fd5b8301601f8101851361355a57600080fd5b803561356d613568826134e9565b6134b8565b81815286602083850101111561358257600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000806000806000608086880312156135ba57600080fd5b6135c3866131be565b94506135d1602087016131be565b935060408601359250606086013567ffffffffffffffff8111156135f457600080fd5b61360088828901613275565b969995985093965092949392505050565b6000806040838503121561362457600080fd5b61362d836131be565b9150602083013567ffffffffffffffff81111561364957600080fd5b613655858286016131f5565b9150509250929050565b60006080828403121561320757600080fd5b60008060008060008060a0878903121561368a57600080fd5b613693876131be565b95506136a1602088016131be565b945060408701359350606087013567ffffffffffffffff8111156136c457600080fd5b6136d089828a01613275565b909450925050608087013567ffffffffffffffff8111156136f057600080fd5b6136fc89828a0161365f565b9150509295509295509295565b60008060006060848603121561371e57600080fd5b613727846131be565b9250613735602085016131be565b9150613743604085016131be565b90509250925092565b6000806000806060858703121561376257600080fd5b61376b856131be565b9350602085013567ffffffffffffffff81111561378757600080fd5b61379387828801613275565b909450925050604085013567ffffffffffffffff8111156137b357600080fd5b6132698782880161365f565b60008060008060008060a087890312156137d857600080fd5b6137e1876131be565b9550602087013594506137f6604088016131be565b9350606087013567ffffffffffffffff81111561381257600080fd5b61381e89828a01613275565b909450925050608087013567ffffffffffffffff81111561383e57600080fd5b6136fc89828a016131f5565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261387f57600080fd5b83018035915067ffffffffffffffff82111561389a57600080fd5b6020019150368190038213156132b757600080fd5b8015158114610d4357600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126138f257600080fd5b830160208101925035905067ffffffffffffffff81111561391257600080fd5b8036038213156132b757600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6001600160a01b0361395d826131be565b16825260006020820135613970816138af565b151560208401526001600160a01b0361398b604084016131be565b16604084015261399e60608301836138bd565b60a060608601526139b360a086018284613921565b6080948501359590940194909452509092915050565b8381526001600160a01b0383166020820152608060408201526000608082015260a06060820152600061245a60a083018461394c565b808201808211156107e2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b604081526000613a4d604083018587613921565b8281036020840152613130818561394c565b83815260406020820152600061245a604083018486613921565b600060208284031215613a8b57600080fd5b8151612315816138af565b600060208284031215613aa857600080fd5b5051919050565b8581526001600160a01b0385166020820152608060408201526000613ad8608083018587613921565b8281036060840152613aea818561394c565b98975050505050505050565b6001600160a01b03613b07826131be565b1682526001600160a01b03613b1e602083016131be565b166020830152604081810135908301526000613b3d60608301836138bd565b6080606086015261245a608086018284613921565b6020815260006123156020830184613af6565b848152606060208201526000613b7f606083018587613921565b8281036040840152613b918185613af6565b979650505050505050565b8183823760009101908152919050565b6001600160a01b03613bbd856131be565b16815260406020820152600061245a604083018486613921565b600060208284031215613be957600080fd5b815167ffffffffffffffff811115613c0057600080fd5b8201601f81018413613c1157600080fd5b8051613c1f613568826134e9565b818152856020838501011115613c3457600080fd5b61245a826020830160208601613378565b60008251613c57818460208701613378565b919091019291505056fea26469706673582212204af7d907eb7384a343a470cb14b7159285ba82bd5aa99a6a1edd6a85f0300b2664736f6c634300081a0033"; + "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051613c976100fd600039600081816124fe0152818161252701526129950152613c976000f3fe6080604052600436106102345760003560e01c80635d62c86011610138578063aa0c0fc1116100b0578063cb7ba8e51161007f578063d547741f11610064578063d547741f146106db578063dda79b75146106fb578063e63ab1e91461071b57600080fd5b8063cb7ba8e5146106a8578063d09e3b78146106bb57600080fd5b8063aa0c0fc1146105ff578063ad3cb1cc1461061f578063ae7a3a6f14610668578063c0c53b8b1461068857600080fd5b806391d1485411610107578063a217fddf116100ec578063a217fddf146105a0578063a2ba1934146105b5578063a783c789146105cb57600080fd5b806391d148541461051b578063950837aa1461058057600080fd5b80635d62c860146104ac578063726ac97c146104e0578063744b9b8b146104f35780638456cb591461050657600080fd5b806336568abe116101cb5780635131ab591161019a57806357bec62f1161017f57806357bec62f146104355780635b112591146104555780635c975abb1461047557600080fd5b80635131ab591461040057806352d1902d1461042057600080fd5b806336568abe146103a557806338e22527146103c55780633f4ba83a146103d85780634f1ef286146103ed57600080fd5b80631cff79cd116102075780631cff79cd146102d057806321e093b1146102f0578063248a9ca3146103285780632f2ff15d1461038557600080fd5b806301ffc9a71461023957806310188aef1461026e578063102614b0146102905780631becceb4146102b0575b600080fd5b34801561024557600080fd5b5061025961025436600461317c565b61074f565b60405190151581526020015b60405180910390f35b34801561027a57600080fd5b5061028e6102893660046131da565b6107e8565b005b34801561029c57600080fd5b5061028e6102ab36600461320d565b6108c3565b3480156102bc57600080fd5b5061028e6102cb3660046132be565b610a07565b6102e36102de366004613325565b610ad8565b60405161026591906133c8565b3480156102fc57600080fd5b50600354610310906001600160a01b031681565b6040516001600160a01b039091168152602001610265565b34801561033457600080fd5b506103776103433660046133db565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610265565b34801561039157600080fd5b5061028e6103a03660046133f4565b610b90565b3480156103b157600080fd5b5061028e6103c03660046133f4565b610bd4565b6102e36103d3366004613420565b610c25565b3480156103e457600080fd5b5061028e610d11565b61028e6103fb366004613511565b610d46565b34801561040c57600080fd5b5061028e61041b3660046135a2565b610d65565b34801561042c57600080fd5b50610377611065565b34801561044157600080fd5b50600254610310906001600160a01b031681565b34801561046157600080fd5b50600154610310906001600160a01b031681565b34801561048157600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610259565b3480156104b857600080fd5b506103777f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b61028e6104ee366004613611565b611094565b61028e6105013660046132be565b611256565b34801561051257600080fd5b5061028e611425565b34801561052757600080fd5b506102596105363660046133f4565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561058c57600080fd5b5061028e61059b3660046131da565b611457565b3480156105ac57600080fd5b50610377600081565b3480156105c157600080fd5b5061037761040081565b3480156105d757600080fd5b506103777f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561060b57600080fd5b5061028e61061a366004613671565b61156e565b34801561062b57600080fd5b506102e36040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b34801561067457600080fd5b5061028e6106833660046131da565b611717565b34801561069457600080fd5b5061028e6106a3366004613709565b6117f2565b61028e6106b636600461374c565b611ab9565b3480156106c757600080fd5b5061028e6106d63660046137bf565b611ca1565b3480156106e757600080fd5b5061028e6106f63660046133f4565b611dec565b34801561070757600080fd5b50600054610310906001600160a01b031681565b34801561072757600080fd5b506103777f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806107e257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60006107f381611e30565b6001600160a01b03821661081a5760405163d92e233d60e01b815260040160405180910390fd5b6002546001600160a01b03161561085d576040517f0c8dc01600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108877f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611e3a565b5050600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6108cb611f27565b6108d3611f85565b8260000361090d576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166109345760405163d92e233d60e01b815260040160405180910390fd5b610400610944606083018361384a565b9050111561097e576040517f386691aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610989338385612006565b836001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c8585856040516109d0939291906139c9565b60405180910390a3610a0160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050565b610a0f611f27565b610a17611f85565b6001600160a01b038416610a3e5760405163d92e233d60e01b815260040160405180910390fd5b610400610a4e606083018361384a565b610a599150846139ff565b1115610a91576040517f386691aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167fd34634f30f94a646fdf4ce7078f38fc5fa0d3f0b193658facea4e3e43330d9748585856040516109d093929190613a39565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610b0481611e30565b610b0c611f27565b6001600160a01b038516610b335760405163d92e233d60e01b815260040160405180910390fd5b6000610b40868686612269565b9050856001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f348787604051610b7f93929190613a5f565b60405180910390a295945050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610bca81611e30565b610a018383611e3a565b6001600160a01b0381163314610c16576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c20828261231c565b505050565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610c5181611e30565b610c59611f27565b610c61611f85565b6001600160a01b038516610c885760405163d92e233d60e01b815260040160405180910390fd5b6060610c96878787876123e0565b9050856001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f348787604051610cd593929190613a5f565b60405180910390a29150610d0860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50949350505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610d3b81611e30565b610d43612463565b50565b610d4e6124f3565b610d57826125c3565b610d6182826125ce565b5050565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9610d8f81611e30565b610d97611f27565b610d9f611f85565b83600003610dd9576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038516610e005760405163d92e233d60e01b815260040160405180910390fd5b610e0a86866126d4565b610e40576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905287169063095ea7b3906044016020604051808303816000875af1158015610ea8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ecc9190613a79565b610f02576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f0d858484612269565b50610f1886866126d4565b610f4e576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610fae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd29190613a96565b90508015610fe457610fe48782612764565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b738287878760405161102b93929190613a5f565b60405180910390a35061105d60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b600061106f61298a565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b61109c611f27565b6110a4611f85565b346000036110de576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166111055760405163d92e233d60e01b815260040160405180910390fd5b610400611115606083018361384a565b9050111561114f576040517f386691aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d806000811461119c576040519150601f19603f3d011682016040523d82523d6000602084013e6111a1565b606091505b50509050806111dc576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c34600086604051611224939291906139c9565b60405180910390a350610d6160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b61125e611f27565b611266611f85565b346000036112a0576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166112c75760405163d92e233d60e01b815260040160405180910390fd5b6104006112d7606083018361384a565b6112e29150846139ff565b111561131a576040517f386691aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114611367576040519150601f19603f3d011682016040523d82523d6000602084013e61136c565b606091505b50509050806113a7576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c3460008888886040516113f3959493929190613aaf565b60405180910390a350610a0160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61144f81611e30565b610d436129ec565b600061146281611e30565b6001600160a01b0382166114895760405163d92e233d60e01b815260040160405180910390fd5b6001546114c0907f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb906001600160a01b031661231c565b506114eb7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb83611e3a565b50600154604080516001600160a01b03928316815291841660208301527f3a7b8d6372645f474fe60c115a2ef21421306a3ed4664fa0023c461413c08579910160405180910390a150600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b961159881611e30565b6115a0611f27565b6115a8611f85565b846000036115e2576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0386166116095760405163d92e233d60e01b815260040160405180910390fd5b61161d6001600160a01b0388168787612a65565b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063c9028a3690611662908590600401613b52565b600060405180830381600087803b15801561167c57600080fd5b505af1158015611690573d6000803e3d6000fd5b50505050866001600160a01b0316866001600160a01b03167fde7603a6ed5d07c9f43597ccfe9043d15b66d3284f0de321f5cdf56329e6e035878787876040516116dd9493929190613b65565b60405180910390a361170e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050505050565b600061172281611e30565b6001600160a01b0382166117495760405163d92e233d60e01b815260040160405180910390fd5b6000546001600160a01b03161561178c576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117b67f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611e3a565b5050600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff1660008115801561183d5750825b905060008267ffffffffffffffff16600114801561185a5750303b155b905081158015611868575080155b1561189f576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156119005784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038816158061191d57506001600160a01b038716155b1561193b5760405163d92e233d60e01b815260040160405180910390fd5b611943612ad9565b61194b612ae1565b611953612ad9565b61195b612af1565b611966600087611e3a565b506119917f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611e3a565b506119bc7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a89611e3a565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a16179055611a1a7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb89611e3a565b50600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0389161790558315611aaf5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb611ae381611e30565b611aeb611f27565b611af3611f85565b6001600160a01b038516611b1a5760405163d92e233d60e01b815260040160405180910390fd5b6000856001600160a01b03163460405160006040518083038185875af1925050503d8060008114611b67576040519150601f19603f3d011682016040523d82523d6000602084013e611b6c565b606091505b5050905080611ba7576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063c9028a3690611bec908690600401613b52565b600060405180830381600087803b158015611c0657600080fd5b505af1158015611c1a573d6000803e3d6000fd5b5050505060006001600160a01b0316866001600160a01b03167fde7603a6ed5d07c9f43597ccfe9043d15b66d3284f0de321f5cdf56329e6e03534888888604051611c689493929190613b65565b60405180910390a350611c9a60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b611ca9611f27565b611cb1611f85565b84600003611ceb576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038616611d125760405163d92e233d60e01b815260040160405180910390fd5b610400611d22606083018361384a565b611d2d9150846139ff565b1115611d65576040517f386691aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d70338587612006565b856001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c8787878787604051611dbb959493929190613aaf565b60405180910390a361105d60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154611e2681611e30565b610a01838361231c565b610d438133612b01565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611f1d576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611ed33390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506107e2565b60009150506107e2565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611f83576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01612000576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6003546001600160a01b039081169083160361216a576120316001600160a01b038316843084612b8e565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561209d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c19190613a79565b6120f7576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561215657600080fd5b505af115801561170e573d6000803e3d6000fd5b6000546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301529091169063d936547e90602401602060405180830381865afa1580156121cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f19190613a79565b612227576040517fac2175f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610c20906001600160a01b038481169186911684612b8e565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60606122758383612bc7565b600080856001600160a01b0316348686604051612293929190613b9c565b60006040518083038185875af1925050503d80600081146122d0576040519150601f19603f3d011682016040523d82523d6000602084013e6122d5565b606091505b509150915081612311576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611f1d576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506107e2565b6060836001600160a01b031663676cc054348786866040518563ffffffff1660e01b815260040161241393929190613bac565b60006040518083038185885af1158015612431573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261245a9190810190613bd7565b95945050505050565b61246b612cc7565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061258c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166125807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611f83576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d6181611e30565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612628575060408051601f3d908101601f1916820190925261262591810190613a96565b60015b61266e576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146126ca576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401612665565b610c208383612d22565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015612740573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123159190613a79565b6003546001600160a01b03908116908316036128b3576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af11580156127e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061280a9190613a79565b612840576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561289f57600080fd5b505af115801561105d573d6000803e3d6000fd5b6000546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301529091169063d936547e90602401602060405180830381865afa158015612916573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061293a9190613a79565b612970576040517fac2175f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610d61906001600160a01b03848116911683612a65565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611f83576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6129f4611f27565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258336124d5565b6040516001600160a01b03838116602483015260448201839052610c2091859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612d78565b611f83612df4565b612ae9612df4565b611f83612e5b565b612af9612df4565b611f83612e63565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610d61576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401612665565b6040516001600160a01b038481166024830152838116604483015260648201839052610a019186918216906323b872dd90608401612a92565b60048110610d615781357f98933fac000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000821601612c4c576040517fed69977500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f36fd75ca000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000821601610c20576040517ff3459a9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611f83576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612d2b82612eb4565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115612d7057610c208282612f5c565b610d61612fc9565b6000612d8d6001600160a01b03841683613001565b90508051600014158015612db2575080806020019051810190612db09190613a79565b155b15610c20576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401612665565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611f83576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612243612df4565b612e6b612df4565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b806001600160a01b03163b600003612f03576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401612665565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051612f799190613c45565b600060405180830381855af49150503d8060008114612fb4576040519150601f19603f3d011682016040523d82523d6000602084013e612fb9565b606091505b509150915061245a85838361300f565b3415611f83576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061231583836000613084565b6060826130245761301f8261313a565b612315565b815115801561303b57506001600160a01b0384163b155b1561307d576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401612665565b5080612315565b6060814710156130c2576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401612665565b600080856001600160a01b031684866040516130de9190613c45565b60006040518083038185875af1925050503d806000811461311b576040519150601f19603f3d011682016040523d82523d6000602084013e613120565b606091505b509150915061313086838361300f565b9695505050505050565b80511561314a5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561318e57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461231557600080fd5b80356001600160a01b03811681146131d557600080fd5b919050565b6000602082840312156131ec57600080fd5b612315826131be565b600060a0828403121561320757600080fd5b50919050565b6000806000806080858703121561322357600080fd5b61322c856131be565b935060208501359250613241604086016131be565b9150606085013567ffffffffffffffff81111561325d57600080fd5b613269878288016131f5565b91505092959194509250565b60008083601f84011261328757600080fd5b50813567ffffffffffffffff81111561329f57600080fd5b6020830191508360208285010111156132b757600080fd5b9250929050565b600080600080606085870312156132d457600080fd5b6132dd856131be565b9350602085013567ffffffffffffffff8111156132f957600080fd5b61330587828801613275565b909450925050604085013567ffffffffffffffff81111561325d57600080fd5b60008060006040848603121561333a57600080fd5b613343846131be565b9250602084013567ffffffffffffffff81111561335f57600080fd5b61336b86828701613275565b9497909650939450505050565b60005b8381101561339357818101518382015260200161337b565b50506000910152565b600081518084526133b4816020860160208601613378565b601f01601f19169290920160200192915050565b602081526000612315602083018461339c565b6000602082840312156133ed57600080fd5b5035919050565b6000806040838503121561340757600080fd5b82359150613417602084016131be565b90509250929050565b600080600080848603606081121561343757600080fd5b602081121561344557600080fd5b50849350613455602086016131be565b9250604085013567ffffffffffffffff81111561347157600080fd5b61347d87828801613275565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156134e1576134e1613489565b604052919050565b600067ffffffffffffffff82111561350357613503613489565b50601f01601f191660200190565b6000806040838503121561352457600080fd5b61352d836131be565b9150602083013567ffffffffffffffff81111561354957600080fd5b8301601f8101851361355a57600080fd5b803561356d613568826134e9565b6134b8565b81815286602083850101111561358257600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000806000806000608086880312156135ba57600080fd5b6135c3866131be565b94506135d1602087016131be565b935060408601359250606086013567ffffffffffffffff8111156135f457600080fd5b61360088828901613275565b969995985093965092949392505050565b6000806040838503121561362457600080fd5b61362d836131be565b9150602083013567ffffffffffffffff81111561364957600080fd5b613655858286016131f5565b9150509250929050565b60006080828403121561320757600080fd5b60008060008060008060a0878903121561368a57600080fd5b613693876131be565b95506136a1602088016131be565b945060408701359350606087013567ffffffffffffffff8111156136c457600080fd5b6136d089828a01613275565b909450925050608087013567ffffffffffffffff8111156136f057600080fd5b6136fc89828a0161365f565b9150509295509295509295565b60008060006060848603121561371e57600080fd5b613727846131be565b9250613735602085016131be565b9150613743604085016131be565b90509250925092565b6000806000806060858703121561376257600080fd5b61376b856131be565b9350602085013567ffffffffffffffff81111561378757600080fd5b61379387828801613275565b909450925050604085013567ffffffffffffffff8111156137b357600080fd5b6132698782880161365f565b60008060008060008060a087890312156137d857600080fd5b6137e1876131be565b9550602087013594506137f6604088016131be565b9350606087013567ffffffffffffffff81111561381257600080fd5b61381e89828a01613275565b909450925050608087013567ffffffffffffffff81111561383e57600080fd5b6136fc89828a016131f5565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261387f57600080fd5b83018035915067ffffffffffffffff82111561389a57600080fd5b6020019150368190038213156132b757600080fd5b8015158114610d4357600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126138f257600080fd5b830160208101925035905067ffffffffffffffff81111561391257600080fd5b8036038213156132b757600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6001600160a01b0361395d826131be565b16825260006020820135613970816138af565b151560208401526001600160a01b0361398b604084016131be565b16604084015261399e60608301836138bd565b60a060608601526139b360a086018284613921565b6080948501359590940194909452509092915050565b8381526001600160a01b0383166020820152608060408201526000608082015260a06060820152600061245a60a083018461394c565b808201808211156107e2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b604081526000613a4d604083018587613921565b8281036020840152613130818561394c565b83815260406020820152600061245a604083018486613921565b600060208284031215613a8b57600080fd5b8151612315816138af565b600060208284031215613aa857600080fd5b5051919050565b8581526001600160a01b0385166020820152608060408201526000613ad8608083018587613921565b8281036060840152613aea818561394c565b98975050505050505050565b6001600160a01b03613b07826131be565b1682526001600160a01b03613b1e602083016131be565b166020830152604081810135908301526000613b3d60608301836138bd565b6080606086015261245a608086018284613921565b6020815260006123156020830184613af6565b848152606060208201526000613b7f606083018587613921565b8281036040840152613b918185613af6565b979650505050505050565b8183823760009101908152919050565b6001600160a01b03613bbd856131be565b16815260406020820152600061245a604083018486613921565b600060208284031215613be957600080fd5b815167ffffffffffffffff811115613c0057600080fd5b8201601f81018413613c1157600080fd5b8051613c1f613568826134e9565b818152856020838501011115613c3457600080fd5b61245a826020830160208601613378565b60008251613c57818460208701613378565b919091019291505056fea26469706673582212200a3675b249955f182e0fafe14d8d343b86cd879e1616dbd351a545cd70b6c85964736f6c634300081a0033"; type GatewayEVMConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/GatewayZEVMUpgradeTest__factory.ts b/v2/types/factories/GatewayZEVMUpgradeTest__factory.ts index 60063eb8d..944dbd650 100644 --- a/v2/types/factories/GatewayZEVMUpgradeTest__factory.ts +++ b/v2/types/factories/GatewayZEVMUpgradeTest__factory.ts @@ -1661,7 +1661,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516143726100fd60003960008181612bbd01528181612be60152612dbc01526143726000f3fe6080604052600436106101e75760003560e01c806352d1902d116101025780639d4ba46511610095578063c39aca3711610064578063c39aca37146106a2578063d547741f146106c2578063e63ab1e9146106e2578063f45346dc1461071657600080fd5b80639d4ba465146105f7578063a217fddf14610617578063ad3cb1cc1461062c578063bcf7f32b1461068257600080fd5b80638456cb59116100d15780638456cb591461054757806391d148541461055c57806397a1cef1146105c157806397d340f5146105e157600080fd5b806352d1902d146104bb5780635c975abb146104d05780637b15118b146105075780637c0dcb5f1461052757600080fd5b80632722feee1161017a5780633b283933116101495780633b283933146104535780633f4ba83a14610473578063485cc955146104885780634f1ef286146104a857600080fd5b80632722feee146103cb5780632810ae63146103f35780632f2ff15d1461041357806336568abe1461043357600080fd5b80631cb5ea75116101b65780631cb5ea75146102f657806321501a951461031657806321e093b114610336578063248a9ca31461036e57600080fd5b806301ffc9a714610261578063048ae42c1461029657806306cb8983146102b6578063184b0793146102d657600080fd5b3661025c576101f4610736565b6000546001600160a01b0316331480159061022357503373735b14bb79463307aacbed86daf3322b1e6226ab14155b1561025a576040517fb3af013700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b34801561026d57600080fd5b5061028161027c366004613305565b610794565b60405190151581526020015b60405180910390f35b3480156102a257600080fd5b5061025a6102b1366004613499565b61082d565b3480156102c257600080fd5b5061025a6102d136600461356b565b610a2d565b3480156102e257600080fd5b5061025a6102f136600461363b565b610b20565b34801561030257600080fd5b5061025a61031136600461368b565b610c0f565b34801561032257600080fd5b5061025a610331366004613739565b610cd5565b34801561034257600080fd5b50600054610356906001600160a01b031681565b6040516001600160a01b03909116815260200161028d565b34801561037a57600080fd5b506103bd6103893660046137c5565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b60405190815260200161028d565b3480156103d757600080fd5b5061035673735b14bb79463307aacbed86daf3322b1e6226ab81565b3480156103ff57600080fd5b5061025a61040e3660046137de565b610e89565b34801561041f57600080fd5b5061025a61042e366004613883565b611021565b34801561043f57600080fd5b5061025a61044e366004613883565b61106b565b34801561045f57600080fd5b5061025a61046e3660046138b3565b6110bc565b34801561047f57600080fd5b5061025a61122d565b34801561049457600080fd5b5061025a6104a3366004613946565b611262565b61025a6104b6366004613974565b61149e565b3480156104c757600080fd5b506103bd6114bd565b3480156104dc57600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610281565b34801561051357600080fd5b5061025a6105223660046139ba565b6114ec565b34801561053357600080fd5b5061025a610542366004613a2c565b6116a2565b34801561055357600080fd5b5061025a6118b6565b34801561056857600080fd5b50610281610577366004613883565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156105cd57600080fd5b5061025a6105dc366004613ab1565b6118e8565b3480156105ed57600080fd5b506103bd61040081565b34801561060357600080fd5b5061025a610612366004613b15565b611a4c565b34801561062357600080fd5b506103bd600081565b34801561063857600080fd5b506106756040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161028d9190613be3565b34801561068e57600080fd5b5061025a61069d366004613bf6565b611cbf565b3480156106ae57600080fd5b5061025a6106bd366004613bf6565b611dd6565b3480156106ce57600080fd5b5061025a6106dd366004613883565b611fcc565b3480156106ee57600080fd5b506103bd7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b34801561072257600080fd5b5061025a610731366004613c94565b612010565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615610792576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061082757507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610835612206565b61083d610736565b865160000361085f5760405163d92e233d60e01b815260040160405180910390fd5b85600003610899576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816000036108d3576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006108e36060830183613cd6565b6108ee915085613d3b565b1115610926576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610933878785612287565b90506000336001600160a01b03167f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c8a898b868c6001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c89190613d75565b6040805180820182528c81526001602082015290516109f29695949392918f918f91908e90613eca565b60405180910390a350610a2460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050505050565b610a35612206565b610a3d610736565b8135600003610a78576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610400610a886060830183613cd6565b610a93915085613d3b565b1115610acb576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610aef86868686610ae136889003880188613f4c565b610aea87613fa4565b61258a565b610b1860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b6d576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b75610736565b6001600160a01b038216610b9c5760405163d92e233d60e01b815260040160405180910390fd5b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063c9028a3690610be190849060040161404c565b600060405180830381600087803b158015610bfb57600080fd5b505af1158015610b18573d6000803e3d6000fd5b610c17612206565b610c1f610736565b81600003610c59576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610400610c696060830183613cd6565b610c74915085613d3b565b1115610cac576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610aef8686868660405180604001604052808881526020016001151581525086610aea90613fa4565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d22576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d2a610736565b6001600160a01b038316610d515760405163d92e233d60e01b815260040160405180910390fd5b83600003610d8b576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dbe57506001600160a01b03831630145b15610df5576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610dff8484612771565b6000546040517f5bcfd6160000000000000000000000000000000000000000000000000000000081526001600160a01b0380861692635bcfd61692610e50928a9216908990889088906004016140bc565b600060405180830381600087803b158015610e6a57600080fd5b505af1158015610e7e573d6000803e3d6000fd5b505050505050505050565b610e91612206565b610e99610736565b8651600003610ebb5760405163d92e233d60e01b815260040160405180910390fd5b85600003610ef5576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8135600003610f30576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610400610f406060830183613cd6565b610f4b915085613d3b565b1115610f83576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fa18673735b14bb79463307aacbed86daf3322b1e6226ab612771565b60008054604051879233927f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c92610ff0928d926001600160a01b0316918d919081908d908d908d908d90614158565b60405180910390a3610a2460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461105b8161293f565b6110658383612949565b50505050565b6001600160a01b03811633146110ad576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110b78282612a36565b505050565b6110c4612206565b6110cc610736565b85516000036110ee5760405163d92e233d60e01b815260040160405180910390fd5b84600003611128576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006111386060830183613cd6565b611143915084613d3b565b111561117b576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111998573735b14bb79463307aacbed86daf3322b1e6226ab612771565b60008054604080518082018252838152600160208201529051879333937f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c936111fc938d936001600160a01b03909316928d92909182918d918d91908d90613eca565b60405180910390a3610b1860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6112578161293f565b61125f612afa565b50565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156112ad5750825b905060008267ffffffffffffffff1660011480156112ca5750303b155b9050811580156112d8575080155b1561130f576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156113705784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038716158061138d57506001600160a01b038616155b156113ab5760405163d92e233d60e01b815260040160405180910390fd5b6113b3612b8a565b6113bb612b8a565b6113c3612b92565b6113cb612ba2565b6113d6600087612949565b506114017f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87612949565b50600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0389161790558315610a245784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050505050565b6114a6612bb2565b6114af82612c82565b6114b98282612c8d565b5050565b60006114c7612db1565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b6114f4612206565b6114fc610736565b865160000361151e5760405163d92e233d60e01b815260040160405180910390fd5b85600003611558576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8135600003611593576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006115a36060830183613cd6565b6115ae915085613d3b565b11156115e6576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006115f487878535612287565b90506000336001600160a01b03167f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c8a898b868c6001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611665573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116899190613d75565b8c8c8c8c6040516109f299989796959493929190614158565b6116aa612206565b6116b2610736565b83516000036116d45760405163d92e233d60e01b815260040160405180910390fd5b8260000361170e576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61040061171e6060830183613cd6565b90501115611758576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006117648484612e13565b90506000336001600160a01b03167f5d7cd8ae449a6b25de63f10534ddd17d8dd3e79c7aa5f28964b7a7c760258d9787868886896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f99190613d75565b60405180604001604052808c6001600160a01b031663091d27886040518163ffffffff1660e01b8152600401602060405180830381865afa158015611842573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118669190613d75565b81526001602090910152604051611884969594939291908c906141b0565b60405180910390a35061106560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6118e08161293f565b61125f612e81565b6118f0612206565b6118f8610736565b835160000361191a5760405163d92e233d60e01b815260040160405180910390fd5b82600003611954576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006119646060830183613cd6565b9050111561199e576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119bc8373735b14bb79463307aacbed86daf3322b1e6226ab612771565b60008054604080518082018252838152600160208201529051859333937f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c93611a1b938b936001600160a01b03909316928b9290918291908b906141b0565b60405180910390a361106560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611a99576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611aa1610736565b6001600160a01b0384161580611abe57506001600160a01b038216155b15611adc5760405163d92e233d60e01b815260040160405180910390fd5b82600003611b16576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821673735b14bb79463307aacbed86daf3322b1e6226ab1480611b4957506001600160a01b03821630145b15611b80576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152602482018590528516906347e7ef24906044016020604051808303816000875af1158015611be8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0c9190614232565b611c42576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063c9028a3690611c8790849060040161404c565b600060405180830381600087803b158015611ca157600080fd5b505af1158015611cb5573d6000803e3d6000fd5b5050505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611d0c576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d14610736565b6001600160a01b0385161580611d3157506001600160a01b038316155b15611d4f5760405163d92e233d60e01b815260040160405180910390fd5b6040517f5bcfd6160000000000000000000000000000000000000000000000000000000081526001600160a01b03841690635bcfd61690611d9c90899089908990889088906004016140bc565b600060405180830381600087803b158015611db657600080fd5b505af1158015611dca573d6000803e3d6000fd5b50505050505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611e23576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e2b610736565b6001600160a01b0385161580611e4857506001600160a01b038316155b15611e665760405163d92e233d60e01b815260040160405180910390fd5b83600003611ea0576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480611ed357506001600160a01b03831630145b15611f0a576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015611f72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f969190614232565b611d4f576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546120068161293f565b6110658383612a36565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461205d576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612065610736565b6001600160a01b038316158061208257506001600160a01b038116155b156120a05760405163d92e233d60e01b815260040160405180910390fd5b816000036120da576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab148061210d57506001600160a01b03811630145b15612144576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af11580156121ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d09190614232565b6110b7576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01612281576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6000806000846001600160a01b031663fc5fecd5856040518263ffffffff1660e01b81526004016122ba91815260200190565b6040805180830381865afa1580156122d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122fa919061424f565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561237f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a39190614232565b6123d9576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018790526001600160a01b038616906323b872dd906064016020604051808303816000875af1158015612445573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124699190614232565b61249f576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018790526001600160a01b038616906342966c68906024016020604051808303816000875af11580156124ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125239190614232565b612559576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b85516000036125ac5760405163d92e233d60e01b815260040160405180910390fd5b81516040517ffc5fecd5000000000000000000000000000000000000000000000000000000008152600481019190915260009081906001600160a01b0388169063fc5fecd5906024016040805180830381865afa158015612611573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612635919061424f565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af11580156126ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126de9190614232565b612714576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b866001600160a01b0316336001600160a01b03167f306ee13f48319a123b222c69908e44dcf91abffc20cacc502e3cf5a4ff23e0e48a8989898960405161275f95949392919061427d565b60405180910390a35050505050505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af11580156127e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128059190614232565b61283b576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561289a57600080fd5b505af11580156128ae573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d80600081146128ff576040519150601f19603f3d011682016040523d82523d6000602084013e612904565b606091505b50509050806110b7576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61125f8133612efa565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16612a2c576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556129e23390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610827565b6000915050610827565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615612a2c576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610827565b612b02612f87565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b610792612fe2565b612b9a612fe2565b610792613049565b612baa612fe2565b61079261309a565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480612c4b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612c3f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610792576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006114b98161293f565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612d05575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612d0291810190613d75565b60015b612d4b576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114612da7576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401612d42565b6110b783836130a2565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610792576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061255d8383846001600160a01b031663091d27886040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e7c9190613d75565b612287565b612e89610736565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833612b6c565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166114b9576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401612d42565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610792576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610792576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613051612fe2565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b612564612fe2565b6130ab826130f8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156130f0576110b782826131a0565b6114b9613216565b806001600160a01b03163b600003613147576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401612d42565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516131bd9190614320565b600060405180830381855af49150503d80600081146131f8576040519150601f19603f3d011682016040523d82523d6000602084013e6131fd565b606091505b509150915061320d85838361324e565b95945050505050565b3415610792576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060826132635761325e826132c3565b61255d565b815115801561327a57506001600160a01b0384163b155b156132bc576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401612d42565b508061255d565b8051156132d35780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561331757600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461255d57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261338757600080fd5b813567ffffffffffffffff8111156133a1576133a1613347565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff811182821017156133ee576133ee613347565b60405281815283820160200185101561340657600080fd5b816020850160208301376000918101602001919091529392505050565b6001600160a01b038116811461125f57600080fd5b60008083601f84011261344a57600080fd5b50813567ffffffffffffffff81111561346257600080fd5b60208301915083602082850101111561347a57600080fd5b9250929050565b600060a0828403121561349357600080fd5b50919050565b600080600080600080600060c0888a0312156134b457600080fd5b873567ffffffffffffffff8111156134cb57600080fd5b6134d78a828b01613376565b9750506020880135955060408801356134ef81613423565b9450606088013567ffffffffffffffff81111561350b57600080fd5b6135178a828b01613438565b9095509350506080880135915060a088013567ffffffffffffffff81111561353e57600080fd5b61354a8a828b01613481565b91505092959891949750929550565b60006040828403121561349357600080fd5b60008060008060008060c0878903121561358457600080fd5b863567ffffffffffffffff81111561359b57600080fd5b6135a789828a01613376565b96505060208701356135b881613423565b9450604087013567ffffffffffffffff8111156135d457600080fd5b6135e089828a01613438565b90955093506135f490508860608901613559565b915060a087013567ffffffffffffffff81111561361057600080fd5b61361c89828a01613481565b9150509295509295509295565b60006080828403121561349357600080fd5b6000806040838503121561364e57600080fd5b823561365981613423565b9150602083013567ffffffffffffffff81111561367557600080fd5b61368185828601613629565b9150509250929050565b60008060008060008060a087890312156136a457600080fd5b863567ffffffffffffffff8111156136bb57600080fd5b6136c789828a01613376565b96505060208701356136d881613423565b9450604087013567ffffffffffffffff8111156136f457600080fd5b61370089828a01613438565b90955093505060608701359150608087013567ffffffffffffffff81111561361057600080fd5b60006060828403121561349357600080fd5b60008060008060006080868803121561375157600080fd5b853567ffffffffffffffff81111561376857600080fd5b61377488828901613727565b95505060208601359350604086013561378c81613423565b9250606086013567ffffffffffffffff8111156137a857600080fd5b6137b488828901613438565b969995985093965092949392505050565b6000602082840312156137d757600080fd5b5035919050565b600080600080600080600060e0888a0312156137f957600080fd5b873567ffffffffffffffff81111561381057600080fd5b61381c8a828b01613376565b9750506020880135955060408801359450606088013567ffffffffffffffff81111561384757600080fd5b6138538a828b01613438565b909550935061386790508960808a01613559565b915060c088013567ffffffffffffffff81111561353e57600080fd5b6000806040838503121561389657600080fd5b8235915060208301356138a881613423565b809150509250929050565b60008060008060008060a087890312156138cc57600080fd5b863567ffffffffffffffff8111156138e357600080fd5b6138ef89828a01613376565b9650506020870135945060408701359350606087013567ffffffffffffffff81111561391a57600080fd5b61392689828a01613438565b909450925050608087013567ffffffffffffffff81111561361057600080fd5b6000806040838503121561395957600080fd5b823561396481613423565b915060208301356138a881613423565b6000806040838503121561398757600080fd5b823561399281613423565b9150602083013567ffffffffffffffff8111156139ae57600080fd5b61368185828601613376565b600080600080600080600060e0888a0312156139d557600080fd5b873567ffffffffffffffff8111156139ec57600080fd5b6139f88a828b01613376565b975050602088013595506040880135613a1081613423565b9450606088013567ffffffffffffffff81111561384757600080fd5b60008060008060808587031215613a4257600080fd5b843567ffffffffffffffff811115613a5957600080fd5b613a6587828801613376565b945050602085013592506040850135613a7d81613423565b9150606085013567ffffffffffffffff811115613a9957600080fd5b613aa587828801613481565b91505092959194509250565b60008060008060808587031215613ac757600080fd5b843567ffffffffffffffff811115613ade57600080fd5b613aea87828801613376565b9450506020850135925060408501359150606085013567ffffffffffffffff811115613a9957600080fd5b60008060008060808587031215613b2b57600080fd5b8435613b3681613423565b9350602085013592506040850135613b4d81613423565b9150606085013567ffffffffffffffff811115613b6957600080fd5b613aa587828801613629565b60005b83811015613b90578181015183820152602001613b78565b50506000910152565b60008151808452613bb1816020860160208601613b75565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061255d6020830184613b99565b60008060008060008060a08789031215613c0f57600080fd5b863567ffffffffffffffff811115613c2657600080fd5b613c3289828a01613727565b9650506020870135613c4381613423565b9450604087013593506060870135613c5a81613423565b9250608087013567ffffffffffffffff811115613c7657600080fd5b613c8289828a01613438565b979a9699509497509295939492505050565b600080600060608486031215613ca957600080fd5b8335613cb481613423565b9250602084013591506040840135613ccb81613423565b809150509250925092565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613d0b57600080fd5b83018035915067ffffffffffffffff821115613d2657600080fd5b60200191503681900382131561347a57600080fd5b80820180821115610827577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060208284031215613d8757600080fd5b5051919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b801515811461125f57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613e1a57600080fd5b830160208101925035905067ffffffffffffffff811115613e3a57600080fd5b80360382131561347a57600080fd5b60008135613e5681613423565b6001600160a01b031683526020820135613e6f81613dd7565b151560208401526040820135613e8481613423565b6001600160a01b03166040840152613e9f6060830183613de5565b60a06060860152613eb460a086018284613d8e565b6080948501359590940194909452509092915050565b61012081526000613edf61012083018c613b99565b6001600160a01b038b16602084015289604084015288606084015287608084015282810360a0840152613f13818789613d8e565b855160c08501526020860151151560e085015290505b828103610100840152613f3c8185613e49565b9c9b505050505050505050505050565b60006040828403128015613f5f57600080fd5b506040805190810167ffffffffffffffff81118282101715613f8357613f83613347565b604052823581526020830135613f9881613dd7565b60208201529392505050565b600060a08236031215613fb657600080fd5b60405160a0810167ffffffffffffffff81118282101715613fd957613fd9613347565b6040528235613fe781613423565b81526020830135613ff781613dd7565b6020820152604083013561400a81613423565b6040820152606083013567ffffffffffffffff81111561402957600080fd5b61403536828601613376565b606083015250608092830135928101929092525090565b602081526000823561405d81613423565b6001600160a01b038116602084015250602083013561407b81613423565b6001600160a01b038116604084015250600060408401359050806060840152506140a86060840184613de5565b60808085015261320d60a085018284613d8e565b6080815260006140cc8788613de5565b606060808501526140e160e085018284613d8e565b91505060208801356140f281613423565b6001600160a01b0390811660a085015260408981013560c086015290881660208501528301869052828103606084015261412d818587613d8e565b98975050505050505050565b80358252602081013561414b81613dd7565b8015156020840152505050565b6101208152600061416d61012083018c613b99565b6001600160a01b038b16602084015289604084015288606084015287608084015282810360a08401526141a1818789613d8e565b9050613f2960c0840186614139565b610120815260006141c561012083018a613b99565b6001600160a01b03891660208401528760408401528660608401528560808401528281038060a08501526000825261420c60c0850187805182526020908101511515910152565b60208101610100850152506142246020820185613e49565b9a9950505050505050505050565b60006020828403121561424457600080fd5b815161255d81613dd7565b6000806040838503121561426257600080fd5b825161426d81613423565b6020939093015192949293505050565b60a08152600061429060a0830188613b99565b82810360208401526142a3818789613d8e565b85516040850152602086015115156060850152905082810360808401526001600160a01b0384511681526020840151151560208201526001600160a01b036040850151166040820152606084015160a0606083015261430560a0830182613b99565b90506080850151608083015280925050509695505050505050565b60008251614332818460208701613b75565b919091019291505056fea26469706673582212200e0740cf9577260ac8080f2b9fad409cda87278f329b623909c21dac32f9900864736f6c634300081a0033"; + "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516143726100fd60003960008181612bbd01528181612be60152612dbc01526143726000f3fe6080604052600436106101e75760003560e01c806352d1902d116101025780639d4ba46511610095578063c39aca3711610064578063c39aca37146106a2578063d547741f146106c2578063e63ab1e9146106e2578063f45346dc1461071657600080fd5b80639d4ba465146105f7578063a217fddf14610617578063ad3cb1cc1461062c578063bcf7f32b1461068257600080fd5b80638456cb59116100d15780638456cb591461054757806391d148541461055c57806397a1cef1146105c157806397d340f5146105e157600080fd5b806352d1902d146104bb5780635c975abb146104d05780637b15118b146105075780637c0dcb5f1461052757600080fd5b80632722feee1161017a5780633b283933116101495780633b283933146104535780633f4ba83a14610473578063485cc955146104885780634f1ef286146104a857600080fd5b80632722feee146103cb5780632810ae63146103f35780632f2ff15d1461041357806336568abe1461043357600080fd5b80631cb5ea75116101b65780631cb5ea75146102f657806321501a951461031657806321e093b114610336578063248a9ca31461036e57600080fd5b806301ffc9a714610261578063048ae42c1461029657806306cb8983146102b6578063184b0793146102d657600080fd5b3661025c576101f4610736565b6000546001600160a01b0316331480159061022357503373735b14bb79463307aacbed86daf3322b1e6226ab14155b1561025a576040517fb3af013700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b34801561026d57600080fd5b5061028161027c366004613305565b610794565b60405190151581526020015b60405180910390f35b3480156102a257600080fd5b5061025a6102b1366004613499565b61082d565b3480156102c257600080fd5b5061025a6102d136600461356b565b610a2d565b3480156102e257600080fd5b5061025a6102f136600461363b565b610b20565b34801561030257600080fd5b5061025a61031136600461368b565b610c0f565b34801561032257600080fd5b5061025a610331366004613739565b610cd5565b34801561034257600080fd5b50600054610356906001600160a01b031681565b6040516001600160a01b03909116815260200161028d565b34801561037a57600080fd5b506103bd6103893660046137c5565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b60405190815260200161028d565b3480156103d757600080fd5b5061035673735b14bb79463307aacbed86daf3322b1e6226ab81565b3480156103ff57600080fd5b5061025a61040e3660046137de565b610e89565b34801561041f57600080fd5b5061025a61042e366004613883565b611021565b34801561043f57600080fd5b5061025a61044e366004613883565b61106b565b34801561045f57600080fd5b5061025a61046e3660046138b3565b6110bc565b34801561047f57600080fd5b5061025a61122d565b34801561049457600080fd5b5061025a6104a3366004613946565b611262565b61025a6104b6366004613974565b61149e565b3480156104c757600080fd5b506103bd6114bd565b3480156104dc57600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610281565b34801561051357600080fd5b5061025a6105223660046139ba565b6114ec565b34801561053357600080fd5b5061025a610542366004613a2c565b6116a2565b34801561055357600080fd5b5061025a6118b6565b34801561056857600080fd5b50610281610577366004613883565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156105cd57600080fd5b5061025a6105dc366004613ab1565b6118e8565b3480156105ed57600080fd5b506103bd61040081565b34801561060357600080fd5b5061025a610612366004613b15565b611a4c565b34801561062357600080fd5b506103bd600081565b34801561063857600080fd5b506106756040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161028d9190613be3565b34801561068e57600080fd5b5061025a61069d366004613bf6565b611cbf565b3480156106ae57600080fd5b5061025a6106bd366004613bf6565b611dd6565b3480156106ce57600080fd5b5061025a6106dd366004613883565b611fcc565b3480156106ee57600080fd5b506103bd7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b34801561072257600080fd5b5061025a610731366004613c94565b612010565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615610792576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061082757507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610835612206565b61083d610736565b865160000361085f5760405163d92e233d60e01b815260040160405180910390fd5b85600003610899576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816000036108d3576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006108e36060830183613cd6565b6108ee915085613d3b565b1115610926576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610933878785612287565b90506000336001600160a01b03167f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c8a898b868c6001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c89190613d75565b6040805180820182528c81526001602082015290516109f29695949392918f918f91908e90613eca565b60405180910390a350610a2460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050505050565b610a35612206565b610a3d610736565b8135600003610a78576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610400610a886060830183613cd6565b610a93915085613d3b565b1115610acb576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610aef86868686610ae136889003880188613f4c565b610aea87613fa4565b61258a565b610b1860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b6d576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b75610736565b6001600160a01b038216610b9c5760405163d92e233d60e01b815260040160405180910390fd5b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063c9028a3690610be190849060040161404c565b600060405180830381600087803b158015610bfb57600080fd5b505af1158015610b18573d6000803e3d6000fd5b610c17612206565b610c1f610736565b81600003610c59576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610400610c696060830183613cd6565b610c74915085613d3b565b1115610cac576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610aef8686868660405180604001604052808881526020016001151581525086610aea90613fa4565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d22576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d2a610736565b6001600160a01b038316610d515760405163d92e233d60e01b815260040160405180910390fd5b83600003610d8b576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dbe57506001600160a01b03831630145b15610df5576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610dff8484612771565b6000546040517f5bcfd6160000000000000000000000000000000000000000000000000000000081526001600160a01b0380861692635bcfd61692610e50928a9216908990889088906004016140bc565b600060405180830381600087803b158015610e6a57600080fd5b505af1158015610e7e573d6000803e3d6000fd5b505050505050505050565b610e91612206565b610e99610736565b8651600003610ebb5760405163d92e233d60e01b815260040160405180910390fd5b85600003610ef5576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8135600003610f30576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610400610f406060830183613cd6565b610f4b915085613d3b565b1115610f83576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fa18673735b14bb79463307aacbed86daf3322b1e6226ab612771565b60008054604051879233927f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c92610ff0928d926001600160a01b0316918d919081908d908d908d908d90614158565b60405180910390a3610a2460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461105b8161293f565b6110658383612949565b50505050565b6001600160a01b03811633146110ad576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110b78282612a36565b505050565b6110c4612206565b6110cc610736565b85516000036110ee5760405163d92e233d60e01b815260040160405180910390fd5b84600003611128576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006111386060830183613cd6565b611143915084613d3b565b111561117b576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111998573735b14bb79463307aacbed86daf3322b1e6226ab612771565b60008054604080518082018252838152600160208201529051879333937f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c936111fc938d936001600160a01b03909316928d92909182918d918d91908d90613eca565b60405180910390a3610b1860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6112578161293f565b61125f612afa565b50565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156112ad5750825b905060008267ffffffffffffffff1660011480156112ca5750303b155b9050811580156112d8575080155b1561130f576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156113705784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038716158061138d57506001600160a01b038616155b156113ab5760405163d92e233d60e01b815260040160405180910390fd5b6113b3612b8a565b6113bb612b8a565b6113c3612b92565b6113cb612ba2565b6113d6600087612949565b506114017f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87612949565b50600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0389161790558315610a245784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050505050565b6114a6612bb2565b6114af82612c82565b6114b98282612c8d565b5050565b60006114c7612db1565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b6114f4612206565b6114fc610736565b865160000361151e5760405163d92e233d60e01b815260040160405180910390fd5b85600003611558576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8135600003611593576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006115a36060830183613cd6565b6115ae915085613d3b565b11156115e6576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006115f487878535612287565b90506000336001600160a01b03167f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c8a898b868c6001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611665573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116899190613d75565b8c8c8c8c6040516109f299989796959493929190614158565b6116aa612206565b6116b2610736565b83516000036116d45760405163d92e233d60e01b815260040160405180910390fd5b8260000361170e576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61040061171e6060830183613cd6565b90501115611758576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006117648484612e13565b90506000336001600160a01b03167f5d7cd8ae449a6b25de63f10534ddd17d8dd3e79c7aa5f28964b7a7c760258d9787868886896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f99190613d75565b60405180604001604052808c6001600160a01b031663091d27886040518163ffffffff1660e01b8152600401602060405180830381865afa158015611842573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118669190613d75565b81526001602090910152604051611884969594939291908c906141b0565b60405180910390a35061106560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6118e08161293f565b61125f612e81565b6118f0612206565b6118f8610736565b835160000361191a5760405163d92e233d60e01b815260040160405180910390fd5b82600003611954576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006119646060830183613cd6565b9050111561199e576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119bc8373735b14bb79463307aacbed86daf3322b1e6226ab612771565b60008054604080518082018252838152600160208201529051859333937f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c93611a1b938b936001600160a01b03909316928b9290918291908b906141b0565b60405180910390a361106560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611a99576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611aa1610736565b6001600160a01b0384161580611abe57506001600160a01b038216155b15611adc5760405163d92e233d60e01b815260040160405180910390fd5b82600003611b16576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821673735b14bb79463307aacbed86daf3322b1e6226ab1480611b4957506001600160a01b03821630145b15611b80576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152602482018590528516906347e7ef24906044016020604051808303816000875af1158015611be8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0c9190614232565b611c42576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063c9028a3690611c8790849060040161404c565b600060405180830381600087803b158015611ca157600080fd5b505af1158015611cb5573d6000803e3d6000fd5b5050505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611d0c576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d14610736565b6001600160a01b0385161580611d3157506001600160a01b038316155b15611d4f5760405163d92e233d60e01b815260040160405180910390fd5b6040517f5bcfd6160000000000000000000000000000000000000000000000000000000081526001600160a01b03841690635bcfd61690611d9c90899089908990889088906004016140bc565b600060405180830381600087803b158015611db657600080fd5b505af1158015611dca573d6000803e3d6000fd5b50505050505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611e23576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e2b610736565b6001600160a01b0385161580611e4857506001600160a01b038316155b15611e665760405163d92e233d60e01b815260040160405180910390fd5b83600003611ea0576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480611ed357506001600160a01b03831630145b15611f0a576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015611f72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f969190614232565b611d4f576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546120068161293f565b6110658383612a36565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461205d576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612065610736565b6001600160a01b038316158061208257506001600160a01b038116155b156120a05760405163d92e233d60e01b815260040160405180910390fd5b816000036120da576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab148061210d57506001600160a01b03811630145b15612144576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af11580156121ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d09190614232565b6110b7576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01612281576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6000806000846001600160a01b031663fc5fecd5856040518263ffffffff1660e01b81526004016122ba91815260200190565b6040805180830381865afa1580156122d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122fa919061424f565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561237f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a39190614232565b6123d9576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018790526001600160a01b038616906323b872dd906064016020604051808303816000875af1158015612445573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124699190614232565b61249f576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018790526001600160a01b038616906342966c68906024016020604051808303816000875af11580156124ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125239190614232565b612559576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b85516000036125ac5760405163d92e233d60e01b815260040160405180910390fd5b81516040517ffc5fecd5000000000000000000000000000000000000000000000000000000008152600481019190915260009081906001600160a01b0388169063fc5fecd5906024016040805180830381865afa158015612611573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612635919061424f565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af11580156126ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126de9190614232565b612714576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b866001600160a01b0316336001600160a01b03167f306ee13f48319a123b222c69908e44dcf91abffc20cacc502e3cf5a4ff23e0e48a8989898960405161275f95949392919061427d565b60405180910390a35050505050505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af11580156127e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128059190614232565b61283b576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561289a57600080fd5b505af11580156128ae573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d80600081146128ff576040519150601f19603f3d011682016040523d82523d6000602084013e612904565b606091505b50509050806110b7576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61125f8133612efa565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16612a2c576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556129e23390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610827565b6000915050610827565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615612a2c576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610827565b612b02612f87565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b610792612fe2565b612b9a612fe2565b610792613049565b612baa612fe2565b61079261309a565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480612c4b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612c3f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610792576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006114b98161293f565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612d05575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612d0291810190613d75565b60015b612d4b576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114612da7576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401612d42565b6110b783836130a2565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610792576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061255d8383846001600160a01b031663091d27886040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e7c9190613d75565b612287565b612e89610736565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833612b6c565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166114b9576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401612d42565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610792576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610792576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613051612fe2565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b612564612fe2565b6130ab826130f8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156130f0576110b782826131a0565b6114b9613216565b806001600160a01b03163b600003613147576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401612d42565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516131bd9190614320565b600060405180830381855af49150503d80600081146131f8576040519150601f19603f3d011682016040523d82523d6000602084013e6131fd565b606091505b509150915061320d85838361324e565b95945050505050565b3415610792576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060826132635761325e826132c3565b61255d565b815115801561327a57506001600160a01b0384163b155b156132bc576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401612d42565b508061255d565b8051156132d35780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561331757600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461255d57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261338757600080fd5b813567ffffffffffffffff8111156133a1576133a1613347565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff811182821017156133ee576133ee613347565b60405281815283820160200185101561340657600080fd5b816020850160208301376000918101602001919091529392505050565b6001600160a01b038116811461125f57600080fd5b60008083601f84011261344a57600080fd5b50813567ffffffffffffffff81111561346257600080fd5b60208301915083602082850101111561347a57600080fd5b9250929050565b600060a0828403121561349357600080fd5b50919050565b600080600080600080600060c0888a0312156134b457600080fd5b873567ffffffffffffffff8111156134cb57600080fd5b6134d78a828b01613376565b9750506020880135955060408801356134ef81613423565b9450606088013567ffffffffffffffff81111561350b57600080fd5b6135178a828b01613438565b9095509350506080880135915060a088013567ffffffffffffffff81111561353e57600080fd5b61354a8a828b01613481565b91505092959891949750929550565b60006040828403121561349357600080fd5b60008060008060008060c0878903121561358457600080fd5b863567ffffffffffffffff81111561359b57600080fd5b6135a789828a01613376565b96505060208701356135b881613423565b9450604087013567ffffffffffffffff8111156135d457600080fd5b6135e089828a01613438565b90955093506135f490508860608901613559565b915060a087013567ffffffffffffffff81111561361057600080fd5b61361c89828a01613481565b9150509295509295509295565b60006080828403121561349357600080fd5b6000806040838503121561364e57600080fd5b823561365981613423565b9150602083013567ffffffffffffffff81111561367557600080fd5b61368185828601613629565b9150509250929050565b60008060008060008060a087890312156136a457600080fd5b863567ffffffffffffffff8111156136bb57600080fd5b6136c789828a01613376565b96505060208701356136d881613423565b9450604087013567ffffffffffffffff8111156136f457600080fd5b61370089828a01613438565b90955093505060608701359150608087013567ffffffffffffffff81111561361057600080fd5b60006060828403121561349357600080fd5b60008060008060006080868803121561375157600080fd5b853567ffffffffffffffff81111561376857600080fd5b61377488828901613727565b95505060208601359350604086013561378c81613423565b9250606086013567ffffffffffffffff8111156137a857600080fd5b6137b488828901613438565b969995985093965092949392505050565b6000602082840312156137d757600080fd5b5035919050565b600080600080600080600060e0888a0312156137f957600080fd5b873567ffffffffffffffff81111561381057600080fd5b61381c8a828b01613376565b9750506020880135955060408801359450606088013567ffffffffffffffff81111561384757600080fd5b6138538a828b01613438565b909550935061386790508960808a01613559565b915060c088013567ffffffffffffffff81111561353e57600080fd5b6000806040838503121561389657600080fd5b8235915060208301356138a881613423565b809150509250929050565b60008060008060008060a087890312156138cc57600080fd5b863567ffffffffffffffff8111156138e357600080fd5b6138ef89828a01613376565b9650506020870135945060408701359350606087013567ffffffffffffffff81111561391a57600080fd5b61392689828a01613438565b909450925050608087013567ffffffffffffffff81111561361057600080fd5b6000806040838503121561395957600080fd5b823561396481613423565b915060208301356138a881613423565b6000806040838503121561398757600080fd5b823561399281613423565b9150602083013567ffffffffffffffff8111156139ae57600080fd5b61368185828601613376565b600080600080600080600060e0888a0312156139d557600080fd5b873567ffffffffffffffff8111156139ec57600080fd5b6139f88a828b01613376565b975050602088013595506040880135613a1081613423565b9450606088013567ffffffffffffffff81111561384757600080fd5b60008060008060808587031215613a4257600080fd5b843567ffffffffffffffff811115613a5957600080fd5b613a6587828801613376565b945050602085013592506040850135613a7d81613423565b9150606085013567ffffffffffffffff811115613a9957600080fd5b613aa587828801613481565b91505092959194509250565b60008060008060808587031215613ac757600080fd5b843567ffffffffffffffff811115613ade57600080fd5b613aea87828801613376565b9450506020850135925060408501359150606085013567ffffffffffffffff811115613a9957600080fd5b60008060008060808587031215613b2b57600080fd5b8435613b3681613423565b9350602085013592506040850135613b4d81613423565b9150606085013567ffffffffffffffff811115613b6957600080fd5b613aa587828801613629565b60005b83811015613b90578181015183820152602001613b78565b50506000910152565b60008151808452613bb1816020860160208601613b75565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061255d6020830184613b99565b60008060008060008060a08789031215613c0f57600080fd5b863567ffffffffffffffff811115613c2657600080fd5b613c3289828a01613727565b9650506020870135613c4381613423565b9450604087013593506060870135613c5a81613423565b9250608087013567ffffffffffffffff811115613c7657600080fd5b613c8289828a01613438565b979a9699509497509295939492505050565b600080600060608486031215613ca957600080fd5b8335613cb481613423565b9250602084013591506040840135613ccb81613423565b809150509250925092565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613d0b57600080fd5b83018035915067ffffffffffffffff821115613d2657600080fd5b60200191503681900382131561347a57600080fd5b80820180821115610827577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060208284031215613d8757600080fd5b5051919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b801515811461125f57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613e1a57600080fd5b830160208101925035905067ffffffffffffffff811115613e3a57600080fd5b80360382131561347a57600080fd5b60008135613e5681613423565b6001600160a01b031683526020820135613e6f81613dd7565b151560208401526040820135613e8481613423565b6001600160a01b03166040840152613e9f6060830183613de5565b60a06060860152613eb460a086018284613d8e565b6080948501359590940194909452509092915050565b61012081526000613edf61012083018c613b99565b6001600160a01b038b16602084015289604084015288606084015287608084015282810360a0840152613f13818789613d8e565b855160c08501526020860151151560e085015290505b828103610100840152613f3c8185613e49565b9c9b505050505050505050505050565b60006040828403128015613f5f57600080fd5b506040805190810167ffffffffffffffff81118282101715613f8357613f83613347565b604052823581526020830135613f9881613dd7565b60208201529392505050565b600060a08236031215613fb657600080fd5b60405160a0810167ffffffffffffffff81118282101715613fd957613fd9613347565b6040528235613fe781613423565b81526020830135613ff781613dd7565b6020820152604083013561400a81613423565b6040820152606083013567ffffffffffffffff81111561402957600080fd5b61403536828601613376565b606083015250608092830135928101929092525090565b602081526000823561405d81613423565b6001600160a01b038116602084015250602083013561407b81613423565b6001600160a01b038116604084015250600060408401359050806060840152506140a86060840184613de5565b60808085015261320d60a085018284613d8e565b6080815260006140cc8788613de5565b606060808501526140e160e085018284613d8e565b91505060208801356140f281613423565b6001600160a01b0390811660a085015260408981013560c086015290881660208501528301869052828103606084015261412d818587613d8e565b98975050505050505050565b80358252602081013561414b81613dd7565b8015156020840152505050565b6101208152600061416d61012083018c613b99565b6001600160a01b038b16602084015289604084015288606084015287608084015282810360a08401526141a1818789613d8e565b9050613f2960c0840186614139565b610120815260006141c561012083018a613b99565b6001600160a01b03891660208401528760408401528660608401528560808401528281038060a08501526000825261420c60c0850187805182526020908101511515910152565b60208101610100850152506142246020820185613e49565b9a9950505050505050505050565b60006020828403121561424457600080fd5b815161255d81613dd7565b6000806040838503121561426257600080fd5b825161426d81613423565b6020939093015192949293505050565b60a08152600061429060a0830188613b99565b82810360208401526142a3818789613d8e565b85516040850152602086015115156060850152905082810360808401526001600160a01b0384511681526020840151151560208201526001600160a01b036040850151166040820152606084015160a0606083015261430560a0830182613b99565b90506080850151608083015280925050509695505050505050565b60008251614332818460208701613b75565b919091019291505056fea2646970667358221220597ae6db6f18d4245300a1cb580e9a1210b060ce2b07733306cb0fe29f481fdd64736f6c634300081a0033"; type GatewayZEVMUpgradeTestConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/GatewayZEVM__factory.ts b/v2/types/factories/GatewayZEVM__factory.ts index 8e95233e0..177619cac 100644 --- a/v2/types/factories/GatewayZEVM__factory.ts +++ b/v2/types/factories/GatewayZEVM__factory.ts @@ -1552,7 +1552,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516143726100fd60003960008181612bbd01528181612be60152612dbc01526143726000f3fe6080604052600436106101e75760003560e01c806352d1902d116101025780639d4ba46511610095578063c39aca3711610064578063c39aca37146106a2578063d547741f146106c2578063e63ab1e9146106e2578063f45346dc1461071657600080fd5b80639d4ba465146105f7578063a217fddf14610617578063ad3cb1cc1461062c578063bcf7f32b1461068257600080fd5b80638456cb59116100d15780638456cb591461054757806391d148541461055c57806397a1cef1146105c157806397d340f5146105e157600080fd5b806352d1902d146104bb5780635c975abb146104d05780637b15118b146105075780637c0dcb5f1461052757600080fd5b80632722feee1161017a5780633b283933116101495780633b283933146104535780633f4ba83a14610473578063485cc955146104885780634f1ef286146104a857600080fd5b80632722feee146103cb5780632810ae63146103f35780632f2ff15d1461041357806336568abe1461043357600080fd5b80631cb5ea75116101b65780631cb5ea75146102f657806321501a951461031657806321e093b114610336578063248a9ca31461036e57600080fd5b806301ffc9a714610261578063048ae42c1461029657806306cb8983146102b6578063184b0793146102d657600080fd5b3661025c576101f4610736565b6000546001600160a01b0316331480159061022357503373735b14bb79463307aacbed86daf3322b1e6226ab14155b1561025a576040517fb3af013700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b34801561026d57600080fd5b5061028161027c366004613305565b610794565b60405190151581526020015b60405180910390f35b3480156102a257600080fd5b5061025a6102b1366004613499565b61082d565b3480156102c257600080fd5b5061025a6102d136600461356b565b610a2d565b3480156102e257600080fd5b5061025a6102f136600461363b565b610b20565b34801561030257600080fd5b5061025a61031136600461368b565b610c0f565b34801561032257600080fd5b5061025a610331366004613739565b610cd5565b34801561034257600080fd5b50600054610356906001600160a01b031681565b6040516001600160a01b03909116815260200161028d565b34801561037a57600080fd5b506103bd6103893660046137c5565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b60405190815260200161028d565b3480156103d757600080fd5b5061035673735b14bb79463307aacbed86daf3322b1e6226ab81565b3480156103ff57600080fd5b5061025a61040e3660046137de565b610e89565b34801561041f57600080fd5b5061025a61042e366004613883565b611021565b34801561043f57600080fd5b5061025a61044e366004613883565b61106b565b34801561045f57600080fd5b5061025a61046e3660046138b3565b6110bc565b34801561047f57600080fd5b5061025a61122d565b34801561049457600080fd5b5061025a6104a3366004613946565b611262565b61025a6104b6366004613974565b61149e565b3480156104c757600080fd5b506103bd6114bd565b3480156104dc57600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610281565b34801561051357600080fd5b5061025a6105223660046139ba565b6114ec565b34801561053357600080fd5b5061025a610542366004613a2c565b6116a2565b34801561055357600080fd5b5061025a6118b6565b34801561056857600080fd5b50610281610577366004613883565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156105cd57600080fd5b5061025a6105dc366004613ab1565b6118e8565b3480156105ed57600080fd5b506103bd61040081565b34801561060357600080fd5b5061025a610612366004613b15565b611a4c565b34801561062357600080fd5b506103bd600081565b34801561063857600080fd5b506106756040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161028d9190613be3565b34801561068e57600080fd5b5061025a61069d366004613bf6565b611cbf565b3480156106ae57600080fd5b5061025a6106bd366004613bf6565b611dd6565b3480156106ce57600080fd5b5061025a6106dd366004613883565b611fcc565b3480156106ee57600080fd5b506103bd7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b34801561072257600080fd5b5061025a610731366004613c94565b612010565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615610792576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061082757507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610835612206565b61083d610736565b865160000361085f5760405163d92e233d60e01b815260040160405180910390fd5b85600003610899576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816000036108d3576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006108e36060830183613cd6565b6108ee915085613d3b565b1115610926576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610933878785612287565b90506000336001600160a01b03167f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c8a898b868c6001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c89190613d75565b6040805180820182528c81526001602082015290516109f29695949392918f918f91908e90613eca565b60405180910390a350610a2460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050505050565b610a35612206565b610a3d610736565b8135600003610a78576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610400610a886060830183613cd6565b610a93915085613d3b565b1115610acb576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610aef86868686610ae136889003880188613f4c565b610aea87613fa4565b61258a565b610b1860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b6d576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b75610736565b6001600160a01b038216610b9c5760405163d92e233d60e01b815260040160405180910390fd5b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063c9028a3690610be190849060040161404c565b600060405180830381600087803b158015610bfb57600080fd5b505af1158015610b18573d6000803e3d6000fd5b610c17612206565b610c1f610736565b81600003610c59576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610400610c696060830183613cd6565b610c74915085613d3b565b1115610cac576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610aef8686868660405180604001604052808881526020016001151581525086610aea90613fa4565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d22576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d2a610736565b6001600160a01b038316610d515760405163d92e233d60e01b815260040160405180910390fd5b83600003610d8b576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dbe57506001600160a01b03831630145b15610df5576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610dff8484612771565b6000546040517f5bcfd6160000000000000000000000000000000000000000000000000000000081526001600160a01b0380861692635bcfd61692610e50928a9216908990889088906004016140bc565b600060405180830381600087803b158015610e6a57600080fd5b505af1158015610e7e573d6000803e3d6000fd5b505050505050505050565b610e91612206565b610e99610736565b8651600003610ebb5760405163d92e233d60e01b815260040160405180910390fd5b85600003610ef5576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8135600003610f30576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610400610f406060830183613cd6565b610f4b915085613d3b565b1115610f83576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fa18673735b14bb79463307aacbed86daf3322b1e6226ab612771565b60008054604051879233927f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c92610ff0928d926001600160a01b0316918d919081908d908d908d908d90614158565b60405180910390a3610a2460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461105b8161293f565b6110658383612949565b50505050565b6001600160a01b03811633146110ad576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110b78282612a36565b505050565b6110c4612206565b6110cc610736565b85516000036110ee5760405163d92e233d60e01b815260040160405180910390fd5b84600003611128576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006111386060830183613cd6565b611143915084613d3b565b111561117b576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111998573735b14bb79463307aacbed86daf3322b1e6226ab612771565b60008054604080518082018252838152600160208201529051879333937f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c936111fc938d936001600160a01b03909316928d92909182918d918d91908d90613eca565b60405180910390a3610b1860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6112578161293f565b61125f612afa565b50565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156112ad5750825b905060008267ffffffffffffffff1660011480156112ca5750303b155b9050811580156112d8575080155b1561130f576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156113705784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038716158061138d57506001600160a01b038616155b156113ab5760405163d92e233d60e01b815260040160405180910390fd5b6113b3612b8a565b6113bb612b8a565b6113c3612b92565b6113cb612ba2565b6113d6600087612949565b506114017f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87612949565b50600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0389161790558315610a245784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050505050565b6114a6612bb2565b6114af82612c82565b6114b98282612c8d565b5050565b60006114c7612db1565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b6114f4612206565b6114fc610736565b865160000361151e5760405163d92e233d60e01b815260040160405180910390fd5b85600003611558576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8135600003611593576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006115a36060830183613cd6565b6115ae915085613d3b565b11156115e6576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006115f487878535612287565b90506000336001600160a01b03167f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c8a898b868c6001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611665573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116899190613d75565b8c8c8c8c6040516109f299989796959493929190614158565b6116aa612206565b6116b2610736565b83516000036116d45760405163d92e233d60e01b815260040160405180910390fd5b8260000361170e576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61040061171e6060830183613cd6565b90501115611758576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006117648484612e13565b90506000336001600160a01b03167f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c87868886896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f99190613d75565b60405180604001604052808c6001600160a01b031663091d27886040518163ffffffff1660e01b8152600401602060405180830381865afa158015611842573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118669190613d75565b81526001602090910152604051611884969594939291908c906141b0565b60405180910390a35061106560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6118e08161293f565b61125f612e81565b6118f0612206565b6118f8610736565b835160000361191a5760405163d92e233d60e01b815260040160405180910390fd5b82600003611954576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006119646060830183613cd6565b9050111561199e576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119bc8373735b14bb79463307aacbed86daf3322b1e6226ab612771565b60008054604080518082018252838152600160208201529051859333937f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c93611a1b938b936001600160a01b03909316928b9290918291908b906141b0565b60405180910390a361106560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611a99576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611aa1610736565b6001600160a01b0384161580611abe57506001600160a01b038216155b15611adc5760405163d92e233d60e01b815260040160405180910390fd5b82600003611b16576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821673735b14bb79463307aacbed86daf3322b1e6226ab1480611b4957506001600160a01b03821630145b15611b80576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152602482018590528516906347e7ef24906044016020604051808303816000875af1158015611be8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0c9190614232565b611c42576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063c9028a3690611c8790849060040161404c565b600060405180830381600087803b158015611ca157600080fd5b505af1158015611cb5573d6000803e3d6000fd5b5050505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611d0c576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d14610736565b6001600160a01b0385161580611d3157506001600160a01b038316155b15611d4f5760405163d92e233d60e01b815260040160405180910390fd5b6040517f5bcfd6160000000000000000000000000000000000000000000000000000000081526001600160a01b03841690635bcfd61690611d9c90899089908990889088906004016140bc565b600060405180830381600087803b158015611db657600080fd5b505af1158015611dca573d6000803e3d6000fd5b50505050505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611e23576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e2b610736565b6001600160a01b0385161580611e4857506001600160a01b038316155b15611e665760405163d92e233d60e01b815260040160405180910390fd5b83600003611ea0576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480611ed357506001600160a01b03831630145b15611f0a576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015611f72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f969190614232565b611d4f576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546120068161293f565b6110658383612a36565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461205d576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612065610736565b6001600160a01b038316158061208257506001600160a01b038116155b156120a05760405163d92e233d60e01b815260040160405180910390fd5b816000036120da576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab148061210d57506001600160a01b03811630145b15612144576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af11580156121ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d09190614232565b6110b7576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01612281576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6000806000846001600160a01b031663fc5fecd5856040518263ffffffff1660e01b81526004016122ba91815260200190565b6040805180830381865afa1580156122d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122fa919061424f565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561237f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a39190614232565b6123d9576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018790526001600160a01b038616906323b872dd906064016020604051808303816000875af1158015612445573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124699190614232565b61249f576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018790526001600160a01b038616906342966c68906024016020604051808303816000875af11580156124ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125239190614232565b612559576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b85516000036125ac5760405163d92e233d60e01b815260040160405180910390fd5b81516040517ffc5fecd5000000000000000000000000000000000000000000000000000000008152600481019190915260009081906001600160a01b0388169063fc5fecd5906024016040805180830381865afa158015612611573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612635919061424f565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af11580156126ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126de9190614232565b612714576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b866001600160a01b0316336001600160a01b03167f306ee13f48319a123b222c69908e44dcf91abffc20cacc502e3cf5a4ff23e0e48a8989898960405161275f95949392919061427d565b60405180910390a35050505050505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af11580156127e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128059190614232565b61283b576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561289a57600080fd5b505af11580156128ae573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d80600081146128ff576040519150601f19603f3d011682016040523d82523d6000602084013e612904565b606091505b50509050806110b7576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61125f8133612efa565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16612a2c576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556129e23390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610827565b6000915050610827565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615612a2c576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610827565b612b02612f87565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b610792612fe2565b612b9a612fe2565b610792613049565b612baa612fe2565b61079261309a565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480612c4b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612c3f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610792576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006114b98161293f565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612d05575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612d0291810190613d75565b60015b612d4b576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114612da7576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401612d42565b6110b783836130a2565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610792576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061255d8383846001600160a01b031663091d27886040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e7c9190613d75565b612287565b612e89610736565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833612b6c565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166114b9576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401612d42565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610792576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610792576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613051612fe2565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b612564612fe2565b6130ab826130f8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156130f0576110b782826131a0565b6114b9613216565b806001600160a01b03163b600003613147576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401612d42565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516131bd9190614320565b600060405180830381855af49150503d80600081146131f8576040519150601f19603f3d011682016040523d82523d6000602084013e6131fd565b606091505b509150915061320d85838361324e565b95945050505050565b3415610792576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060826132635761325e826132c3565b61255d565b815115801561327a57506001600160a01b0384163b155b156132bc576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401612d42565b508061255d565b8051156132d35780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561331757600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461255d57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261338757600080fd5b813567ffffffffffffffff8111156133a1576133a1613347565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff811182821017156133ee576133ee613347565b60405281815283820160200185101561340657600080fd5b816020850160208301376000918101602001919091529392505050565b6001600160a01b038116811461125f57600080fd5b60008083601f84011261344a57600080fd5b50813567ffffffffffffffff81111561346257600080fd5b60208301915083602082850101111561347a57600080fd5b9250929050565b600060a0828403121561349357600080fd5b50919050565b600080600080600080600060c0888a0312156134b457600080fd5b873567ffffffffffffffff8111156134cb57600080fd5b6134d78a828b01613376565b9750506020880135955060408801356134ef81613423565b9450606088013567ffffffffffffffff81111561350b57600080fd5b6135178a828b01613438565b9095509350506080880135915060a088013567ffffffffffffffff81111561353e57600080fd5b61354a8a828b01613481565b91505092959891949750929550565b60006040828403121561349357600080fd5b60008060008060008060c0878903121561358457600080fd5b863567ffffffffffffffff81111561359b57600080fd5b6135a789828a01613376565b96505060208701356135b881613423565b9450604087013567ffffffffffffffff8111156135d457600080fd5b6135e089828a01613438565b90955093506135f490508860608901613559565b915060a087013567ffffffffffffffff81111561361057600080fd5b61361c89828a01613481565b9150509295509295509295565b60006080828403121561349357600080fd5b6000806040838503121561364e57600080fd5b823561365981613423565b9150602083013567ffffffffffffffff81111561367557600080fd5b61368185828601613629565b9150509250929050565b60008060008060008060a087890312156136a457600080fd5b863567ffffffffffffffff8111156136bb57600080fd5b6136c789828a01613376565b96505060208701356136d881613423565b9450604087013567ffffffffffffffff8111156136f457600080fd5b61370089828a01613438565b90955093505060608701359150608087013567ffffffffffffffff81111561361057600080fd5b60006060828403121561349357600080fd5b60008060008060006080868803121561375157600080fd5b853567ffffffffffffffff81111561376857600080fd5b61377488828901613727565b95505060208601359350604086013561378c81613423565b9250606086013567ffffffffffffffff8111156137a857600080fd5b6137b488828901613438565b969995985093965092949392505050565b6000602082840312156137d757600080fd5b5035919050565b600080600080600080600060e0888a0312156137f957600080fd5b873567ffffffffffffffff81111561381057600080fd5b61381c8a828b01613376565b9750506020880135955060408801359450606088013567ffffffffffffffff81111561384757600080fd5b6138538a828b01613438565b909550935061386790508960808a01613559565b915060c088013567ffffffffffffffff81111561353e57600080fd5b6000806040838503121561389657600080fd5b8235915060208301356138a881613423565b809150509250929050565b60008060008060008060a087890312156138cc57600080fd5b863567ffffffffffffffff8111156138e357600080fd5b6138ef89828a01613376565b9650506020870135945060408701359350606087013567ffffffffffffffff81111561391a57600080fd5b61392689828a01613438565b909450925050608087013567ffffffffffffffff81111561361057600080fd5b6000806040838503121561395957600080fd5b823561396481613423565b915060208301356138a881613423565b6000806040838503121561398757600080fd5b823561399281613423565b9150602083013567ffffffffffffffff8111156139ae57600080fd5b61368185828601613376565b600080600080600080600060e0888a0312156139d557600080fd5b873567ffffffffffffffff8111156139ec57600080fd5b6139f88a828b01613376565b975050602088013595506040880135613a1081613423565b9450606088013567ffffffffffffffff81111561384757600080fd5b60008060008060808587031215613a4257600080fd5b843567ffffffffffffffff811115613a5957600080fd5b613a6587828801613376565b945050602085013592506040850135613a7d81613423565b9150606085013567ffffffffffffffff811115613a9957600080fd5b613aa587828801613481565b91505092959194509250565b60008060008060808587031215613ac757600080fd5b843567ffffffffffffffff811115613ade57600080fd5b613aea87828801613376565b9450506020850135925060408501359150606085013567ffffffffffffffff811115613a9957600080fd5b60008060008060808587031215613b2b57600080fd5b8435613b3681613423565b9350602085013592506040850135613b4d81613423565b9150606085013567ffffffffffffffff811115613b6957600080fd5b613aa587828801613629565b60005b83811015613b90578181015183820152602001613b78565b50506000910152565b60008151808452613bb1816020860160208601613b75565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061255d6020830184613b99565b60008060008060008060a08789031215613c0f57600080fd5b863567ffffffffffffffff811115613c2657600080fd5b613c3289828a01613727565b9650506020870135613c4381613423565b9450604087013593506060870135613c5a81613423565b9250608087013567ffffffffffffffff811115613c7657600080fd5b613c8289828a01613438565b979a9699509497509295939492505050565b600080600060608486031215613ca957600080fd5b8335613cb481613423565b9250602084013591506040840135613ccb81613423565b809150509250925092565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613d0b57600080fd5b83018035915067ffffffffffffffff821115613d2657600080fd5b60200191503681900382131561347a57600080fd5b80820180821115610827577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060208284031215613d8757600080fd5b5051919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b801515811461125f57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613e1a57600080fd5b830160208101925035905067ffffffffffffffff811115613e3a57600080fd5b80360382131561347a57600080fd5b60008135613e5681613423565b6001600160a01b031683526020820135613e6f81613dd7565b151560208401526040820135613e8481613423565b6001600160a01b03166040840152613e9f6060830183613de5565b60a06060860152613eb460a086018284613d8e565b6080948501359590940194909452509092915050565b61012081526000613edf61012083018c613b99565b6001600160a01b038b16602084015289604084015288606084015287608084015282810360a0840152613f13818789613d8e565b855160c08501526020860151151560e085015290505b828103610100840152613f3c8185613e49565b9c9b505050505050505050505050565b60006040828403128015613f5f57600080fd5b506040805190810167ffffffffffffffff81118282101715613f8357613f83613347565b604052823581526020830135613f9881613dd7565b60208201529392505050565b600060a08236031215613fb657600080fd5b60405160a0810167ffffffffffffffff81118282101715613fd957613fd9613347565b6040528235613fe781613423565b81526020830135613ff781613dd7565b6020820152604083013561400a81613423565b6040820152606083013567ffffffffffffffff81111561402957600080fd5b61403536828601613376565b606083015250608092830135928101929092525090565b602081526000823561405d81613423565b6001600160a01b038116602084015250602083013561407b81613423565b6001600160a01b038116604084015250600060408401359050806060840152506140a86060840184613de5565b60808085015261320d60a085018284613d8e565b6080815260006140cc8788613de5565b606060808501526140e160e085018284613d8e565b91505060208801356140f281613423565b6001600160a01b0390811660a085015260408981013560c086015290881660208501528301869052828103606084015261412d818587613d8e565b98975050505050505050565b80358252602081013561414b81613dd7565b8015156020840152505050565b6101208152600061416d61012083018c613b99565b6001600160a01b038b16602084015289604084015288606084015287608084015282810360a08401526141a1818789613d8e565b9050613f2960c0840186614139565b610120815260006141c561012083018a613b99565b6001600160a01b03891660208401528760408401528660608401528560808401528281038060a08501526000825261420c60c0850187805182526020908101511515910152565b60208101610100850152506142246020820185613e49565b9a9950505050505050505050565b60006020828403121561424457600080fd5b815161255d81613dd7565b6000806040838503121561426257600080fd5b825161426d81613423565b6020939093015192949293505050565b60a08152600061429060a0830188613b99565b82810360208401526142a3818789613d8e565b85516040850152602086015115156060850152905082810360808401526001600160a01b0384511681526020840151151560208201526001600160a01b036040850151166040820152606084015160a0606083015261430560a0830182613b99565b90506080850151608083015280925050509695505050505050565b60008251614332818460208701613b75565b919091019291505056fea2646970667358221220f6c4ddc063827b005aa616e597205b7345e1dfac4c8e2fc886f60a6ec726f51764736f6c634300081a0033"; + "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516143726100fd60003960008181612bbd01528181612be60152612dbc01526143726000f3fe6080604052600436106101e75760003560e01c806352d1902d116101025780639d4ba46511610095578063c39aca3711610064578063c39aca37146106a2578063d547741f146106c2578063e63ab1e9146106e2578063f45346dc1461071657600080fd5b80639d4ba465146105f7578063a217fddf14610617578063ad3cb1cc1461062c578063bcf7f32b1461068257600080fd5b80638456cb59116100d15780638456cb591461054757806391d148541461055c57806397a1cef1146105c157806397d340f5146105e157600080fd5b806352d1902d146104bb5780635c975abb146104d05780637b15118b146105075780637c0dcb5f1461052757600080fd5b80632722feee1161017a5780633b283933116101495780633b283933146104535780633f4ba83a14610473578063485cc955146104885780634f1ef286146104a857600080fd5b80632722feee146103cb5780632810ae63146103f35780632f2ff15d1461041357806336568abe1461043357600080fd5b80631cb5ea75116101b65780631cb5ea75146102f657806321501a951461031657806321e093b114610336578063248a9ca31461036e57600080fd5b806301ffc9a714610261578063048ae42c1461029657806306cb8983146102b6578063184b0793146102d657600080fd5b3661025c576101f4610736565b6000546001600160a01b0316331480159061022357503373735b14bb79463307aacbed86daf3322b1e6226ab14155b1561025a576040517fb3af013700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b34801561026d57600080fd5b5061028161027c366004613305565b610794565b60405190151581526020015b60405180910390f35b3480156102a257600080fd5b5061025a6102b1366004613499565b61082d565b3480156102c257600080fd5b5061025a6102d136600461356b565b610a2d565b3480156102e257600080fd5b5061025a6102f136600461363b565b610b20565b34801561030257600080fd5b5061025a61031136600461368b565b610c0f565b34801561032257600080fd5b5061025a610331366004613739565b610cd5565b34801561034257600080fd5b50600054610356906001600160a01b031681565b6040516001600160a01b03909116815260200161028d565b34801561037a57600080fd5b506103bd6103893660046137c5565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b60405190815260200161028d565b3480156103d757600080fd5b5061035673735b14bb79463307aacbed86daf3322b1e6226ab81565b3480156103ff57600080fd5b5061025a61040e3660046137de565b610e89565b34801561041f57600080fd5b5061025a61042e366004613883565b611021565b34801561043f57600080fd5b5061025a61044e366004613883565b61106b565b34801561045f57600080fd5b5061025a61046e3660046138b3565b6110bc565b34801561047f57600080fd5b5061025a61122d565b34801561049457600080fd5b5061025a6104a3366004613946565b611262565b61025a6104b6366004613974565b61149e565b3480156104c757600080fd5b506103bd6114bd565b3480156104dc57600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610281565b34801561051357600080fd5b5061025a6105223660046139ba565b6114ec565b34801561053357600080fd5b5061025a610542366004613a2c565b6116a2565b34801561055357600080fd5b5061025a6118b6565b34801561056857600080fd5b50610281610577366004613883565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156105cd57600080fd5b5061025a6105dc366004613ab1565b6118e8565b3480156105ed57600080fd5b506103bd61040081565b34801561060357600080fd5b5061025a610612366004613b15565b611a4c565b34801561062357600080fd5b506103bd600081565b34801561063857600080fd5b506106756040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161028d9190613be3565b34801561068e57600080fd5b5061025a61069d366004613bf6565b611cbf565b3480156106ae57600080fd5b5061025a6106bd366004613bf6565b611dd6565b3480156106ce57600080fd5b5061025a6106dd366004613883565b611fcc565b3480156106ee57600080fd5b506103bd7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b34801561072257600080fd5b5061025a610731366004613c94565b612010565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615610792576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061082757507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610835612206565b61083d610736565b865160000361085f5760405163d92e233d60e01b815260040160405180910390fd5b85600003610899576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816000036108d3576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006108e36060830183613cd6565b6108ee915085613d3b565b1115610926576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610933878785612287565b90506000336001600160a01b03167f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c8a898b868c6001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c89190613d75565b6040805180820182528c81526001602082015290516109f29695949392918f918f91908e90613eca565b60405180910390a350610a2460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050505050565b610a35612206565b610a3d610736565b8135600003610a78576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610400610a886060830183613cd6565b610a93915085613d3b565b1115610acb576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610aef86868686610ae136889003880188613f4c565b610aea87613fa4565b61258a565b610b1860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b6d576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b75610736565b6001600160a01b038216610b9c5760405163d92e233d60e01b815260040160405180910390fd5b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063c9028a3690610be190849060040161404c565b600060405180830381600087803b158015610bfb57600080fd5b505af1158015610b18573d6000803e3d6000fd5b610c17612206565b610c1f610736565b81600003610c59576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610400610c696060830183613cd6565b610c74915085613d3b565b1115610cac576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610aef8686868660405180604001604052808881526020016001151581525086610aea90613fa4565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d22576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d2a610736565b6001600160a01b038316610d515760405163d92e233d60e01b815260040160405180910390fd5b83600003610d8b576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dbe57506001600160a01b03831630145b15610df5576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610dff8484612771565b6000546040517f5bcfd6160000000000000000000000000000000000000000000000000000000081526001600160a01b0380861692635bcfd61692610e50928a9216908990889088906004016140bc565b600060405180830381600087803b158015610e6a57600080fd5b505af1158015610e7e573d6000803e3d6000fd5b505050505050505050565b610e91612206565b610e99610736565b8651600003610ebb5760405163d92e233d60e01b815260040160405180910390fd5b85600003610ef5576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8135600003610f30576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610400610f406060830183613cd6565b610f4b915085613d3b565b1115610f83576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fa18673735b14bb79463307aacbed86daf3322b1e6226ab612771565b60008054604051879233927f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c92610ff0928d926001600160a01b0316918d919081908d908d908d908d90614158565b60405180910390a3610a2460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461105b8161293f565b6110658383612949565b50505050565b6001600160a01b03811633146110ad576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110b78282612a36565b505050565b6110c4612206565b6110cc610736565b85516000036110ee5760405163d92e233d60e01b815260040160405180910390fd5b84600003611128576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006111386060830183613cd6565b611143915084613d3b565b111561117b576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111998573735b14bb79463307aacbed86daf3322b1e6226ab612771565b60008054604080518082018252838152600160208201529051879333937f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c936111fc938d936001600160a01b03909316928d92909182918d918d91908d90613eca565b60405180910390a3610b1860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6112578161293f565b61125f612afa565b50565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156112ad5750825b905060008267ffffffffffffffff1660011480156112ca5750303b155b9050811580156112d8575080155b1561130f576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156113705784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038716158061138d57506001600160a01b038616155b156113ab5760405163d92e233d60e01b815260040160405180910390fd5b6113b3612b8a565b6113bb612b8a565b6113c3612b92565b6113cb612ba2565b6113d6600087612949565b506114017f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87612949565b50600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0389161790558315610a245784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050505050565b6114a6612bb2565b6114af82612c82565b6114b98282612c8d565b5050565b60006114c7612db1565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b6114f4612206565b6114fc610736565b865160000361151e5760405163d92e233d60e01b815260040160405180910390fd5b85600003611558576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8135600003611593576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006115a36060830183613cd6565b6115ae915085613d3b565b11156115e6576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006115f487878535612287565b90506000336001600160a01b03167f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c8a898b868c6001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611665573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116899190613d75565b8c8c8c8c6040516109f299989796959493929190614158565b6116aa612206565b6116b2610736565b83516000036116d45760405163d92e233d60e01b815260040160405180910390fd5b8260000361170e576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61040061171e6060830183613cd6565b90501115611758576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006117648484612e13565b90506000336001600160a01b03167f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c87868886896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f99190613d75565b60405180604001604052808c6001600160a01b031663091d27886040518163ffffffff1660e01b8152600401602060405180830381865afa158015611842573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118669190613d75565b81526001602090910152604051611884969594939291908c906141b0565b60405180910390a35061106560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6118e08161293f565b61125f612e81565b6118f0612206565b6118f8610736565b835160000361191a5760405163d92e233d60e01b815260040160405180910390fd5b82600003611954576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006119646060830183613cd6565b9050111561199e576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119bc8373735b14bb79463307aacbed86daf3322b1e6226ab612771565b60008054604080518082018252838152600160208201529051859333937f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c93611a1b938b936001600160a01b03909316928b9290918291908b906141b0565b60405180910390a361106560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611a99576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611aa1610736565b6001600160a01b0384161580611abe57506001600160a01b038216155b15611adc5760405163d92e233d60e01b815260040160405180910390fd5b82600003611b16576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821673735b14bb79463307aacbed86daf3322b1e6226ab1480611b4957506001600160a01b03821630145b15611b80576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152602482018590528516906347e7ef24906044016020604051808303816000875af1158015611be8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0c9190614232565b611c42576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063c9028a3690611c8790849060040161404c565b600060405180830381600087803b158015611ca157600080fd5b505af1158015611cb5573d6000803e3d6000fd5b5050505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611d0c576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d14610736565b6001600160a01b0385161580611d3157506001600160a01b038316155b15611d4f5760405163d92e233d60e01b815260040160405180910390fd5b6040517f5bcfd6160000000000000000000000000000000000000000000000000000000081526001600160a01b03841690635bcfd61690611d9c90899089908990889088906004016140bc565b600060405180830381600087803b158015611db657600080fd5b505af1158015611dca573d6000803e3d6000fd5b50505050505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611e23576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e2b610736565b6001600160a01b0385161580611e4857506001600160a01b038316155b15611e665760405163d92e233d60e01b815260040160405180910390fd5b83600003611ea0576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480611ed357506001600160a01b03831630145b15611f0a576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015611f72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f969190614232565b611d4f576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546120068161293f565b6110658383612a36565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461205d576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612065610736565b6001600160a01b038316158061208257506001600160a01b038116155b156120a05760405163d92e233d60e01b815260040160405180910390fd5b816000036120da576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab148061210d57506001600160a01b03811630145b15612144576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af11580156121ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d09190614232565b6110b7576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01612281576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6000806000846001600160a01b031663fc5fecd5856040518263ffffffff1660e01b81526004016122ba91815260200190565b6040805180830381865afa1580156122d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122fa919061424f565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561237f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a39190614232565b6123d9576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018790526001600160a01b038616906323b872dd906064016020604051808303816000875af1158015612445573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124699190614232565b61249f576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018790526001600160a01b038616906342966c68906024016020604051808303816000875af11580156124ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125239190614232565b612559576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b85516000036125ac5760405163d92e233d60e01b815260040160405180910390fd5b81516040517ffc5fecd5000000000000000000000000000000000000000000000000000000008152600481019190915260009081906001600160a01b0388169063fc5fecd5906024016040805180830381865afa158015612611573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612635919061424f565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af11580156126ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126de9190614232565b612714576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b866001600160a01b0316336001600160a01b03167f306ee13f48319a123b222c69908e44dcf91abffc20cacc502e3cf5a4ff23e0e48a8989898960405161275f95949392919061427d565b60405180910390a35050505050505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af11580156127e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128059190614232565b61283b576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561289a57600080fd5b505af11580156128ae573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d80600081146128ff576040519150601f19603f3d011682016040523d82523d6000602084013e612904565b606091505b50509050806110b7576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61125f8133612efa565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16612a2c576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556129e23390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610827565b6000915050610827565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615612a2c576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610827565b612b02612f87565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b610792612fe2565b612b9a612fe2565b610792613049565b612baa612fe2565b61079261309a565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480612c4b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612c3f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610792576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006114b98161293f565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612d05575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612d0291810190613d75565b60015b612d4b576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114612da7576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401612d42565b6110b783836130a2565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610792576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061255d8383846001600160a01b031663091d27886040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e7c9190613d75565b612287565b612e89610736565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833612b6c565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166114b9576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401612d42565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610792576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610792576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613051612fe2565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b612564612fe2565b6130ab826130f8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156130f0576110b782826131a0565b6114b9613216565b806001600160a01b03163b600003613147576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401612d42565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516131bd9190614320565b600060405180830381855af49150503d80600081146131f8576040519150601f19603f3d011682016040523d82523d6000602084013e6131fd565b606091505b509150915061320d85838361324e565b95945050505050565b3415610792576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060826132635761325e826132c3565b61255d565b815115801561327a57506001600160a01b0384163b155b156132bc576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401612d42565b508061255d565b8051156132d35780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561331757600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461255d57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261338757600080fd5b813567ffffffffffffffff8111156133a1576133a1613347565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff811182821017156133ee576133ee613347565b60405281815283820160200185101561340657600080fd5b816020850160208301376000918101602001919091529392505050565b6001600160a01b038116811461125f57600080fd5b60008083601f84011261344a57600080fd5b50813567ffffffffffffffff81111561346257600080fd5b60208301915083602082850101111561347a57600080fd5b9250929050565b600060a0828403121561349357600080fd5b50919050565b600080600080600080600060c0888a0312156134b457600080fd5b873567ffffffffffffffff8111156134cb57600080fd5b6134d78a828b01613376565b9750506020880135955060408801356134ef81613423565b9450606088013567ffffffffffffffff81111561350b57600080fd5b6135178a828b01613438565b9095509350506080880135915060a088013567ffffffffffffffff81111561353e57600080fd5b61354a8a828b01613481565b91505092959891949750929550565b60006040828403121561349357600080fd5b60008060008060008060c0878903121561358457600080fd5b863567ffffffffffffffff81111561359b57600080fd5b6135a789828a01613376565b96505060208701356135b881613423565b9450604087013567ffffffffffffffff8111156135d457600080fd5b6135e089828a01613438565b90955093506135f490508860608901613559565b915060a087013567ffffffffffffffff81111561361057600080fd5b61361c89828a01613481565b9150509295509295509295565b60006080828403121561349357600080fd5b6000806040838503121561364e57600080fd5b823561365981613423565b9150602083013567ffffffffffffffff81111561367557600080fd5b61368185828601613629565b9150509250929050565b60008060008060008060a087890312156136a457600080fd5b863567ffffffffffffffff8111156136bb57600080fd5b6136c789828a01613376565b96505060208701356136d881613423565b9450604087013567ffffffffffffffff8111156136f457600080fd5b61370089828a01613438565b90955093505060608701359150608087013567ffffffffffffffff81111561361057600080fd5b60006060828403121561349357600080fd5b60008060008060006080868803121561375157600080fd5b853567ffffffffffffffff81111561376857600080fd5b61377488828901613727565b95505060208601359350604086013561378c81613423565b9250606086013567ffffffffffffffff8111156137a857600080fd5b6137b488828901613438565b969995985093965092949392505050565b6000602082840312156137d757600080fd5b5035919050565b600080600080600080600060e0888a0312156137f957600080fd5b873567ffffffffffffffff81111561381057600080fd5b61381c8a828b01613376565b9750506020880135955060408801359450606088013567ffffffffffffffff81111561384757600080fd5b6138538a828b01613438565b909550935061386790508960808a01613559565b915060c088013567ffffffffffffffff81111561353e57600080fd5b6000806040838503121561389657600080fd5b8235915060208301356138a881613423565b809150509250929050565b60008060008060008060a087890312156138cc57600080fd5b863567ffffffffffffffff8111156138e357600080fd5b6138ef89828a01613376565b9650506020870135945060408701359350606087013567ffffffffffffffff81111561391a57600080fd5b61392689828a01613438565b909450925050608087013567ffffffffffffffff81111561361057600080fd5b6000806040838503121561395957600080fd5b823561396481613423565b915060208301356138a881613423565b6000806040838503121561398757600080fd5b823561399281613423565b9150602083013567ffffffffffffffff8111156139ae57600080fd5b61368185828601613376565b600080600080600080600060e0888a0312156139d557600080fd5b873567ffffffffffffffff8111156139ec57600080fd5b6139f88a828b01613376565b975050602088013595506040880135613a1081613423565b9450606088013567ffffffffffffffff81111561384757600080fd5b60008060008060808587031215613a4257600080fd5b843567ffffffffffffffff811115613a5957600080fd5b613a6587828801613376565b945050602085013592506040850135613a7d81613423565b9150606085013567ffffffffffffffff811115613a9957600080fd5b613aa587828801613481565b91505092959194509250565b60008060008060808587031215613ac757600080fd5b843567ffffffffffffffff811115613ade57600080fd5b613aea87828801613376565b9450506020850135925060408501359150606085013567ffffffffffffffff811115613a9957600080fd5b60008060008060808587031215613b2b57600080fd5b8435613b3681613423565b9350602085013592506040850135613b4d81613423565b9150606085013567ffffffffffffffff811115613b6957600080fd5b613aa587828801613629565b60005b83811015613b90578181015183820152602001613b78565b50506000910152565b60008151808452613bb1816020860160208601613b75565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061255d6020830184613b99565b60008060008060008060a08789031215613c0f57600080fd5b863567ffffffffffffffff811115613c2657600080fd5b613c3289828a01613727565b9650506020870135613c4381613423565b9450604087013593506060870135613c5a81613423565b9250608087013567ffffffffffffffff811115613c7657600080fd5b613c8289828a01613438565b979a9699509497509295939492505050565b600080600060608486031215613ca957600080fd5b8335613cb481613423565b9250602084013591506040840135613ccb81613423565b809150509250925092565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613d0b57600080fd5b83018035915067ffffffffffffffff821115613d2657600080fd5b60200191503681900382131561347a57600080fd5b80820180821115610827577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060208284031215613d8757600080fd5b5051919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b801515811461125f57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613e1a57600080fd5b830160208101925035905067ffffffffffffffff811115613e3a57600080fd5b80360382131561347a57600080fd5b60008135613e5681613423565b6001600160a01b031683526020820135613e6f81613dd7565b151560208401526040820135613e8481613423565b6001600160a01b03166040840152613e9f6060830183613de5565b60a06060860152613eb460a086018284613d8e565b6080948501359590940194909452509092915050565b61012081526000613edf61012083018c613b99565b6001600160a01b038b16602084015289604084015288606084015287608084015282810360a0840152613f13818789613d8e565b855160c08501526020860151151560e085015290505b828103610100840152613f3c8185613e49565b9c9b505050505050505050505050565b60006040828403128015613f5f57600080fd5b506040805190810167ffffffffffffffff81118282101715613f8357613f83613347565b604052823581526020830135613f9881613dd7565b60208201529392505050565b600060a08236031215613fb657600080fd5b60405160a0810167ffffffffffffffff81118282101715613fd957613fd9613347565b6040528235613fe781613423565b81526020830135613ff781613dd7565b6020820152604083013561400a81613423565b6040820152606083013567ffffffffffffffff81111561402957600080fd5b61403536828601613376565b606083015250608092830135928101929092525090565b602081526000823561405d81613423565b6001600160a01b038116602084015250602083013561407b81613423565b6001600160a01b038116604084015250600060408401359050806060840152506140a86060840184613de5565b60808085015261320d60a085018284613d8e565b6080815260006140cc8788613de5565b606060808501526140e160e085018284613d8e565b91505060208801356140f281613423565b6001600160a01b0390811660a085015260408981013560c086015290881660208501528301869052828103606084015261412d818587613d8e565b98975050505050505050565b80358252602081013561414b81613dd7565b8015156020840152505050565b6101208152600061416d61012083018c613b99565b6001600160a01b038b16602084015289604084015288606084015287608084015282810360a08401526141a1818789613d8e565b9050613f2960c0840186614139565b610120815260006141c561012083018a613b99565b6001600160a01b03891660208401528760408401528660608401528560808401528281038060a08501526000825261420c60c0850187805182526020908101511515910152565b60208101610100850152506142246020820185613e49565b9a9950505050505050505050565b60006020828403121561424457600080fd5b815161255d81613dd7565b6000806040838503121561426257600080fd5b825161426d81613423565b6020939093015192949293505050565b60a08152600061429060a0830188613b99565b82810360208401526142a3818789613d8e565b85516040850152602086015115156060850152905082810360808401526001600160a01b0384511681526020840151151560208201526001600160a01b036040850151166040820152606084015160a0606083015261430560a0830182613b99565b90506080850151608083015280925050509695505050505050565b60008251614332818460208701613b75565b919091019291505056fea264697066735822122028dbbf2e883c128aa1386b54d8aadffb9136ad5807cb917aaf6b28ed2c099d8464736f6c634300081a0033"; type GatewayZEVMConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/Math__factory.ts b/v2/types/factories/Math__factory.ts index 9cf7645e3..ef9e57f32 100644 --- a/v2/types/factories/Math__factory.ts +++ b/v2/types/factories/Math__factory.ts @@ -20,7 +20,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206a7c7177badb1ffa5d746dcaecb2228630fd6d795c607724d5c34ddd7a04b68464736f6c634300081a0033"; + "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220963d6a471e72b9bb9993a7857cbf4ef7f6b2ae696bb4d38a8d43cbdf2744b5ab64736f6c634300081a0033"; type MathConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/MockERC20__factory.ts b/v2/types/factories/MockERC20__factory.ts index 11e39a937..ce5a6233a 100644 --- a/v2/types/factories/MockERC20__factory.ts +++ b/v2/types/factories/MockERC20__factory.ts @@ -335,7 +335,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6080604052348015600f57600080fd5b5061113e8061001f6000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b41146101d2578063a9059cbb146101da578063d505accf146101ed578063dd62ed3e1461020057600080fd5b80633644e5151461017457806370a082311461017c5780637ecebe00146101b257600080fd5b806318160ddd116100bd57806318160ddd1461013a57806323b872dd1461014c578063313ce5671461015f57600080fd5b806306fdde03146100e4578063095ea7b3146101025780631624f6c614610125575b600080fd5b6100ec610246565b6040516100f99190610b6b565b60405180910390f35b610115610110366004610be2565b6102d8565b60405190151581526020016100f9565b610138610133366004610cdc565b610352565b005b6003545b6040519081526020016100f9565b61011561015a366004610d55565b610451565b60025460405160ff90911681526020016100f9565b61013e6105c5565b61013e61018a366004610d92565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b61013e6101c0366004610d92565b60086020526000908152604090205481565b6100ec6105eb565b6101156101e8366004610be2565b6105fa565b6101386101fb366004610dad565b6106ab565b61013e61020e366004610e18565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b60606000805461025590610e4b565b80601f016020809104026020016040519081016040528092919081815260200182805461028190610e4b565b80156102ce5780601f106102a3576101008083540402835291602001916102ce565b820191906000526020600020905b8154815290600101906020018083116102b157829003601f168201915b5050505050905090565b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103409086815260200190565b60405180910390a35060015b92915050565b60095460ff16156103c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f414c52454144595f494e495449414c495a45440000000000000000000000000060448201526064015b60405180910390fd5b60006103d08482610eed565b5060016103dd8382610eed565b50600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff83161790556104136109b5565b60065561041e6109ce565b6007555050600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905550565b73ffffffffffffffffffffffffffffffffffffffff831660009081526005602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146104e5576104b38184610a71565b73ffffffffffffffffffffffffffffffffffffffff861660009081526005602090815260408083203384529091529020555b73ffffffffffffffffffffffffffffffffffffffff85166000908152600460205260409020546105159084610a71565b73ffffffffffffffffffffffffffffffffffffffff80871660009081526004602052604080822093909355908616815220546105519084610aee565b73ffffffffffffffffffffffffffffffffffffffff80861660008181526004602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906105b29087815260200190565b60405180910390a3506001949350505050565b60006006546105d26109b5565b146105e4576105df6109ce565b905090565b5060075490565b60606001805461025590610e4b565b336000908152600460205260408120546106149083610a71565b336000908152600460205260408082209290925573ffffffffffffffffffffffffffffffffffffffff85168152205461064d9083610aee565b73ffffffffffffffffffffffffffffffffffffffff84166000818152600460205260409081902092909255905133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103409086815260200190565b42841015610715576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064016103bb565b600060016107216105c5565b73ffffffffffffffffffffffffffffffffffffffff8a16600090815260086020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928d928d928d9290919061077c83611017565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810188905260e0016040516020818303038152906040528051906020012060405160200161081d9291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa15801561087b573d6000803e3d6000fd5b5050604051601f19015191505073ffffffffffffffffffffffffffffffffffffffff8116158015906108d857508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b61093e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e455200000000000000000000000000000000000060448201526064016103bb565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526005602090815260408083208b8516808552908352928190208a90555189815291928b16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35050505050505050565b6000610b67806109c763ffffffff8216565b9250505090565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051610a00919061104f565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6610a316109b5565b604080516020810195909552840192909252606083015260808201523060a082015260c00160405160208183030381529060405280519060200120905090565b600081831015610add576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f45524332303a207375627472616374696f6e20756e646572666c6f770000000060448201526064016103bb565b610ae782846110e2565b9392505050565b600080610afb83856110f5565b905083811015610ae7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45524332303a206164646974696f6e206f766572666c6f77000000000000000060448201526064016103bb565b4690565b602081526000825180602084015260005b81811015610b995760208186018101516040868401015201610b7c565b506000604082850101526040601f19601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bdd57600080fd5b919050565b60008060408385031215610bf557600080fd5b610bfe83610bb9565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112610c4c57600080fd5b813567ffffffffffffffff811115610c6657610c66610c0c565b604051601f19603f601f19601f8501160116810181811067ffffffffffffffff82111715610c9657610c96610c0c565b604052818152838201602001851015610cae57600080fd5b816020850160208301376000918101602001919091529392505050565b803560ff81168114610bdd57600080fd5b600080600060608486031215610cf157600080fd5b833567ffffffffffffffff811115610d0857600080fd5b610d1486828701610c3b565b935050602084013567ffffffffffffffff811115610d3157600080fd5b610d3d86828701610c3b565b925050610d4c60408501610ccb565b90509250925092565b600080600060608486031215610d6a57600080fd5b610d7384610bb9565b9250610d8160208501610bb9565b929592945050506040919091013590565b600060208284031215610da457600080fd5b610ae782610bb9565b600080600080600080600060e0888a031215610dc857600080fd5b610dd188610bb9565b9650610ddf60208901610bb9565b95506040880135945060608801359350610dfb60808901610ccb565b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610e2b57600080fd5b610e3483610bb9565b9150610e4260208401610bb9565b90509250929050565b600181811c90821680610e5f57607f821691505b602082108103610e98577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f821115610ee857806000526020600020601f840160051c81016020851015610ec55750805b601f840160051c820191505b81811015610ee55760008155600101610ed1565b50505b505050565b815167ffffffffffffffff811115610f0757610f07610c0c565b610f1b81610f158454610e4b565b84610e9e565b6020601f821160018114610f6d5760008315610f375750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455610ee5565b600084815260208120601f198516915b82811015610f9d5787850151825560209485019460019092019101610f7d565b5084821015610fd957868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361104857611048610fe8565b5060010190565b600080835461105d81610e4b565b60018216801561107457600181146110a7576110d7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831686528115158202860193506110d7565b86600052602060002060005b838110156110cf578154888201526001909101906020016110b3565b505081860193505b509195945050505050565b8181038181111561034c5761034c610fe8565b8082018082111561034c5761034c610fe856fea26469706673582212204e90d1d8dd8ec2d599f9af8961e20f75b3b78e39769fe3350770227fa7f4e7d264736f6c634300081a0033"; + "0x6080604052348015600f57600080fd5b5061113e8061001f6000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b41146101d2578063a9059cbb146101da578063d505accf146101ed578063dd62ed3e1461020057600080fd5b80633644e5151461017457806370a082311461017c5780637ecebe00146101b257600080fd5b806318160ddd116100bd57806318160ddd1461013a57806323b872dd1461014c578063313ce5671461015f57600080fd5b806306fdde03146100e4578063095ea7b3146101025780631624f6c614610125575b600080fd5b6100ec610246565b6040516100f99190610b6b565b60405180910390f35b610115610110366004610be2565b6102d8565b60405190151581526020016100f9565b610138610133366004610cdc565b610352565b005b6003545b6040519081526020016100f9565b61011561015a366004610d55565b610451565b60025460405160ff90911681526020016100f9565b61013e6105c5565b61013e61018a366004610d92565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b61013e6101c0366004610d92565b60086020526000908152604090205481565b6100ec6105eb565b6101156101e8366004610be2565b6105fa565b6101386101fb366004610dad565b6106ab565b61013e61020e366004610e18565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b60606000805461025590610e4b565b80601f016020809104026020016040519081016040528092919081815260200182805461028190610e4b565b80156102ce5780601f106102a3576101008083540402835291602001916102ce565b820191906000526020600020905b8154815290600101906020018083116102b157829003601f168201915b5050505050905090565b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103409086815260200190565b60405180910390a35060015b92915050565b60095460ff16156103c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f414c52454144595f494e495449414c495a45440000000000000000000000000060448201526064015b60405180910390fd5b60006103d08482610eed565b5060016103dd8382610eed565b50600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff83161790556104136109b5565b60065561041e6109ce565b6007555050600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905550565b73ffffffffffffffffffffffffffffffffffffffff831660009081526005602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146104e5576104b38184610a71565b73ffffffffffffffffffffffffffffffffffffffff861660009081526005602090815260408083203384529091529020555b73ffffffffffffffffffffffffffffffffffffffff85166000908152600460205260409020546105159084610a71565b73ffffffffffffffffffffffffffffffffffffffff80871660009081526004602052604080822093909355908616815220546105519084610aee565b73ffffffffffffffffffffffffffffffffffffffff80861660008181526004602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906105b29087815260200190565b60405180910390a3506001949350505050565b60006006546105d26109b5565b146105e4576105df6109ce565b905090565b5060075490565b60606001805461025590610e4b565b336000908152600460205260408120546106149083610a71565b336000908152600460205260408082209290925573ffffffffffffffffffffffffffffffffffffffff85168152205461064d9083610aee565b73ffffffffffffffffffffffffffffffffffffffff84166000818152600460205260409081902092909255905133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103409086815260200190565b42841015610715576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064016103bb565b600060016107216105c5565b73ffffffffffffffffffffffffffffffffffffffff8a16600090815260086020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928d928d928d9290919061077c83611017565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810188905260e0016040516020818303038152906040528051906020012060405160200161081d9291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa15801561087b573d6000803e3d6000fd5b5050604051601f19015191505073ffffffffffffffffffffffffffffffffffffffff8116158015906108d857508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b61093e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e455200000000000000000000000000000000000060448201526064016103bb565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526005602090815260408083208b8516808552908352928190208a90555189815291928b16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35050505050505050565b6000610b67806109c763ffffffff8216565b9250505090565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051610a00919061104f565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6610a316109b5565b604080516020810195909552840192909252606083015260808201523060a082015260c00160405160208183030381529060405280519060200120905090565b600081831015610add576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f45524332303a207375627472616374696f6e20756e646572666c6f770000000060448201526064016103bb565b610ae782846110e2565b9392505050565b600080610afb83856110f5565b905083811015610ae7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45524332303a206164646974696f6e206f766572666c6f77000000000000000060448201526064016103bb565b4690565b602081526000825180602084015260005b81811015610b995760208186018101516040868401015201610b7c565b506000604082850101526040601f19601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bdd57600080fd5b919050565b60008060408385031215610bf557600080fd5b610bfe83610bb9565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112610c4c57600080fd5b813567ffffffffffffffff811115610c6657610c66610c0c565b604051601f19603f601f19601f8501160116810181811067ffffffffffffffff82111715610c9657610c96610c0c565b604052818152838201602001851015610cae57600080fd5b816020850160208301376000918101602001919091529392505050565b803560ff81168114610bdd57600080fd5b600080600060608486031215610cf157600080fd5b833567ffffffffffffffff811115610d0857600080fd5b610d1486828701610c3b565b935050602084013567ffffffffffffffff811115610d3157600080fd5b610d3d86828701610c3b565b925050610d4c60408501610ccb565b90509250925092565b600080600060608486031215610d6a57600080fd5b610d7384610bb9565b9250610d8160208501610bb9565b929592945050506040919091013590565b600060208284031215610da457600080fd5b610ae782610bb9565b600080600080600080600060e0888a031215610dc857600080fd5b610dd188610bb9565b9650610ddf60208901610bb9565b95506040880135945060608801359350610dfb60808901610ccb565b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610e2b57600080fd5b610e3483610bb9565b9150610e4260208401610bb9565b90509250929050565b600181811c90821680610e5f57607f821691505b602082108103610e98577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f821115610ee857806000526020600020601f840160051c81016020851015610ec55750805b601f840160051c820191505b81811015610ee55760008155600101610ed1565b50505b505050565b815167ffffffffffffffff811115610f0757610f07610c0c565b610f1b81610f158454610e4b565b84610e9e565b6020601f821160018114610f6d5760008315610f375750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455610ee5565b600084815260208120601f198516915b82811015610f9d5787850151825560209485019460019092019101610f7d565b5084821015610fd957868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361104857611048610fe8565b5060010190565b600080835461105d81610e4b565b60018216801561107457600181146110a7576110d7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831686528115158202860193506110d7565b86600052602060002060005b838110156110cf578154888201526001909101906020016110b3565b505081860193505b509195945050505050565b8181038181111561034c5761034c610fe8565b8082018082111561034c5761034c610fe856fea2646970667358221220e60976f3145da4401c14d2c6022f76f2d06cfe9e76a0ae4c57e08d3cced9159964736f6c634300081a0033"; type MockERC20ConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/MockERC721__factory.ts b/v2/types/factories/MockERC721__factory.ts index b449dd9f1..c4dadf875 100644 --- a/v2/types/factories/MockERC721__factory.ts +++ b/v2/types/factories/MockERC721__factory.ts @@ -363,7 +363,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6080604052348015600f57600080fd5b506114b88061001f6000396000f3fe6080604052600436106100dd5760003560e01c80636352211e1161007f578063a22cb46511610059578063a22cb4651461025f578063b88d4fde1461027f578063c87b56dd14610292578063e985e9c5146102b357600080fd5b80636352211e146101fc57806370a082311461021c57806395d89b411461024a57600080fd5b8063095ea7b3116100bb578063095ea7b3146101a157806323b872dd146101b657806342842e0e146101c95780634cd88b76146101dc57600080fd5b806301ffc9a7146100e257806306fdde0314610117578063081812fc14610139575b600080fd5b3480156100ee57600080fd5b506101026100fd366004610e1f565b610309565b60405190151581526020015b60405180910390f35b34801561012357600080fd5b5061012c6103ee565b60405161010e9190610ea7565b34801561014557600080fd5b5061017c610154366004610eba565b60009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010e565b6101b46101af366004610ef7565b610480565b005b6101b46101c4366004610f21565b6105cf565b6101b46101d7366004610f21565b6108c4565b3480156101e857600080fd5b506101b46101f7366004611045565b610a18565b34801561020857600080fd5b5061017c610217366004610eba565b610ace565b34801561022857600080fd5b5061023c6102373660046110ae565b610b5f565b60405190815260200161010e565b34801561025657600080fd5b5061012c610c07565b34801561026b57600080fd5b506101b461027a3660046110c9565b610c16565b6101b461028d366004611105565b610cad565b34801561029e57600080fd5b5061012c6102ad366004610eba565b50606090565b3480156102bf57600080fd5b506101026102ce366004611181565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061039c57507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806103e857507f5b5e139f000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060600080546103fd906111b4565b80601f0160208091040260200160405190810160405280929190818152602001828054610429906111b4565b80156104765780601f1061044b57610100808354040283529160200191610476565b820191906000526020600020905b81548152906001019060200180831161045957829003601f168201915b5050505050905090565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16338114806104e3575073ffffffffffffffffffffffffffffffffffffffff8116600090815260056020908152604080832033845290915290205460ff165b61054e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064015b60405180910390fd5b60008281526004602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff84811691161461065f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f57524f4e475f46524f4d000000000000000000000000000000000000000000006044820152606401610545565b73ffffffffffffffffffffffffffffffffffffffff82166106dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152606401610545565b3373ffffffffffffffffffffffffffffffffffffffff84161480610730575073ffffffffffffffffffffffffffffffffffffffff8316600090815260056020908152604080832033845290915290205460ff165b8061075e575060008181526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1633145b6107c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610545565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081208054916107f583611236565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040812080549161082b8361126b565b90915550506000818152600260209081526040808320805473ffffffffffffffffffffffffffffffffffffffff8088167fffffffffffffffffffffffff000000000000000000000000000000000000000092831681179093556004909452828520805490911690559051849391928716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6108cf8383836105cf565b813b15806109ad57506040517f150b7a020000000000000000000000000000000000000000000000000000000080825233600483015273ffffffffffffffffffffffffffffffffffffffff858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610965573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098991906112a3565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610a13576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610545565b505050565b60065460ff1615610a85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f414c52454144595f494e495449414c495a4544000000000000000000000000006044820152606401610545565b6000610a91838261130e565b506001610a9e828261130e565b5050600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905550565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610b5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152606401610545565b919050565b600073ffffffffffffffffffffffffffffffffffffffff8216610bde576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152606401610545565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6060600180546103fd906111b4565b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610cb88484846105cf565b823b1580610d8257506040517f150b7a02000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290610d1b903390899088908890600401611427565b6020604051808303816000875af1158015610d3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5e91906112a3565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610de8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610545565b50505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610e1c57600080fd5b50565b600060208284031215610e3157600080fd5b8135610e3c81610dee565b9392505050565b6000815180845260005b81811015610e6957602081850181015186830182015201610e4d565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081526000610e3c6020830184610e43565b600060208284031215610ecc57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610b5a57600080fd5b60008060408385031215610f0a57600080fd5b610f1383610ed3565b946020939093013593505050565b600080600060608486031215610f3657600080fd5b610f3f84610ed3565b9250610f4d60208501610ed3565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff841115610fa857610fa8610f5e565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff82111715610ff557610ff5610f5e565b60405283815290508082840185101561100d57600080fd5b83836020830137600060208583010152509392505050565b600082601f83011261103657600080fd5b610e3c83833560208501610f8d565b6000806040838503121561105857600080fd5b823567ffffffffffffffff81111561106f57600080fd5b61107b85828601611025565b925050602083013567ffffffffffffffff81111561109857600080fd5b6110a485828601611025565b9150509250929050565b6000602082840312156110c057600080fd5b610e3c82610ed3565b600080604083850312156110dc57600080fd5b6110e583610ed3565b9150602083013580151581146110fa57600080fd5b809150509250929050565b6000806000806080858703121561111b57600080fd5b61112485610ed3565b935061113260208601610ed3565b925060408501359150606085013567ffffffffffffffff81111561115557600080fd5b8501601f8101871361116657600080fd5b61117587823560208401610f8d565b91505092959194509250565b6000806040838503121561119457600080fd5b61119d83610ed3565b91506111ab60208401610ed3565b90509250929050565b600181811c908216806111c857607f821691505b602082108103611201577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008161124557611245611207565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361129c5761129c611207565b5060010190565b6000602082840312156112b557600080fd5b8151610e3c81610dee565b601f821115610a1357806000526020600020601f840160051c810160208510156112e75750805b601f840160051c820191505b8181101561130757600081556001016112f3565b5050505050565b815167ffffffffffffffff81111561132857611328610f5e565b61133c8161133684546111b4565b846112c0565b6020601f82116001811461138e57600083156113585750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611307565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156113dc57878501518255602094850194600190920191016113bc565b508482101561141857868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b73ffffffffffffffffffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff841660208201528260408201526080606082015260006114786080830184610e43565b969550505050505056fea264697066735822122099247a35709cc46d2d666002ffd5468b85fdf95bb97ff065765f392a4b68498064736f6c634300081a0033"; + "0x6080604052348015600f57600080fd5b506114b88061001f6000396000f3fe6080604052600436106100dd5760003560e01c80636352211e1161007f578063a22cb46511610059578063a22cb4651461025f578063b88d4fde1461027f578063c87b56dd14610292578063e985e9c5146102b357600080fd5b80636352211e146101fc57806370a082311461021c57806395d89b411461024a57600080fd5b8063095ea7b3116100bb578063095ea7b3146101a157806323b872dd146101b657806342842e0e146101c95780634cd88b76146101dc57600080fd5b806301ffc9a7146100e257806306fdde0314610117578063081812fc14610139575b600080fd5b3480156100ee57600080fd5b506101026100fd366004610e1f565b610309565b60405190151581526020015b60405180910390f35b34801561012357600080fd5b5061012c6103ee565b60405161010e9190610ea7565b34801561014557600080fd5b5061017c610154366004610eba565b60009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010e565b6101b46101af366004610ef7565b610480565b005b6101b46101c4366004610f21565b6105cf565b6101b46101d7366004610f21565b6108c4565b3480156101e857600080fd5b506101b46101f7366004611045565b610a18565b34801561020857600080fd5b5061017c610217366004610eba565b610ace565b34801561022857600080fd5b5061023c6102373660046110ae565b610b5f565b60405190815260200161010e565b34801561025657600080fd5b5061012c610c07565b34801561026b57600080fd5b506101b461027a3660046110c9565b610c16565b6101b461028d366004611105565b610cad565b34801561029e57600080fd5b5061012c6102ad366004610eba565b50606090565b3480156102bf57600080fd5b506101026102ce366004611181565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061039c57507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806103e857507f5b5e139f000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060600080546103fd906111b4565b80601f0160208091040260200160405190810160405280929190818152602001828054610429906111b4565b80156104765780601f1061044b57610100808354040283529160200191610476565b820191906000526020600020905b81548152906001019060200180831161045957829003601f168201915b5050505050905090565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16338114806104e3575073ffffffffffffffffffffffffffffffffffffffff8116600090815260056020908152604080832033845290915290205460ff165b61054e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064015b60405180910390fd5b60008281526004602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff84811691161461065f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f57524f4e475f46524f4d000000000000000000000000000000000000000000006044820152606401610545565b73ffffffffffffffffffffffffffffffffffffffff82166106dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152606401610545565b3373ffffffffffffffffffffffffffffffffffffffff84161480610730575073ffffffffffffffffffffffffffffffffffffffff8316600090815260056020908152604080832033845290915290205460ff165b8061075e575060008181526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1633145b6107c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610545565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081208054916107f583611236565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040812080549161082b8361126b565b90915550506000818152600260209081526040808320805473ffffffffffffffffffffffffffffffffffffffff8088167fffffffffffffffffffffffff000000000000000000000000000000000000000092831681179093556004909452828520805490911690559051849391928716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6108cf8383836105cf565b813b15806109ad57506040517f150b7a020000000000000000000000000000000000000000000000000000000080825233600483015273ffffffffffffffffffffffffffffffffffffffff858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610965573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098991906112a3565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610a13576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610545565b505050565b60065460ff1615610a85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f414c52454144595f494e495449414c495a4544000000000000000000000000006044820152606401610545565b6000610a91838261130e565b506001610a9e828261130e565b5050600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905550565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610b5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152606401610545565b919050565b600073ffffffffffffffffffffffffffffffffffffffff8216610bde576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152606401610545565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6060600180546103fd906111b4565b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610cb88484846105cf565b823b1580610d8257506040517f150b7a02000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290610d1b903390899088908890600401611427565b6020604051808303816000875af1158015610d3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5e91906112a3565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610de8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610545565b50505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610e1c57600080fd5b50565b600060208284031215610e3157600080fd5b8135610e3c81610dee565b9392505050565b6000815180845260005b81811015610e6957602081850181015186830182015201610e4d565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081526000610e3c6020830184610e43565b600060208284031215610ecc57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610b5a57600080fd5b60008060408385031215610f0a57600080fd5b610f1383610ed3565b946020939093013593505050565b600080600060608486031215610f3657600080fd5b610f3f84610ed3565b9250610f4d60208501610ed3565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff841115610fa857610fa8610f5e565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff82111715610ff557610ff5610f5e565b60405283815290508082840185101561100d57600080fd5b83836020830137600060208583010152509392505050565b600082601f83011261103657600080fd5b610e3c83833560208501610f8d565b6000806040838503121561105857600080fd5b823567ffffffffffffffff81111561106f57600080fd5b61107b85828601611025565b925050602083013567ffffffffffffffff81111561109857600080fd5b6110a485828601611025565b9150509250929050565b6000602082840312156110c057600080fd5b610e3c82610ed3565b600080604083850312156110dc57600080fd5b6110e583610ed3565b9150602083013580151581146110fa57600080fd5b809150509250929050565b6000806000806080858703121561111b57600080fd5b61112485610ed3565b935061113260208601610ed3565b925060408501359150606085013567ffffffffffffffff81111561115557600080fd5b8501601f8101871361116657600080fd5b61117587823560208401610f8d565b91505092959194509250565b6000806040838503121561119457600080fd5b61119d83610ed3565b91506111ab60208401610ed3565b90509250929050565b600181811c908216806111c857607f821691505b602082108103611201577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008161124557611245611207565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361129c5761129c611207565b5060010190565b6000602082840312156112b557600080fd5b8151610e3c81610dee565b601f821115610a1357806000526020600020601f840160051c810160208510156112e75750805b601f840160051c820191505b8181101561130757600081556001016112f3565b5050505050565b815167ffffffffffffffff81111561132857611328610f5e565b61133c8161133684546111b4565b846112c0565b6020601f82116001811461138e57600083156113585750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611307565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156113dc57878501518255602094850194600190920191016113bc565b508482101561141857868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b73ffffffffffffffffffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff841660208201528260408201526080606082015260006114786080830184610e43565b969550505050505056fea2646970667358221220b6b495c9b63d00818c09eb284b3a3416b0da31aa8127423e4c3a355d7bba2eb164736f6c634300081a0033"; type MockERC721ConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/ProxyAdmin__factory.ts b/v2/types/factories/ProxyAdmin__factory.ts index 350b7421c..4ec42b6e0 100644 --- a/v2/types/factories/ProxyAdmin__factory.ts +++ b/v2/types/factories/ProxyAdmin__factory.ts @@ -141,7 +141,7 @@ const _abi = [ ] as const; const _bytecode = - "0x608060405234801561001057600080fd5b5060405161068438038061068483398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610587806100fd6000396000f3fe60806040526004361061005a5760003560e01c80639623609d116100435780639623609d146100b0578063ad3cb1cc146100c3578063f2fde38b1461011957600080fd5b8063715018a61461005f5780638da5cb5b14610076575b600080fd5b34801561006b57600080fd5b50610074610139565b005b34801561008257600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100746100be366004610364565b61014d565b3480156100cf57600080fd5b5061010c6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a791906104e3565b34801561012557600080fd5b506100746101343660046104fd565b6101e2565b61014161024b565b61014b600061029e565b565b61015561024b565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101ab908690869060040161051a565b6000604051808303818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b5050505050505050565b6101ea61024b565b73ffffffffffffffffffffffffffffffffffffffff811661023f576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6102488161029e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461014b576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610236565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461024857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561037957600080fd5b833561038481610313565b9250602084013561039481610313565b9150604084013567ffffffffffffffff8111156103b057600080fd5b8401601f810186136103c157600080fd5b803567ffffffffffffffff8111156103db576103db610335565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561044757610447610335565b60405281815282820160200188101561045f57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000815180845260005b818110156104a557602081850181015186830182015201610489565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104f6602083018461047f565b9392505050565b60006020828403121561050f57600080fd5b81356104f681610313565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610549604083018461047f565b94935050505056fea2646970667358221220cc8bbfd5df3920285befce3b27271fc70ad0dfb073ae2b9db9df8353b1cc6fff64736f6c634300081a0033"; + "0x608060405234801561001057600080fd5b5060405161068438038061068483398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610587806100fd6000396000f3fe60806040526004361061005a5760003560e01c80639623609d116100435780639623609d146100b0578063ad3cb1cc146100c3578063f2fde38b1461011957600080fd5b8063715018a61461005f5780638da5cb5b14610076575b600080fd5b34801561006b57600080fd5b50610074610139565b005b34801561008257600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100746100be366004610364565b61014d565b3480156100cf57600080fd5b5061010c6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a791906104e3565b34801561012557600080fd5b506100746101343660046104fd565b6101e2565b61014161024b565b61014b600061029e565b565b61015561024b565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101ab908690869060040161051a565b6000604051808303818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b5050505050505050565b6101ea61024b565b73ffffffffffffffffffffffffffffffffffffffff811661023f576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6102488161029e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461014b576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610236565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461024857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561037957600080fd5b833561038481610313565b9250602084013561039481610313565b9150604084013567ffffffffffffffff8111156103b057600080fd5b8401601f810186136103c157600080fd5b803567ffffffffffffffff8111156103db576103db610335565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561044757610447610335565b60405281815282820160200188101561045f57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000815180845260005b818110156104a557602081850181015186830182015201610489565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104f6602083018461047f565b9392505050565b60006020828403121561050f57600080fd5b81356104f681610313565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610549604083018461047f565b94935050505056fea2646970667358221220bfcb42a89a84dac0635a45bd4013ab76b4d822e9c9c757167dcf256da0cea66f64736f6c634300081a0033"; type ProxyAdminConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/ReceiverEVM__factory.ts b/v2/types/factories/ReceiverEVM__factory.ts index fd2f90a9a..f6f2722c0 100644 --- a/v2/types/factories/ReceiverEVM__factory.ts +++ b/v2/types/factories/ReceiverEVM__factory.ts @@ -25,7 +25,7 @@ const _abi = [ name: "onCall", inputs: [ { - name: "messageContext", + name: "", type: "tuple", internalType: "struct MessageContext", components: [ @@ -37,7 +37,7 @@ const _abi = [ ], }, { - name: "message", + name: "", type: "bytes", internalType: "bytes", }, @@ -395,7 +395,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6080604052348015600f57600080fd5b506001600055610ed6806100246000396000f3fe60806040526004361061006e5760003560e01c8063c51316911161004b578063c5131691146100d5578063c9028a36146100f5578063e04d4f9714610115578063f05b6abf1461012857005b8063357fc5a214610077578063676cc054146100975780636ed70169146100c057005b3661007557005b005b34801561008357600080fd5b50610075610092366004610724565b610148565b6100aa6100a5366004610760565b6101de565b6040516100b7919061085b565b60405180910390f35b3480156100cc57600080fd5b50610075610211565b3480156100e157600080fd5b506100756100f0366004610724565b610246565b34801561010157600080fd5b5061007561011036600461086e565b610321565b6100756101233660046109ce565b61035d565b34801561013457600080fd5b50610075610143366004610aba565b6103a1565b6101506103d6565b61017273ffffffffffffffffffffffffffffffffffffffff8316338386610419565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101d96001600055565b505050565b6040516060907f3658b46bab672c7672b69c2f0feda706eabdb7d2231421c96e9049b2db5e7eee90600090a19392505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b61024e6103d6565b600061025b600285610ba4565b905080600003610297576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102b973ffffffffffffffffffffffffffffffffffffffff8416338484610419565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101d96001600055565b7f689a5a5cb55e795ffe4cd8b419cd3bb0a3373974c54d25f64e734d7388b93e9b3382604051610352929190610c28565b60405180910390a150565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610394959493929190610d1a565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103949493929190610da4565b600260005403610412576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526104ae9085906104b4565b50505050565b60006104d673ffffffffffffffffffffffffffffffffffffffff84168361054f565b905080516000141580156104fb5750808060200190518101906104f99190610e67565b155b156101d9576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061055d83836000610564565b9392505050565b6060814710156105a2576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610546565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105cb9190610e84565b60006040518083038185875af1925050503d8060008114610608576040519150601f19603f3d011682016040523d82523d6000602084013e61060d565b606091505b509150915061061d868383610627565b9695505050505050565b60608261063c57610637826106b6565b61055d565b8151158015610660575073ffffffffffffffffffffffffffffffffffffffff84163b155b156106af576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610546565b508061055d565b8051156106c65780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff8116811461071f57600080fd5b919050565b60008060006060848603121561073957600080fd5b83359250610749602085016106fb565b9150610757604085016106fb565b90509250925092565b6000806000838503604081121561077657600080fd5b602081121561078457600080fd5b50839250602084013567ffffffffffffffff8111156107a257600080fd5b8401601f810186136107b357600080fd5b803567ffffffffffffffff8111156107ca57600080fd5b8660208284010111156107dc57600080fd5b939660209190910195509293505050565b60005b838110156108085781810151838201526020016107f0565b50506000910152565b600081518084526108298160208601602086016107ed565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061055d6020830184610811565b60006020828403121561088057600080fd5b813567ffffffffffffffff81111561089757600080fd5b82016080818503121561055d57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561091f5761091f6108a9565b604052919050565b600082601f83011261093857600080fd5b813567ffffffffffffffff811115610952576109526108a9565b61098360207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016108d8565b81815284602083860101111561099857600080fd5b816020850160208301376000918101602001919091529392505050565b80151581146106f857600080fd5b803561071f816109b5565b6000806000606084860312156109e357600080fd5b833567ffffffffffffffff8111156109fa57600080fd5b610a0686828701610927565b935050602084013591506040840135610a1e816109b5565b809150509250925092565b600067ffffffffffffffff821115610a4357610a436108a9565b5060051b60200190565b600082601f830112610a5e57600080fd5b8135610a71610a6c82610a29565b6108d8565b8082825260208201915060208360051b860101925085831115610a9357600080fd5b602085015b83811015610ab0578035835260209283019201610a98565b5095945050505050565b600080600060608486031215610acf57600080fd5b833567ffffffffffffffff811115610ae657600080fd5b8401601f81018613610af757600080fd5b8035610b05610a6c82610a29565b8082825260208201915060208360051b850101925088831115610b2757600080fd5b602084015b83811015610b6957803567ffffffffffffffff811115610b4b57600080fd5b610b5a8b602083890101610927565b84525060209283019201610b2c565b509550505050602084013567ffffffffffffffff811115610b8957600080fd5b610b9586828701610a4d565b925050610757604085016109c3565b600082610bda577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015273ffffffffffffffffffffffffffffffffffffffff610c66836106fb565b16604082015273ffffffffffffffffffffffffffffffffffffffff610c8d602084016106fb565b166060820152600080604084013590508060808401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610cd957600080fd5b830160208101903567ffffffffffffffff811115610cf657600080fd5b803603821315610d0557600080fd5b608060a085015261061d60c085018284610bdf565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610d4f60a0830186610811565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610d9a578151865260209586019590910190600101610d7c565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610e37577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610e22858351610811565b94506020938401939190910190600101610de8565b505050508281036040840152610e4d8186610d68565b915050610e5e606083018415159052565b95945050505050565b600060208284031215610e7957600080fd5b815161055d816109b5565b60008251610e968184602087016107ed565b919091019291505056fea2646970667358221220db940ec4fecaa3b11f71d6cf6ef0ac3141552c5e39d750c1e2295a761a9396ad64736f6c634300081a0033"; + "0x6080604052348015600f57600080fd5b506001600055610e9e806100246000396000f3fe60806040526004361061006e5760003560e01c8063c51316911161004b578063c5131691146100d5578063c9028a36146100f5578063e04d4f9714610115578063f05b6abf1461012857005b8063357fc5a214610077578063676cc054146100975780636ed70169146100c057005b3661007557005b005b34801561008357600080fd5b506100756100923660046106ec565b610148565b6100aa6100a5366004610728565b6101de565b6040516100b79190610823565b60405180910390f35b3480156100cc57600080fd5b50610075610222565b3480156100e157600080fd5b506100756100f03660046106ec565b610257565b34801561010157600080fd5b50610075610110366004610836565b610332565b610075610123366004610996565b61036e565b34801561013457600080fd5b50610075610143366004610a82565b6103b2565b6101506103e7565b61017273ffffffffffffffffffffffffffffffffffffffff831633838661042a565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101d96001600055565b505050565b6040516060907f3658b46bab672c7672b69c2f0feda706eabdb7d2231421c96e9049b2db5e7eee90600090a1506040805160208101909152600081525b9392505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b61025f6103e7565b600061026c600285610b6c565b9050806000036102a8576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102ca73ffffffffffffffffffffffffffffffffffffffff841633848461042a565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101d96001600055565b7f689a5a5cb55e795ffe4cd8b419cd3bb0a3373974c54d25f64e734d7388b93e9b3382604051610363929190610bf0565b60405180910390a150565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa33348585856040516103a5959493929190610ce2565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103a59493929190610d6c565b600260005403610423576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526104bf9085906104c5565b50505050565b60006104e773ffffffffffffffffffffffffffffffffffffffff841683610560565b9050805160001415801561050c57508080602001905181019061050a9190610e2f565b155b156101d9576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061021b83836000846000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105939190610e4c565b60006040518083038185875af1925050503d80600081146105d0576040519150601f19603f3d011682016040523d82523d6000602084013e6105d5565b606091505b50915091506105e58683836105ef565b9695505050505050565b606082610604576105ff8261067e565b61021b565b8151158015610628575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610677576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610557565b508061021b565b80511561068e5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106e757600080fd5b919050565b60008060006060848603121561070157600080fd5b83359250610711602085016106c3565b915061071f604085016106c3565b90509250925092565b6000806000838503604081121561073e57600080fd5b602081121561074c57600080fd5b50839250602084013567ffffffffffffffff81111561076a57600080fd5b8401601f8101861361077b57600080fd5b803567ffffffffffffffff81111561079257600080fd5b8660208284010111156107a457600080fd5b939660209190910195509293505050565b60005b838110156107d05781810151838201526020016107b8565b50506000910152565b600081518084526107f18160208601602086016107b5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061021b60208301846107d9565b60006020828403121561084857600080fd5b813567ffffffffffffffff81111561085f57600080fd5b82016080818503121561021b57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156108e7576108e7610871565b604052919050565b600082601f83011261090057600080fd5b813567ffffffffffffffff81111561091a5761091a610871565b61094b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016108a0565b81815284602083860101111561096057600080fd5b816020850160208301376000918101602001919091529392505050565b80151581146106c057600080fd5b80356106e78161097d565b6000806000606084860312156109ab57600080fd5b833567ffffffffffffffff8111156109c257600080fd5b6109ce868287016108ef565b9350506020840135915060408401356109e68161097d565b809150509250925092565b600067ffffffffffffffff821115610a0b57610a0b610871565b5060051b60200190565b600082601f830112610a2657600080fd5b8135610a39610a34826109f1565b6108a0565b8082825260208201915060208360051b860101925085831115610a5b57600080fd5b602085015b83811015610a78578035835260209283019201610a60565b5095945050505050565b600080600060608486031215610a9757600080fd5b833567ffffffffffffffff811115610aae57600080fd5b8401601f81018613610abf57600080fd5b8035610acd610a34826109f1565b8082825260208201915060208360051b850101925088831115610aef57600080fd5b602084015b83811015610b3157803567ffffffffffffffff811115610b1357600080fd5b610b228b6020838901016108ef565b84525060209283019201610af4565b509550505050602084013567ffffffffffffffff811115610b5157600080fd5b610b5d86828701610a15565b92505061071f6040850161098b565b600082610ba2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015273ffffffffffffffffffffffffffffffffffffffff610c2e836106c3565b16604082015273ffffffffffffffffffffffffffffffffffffffff610c55602084016106c3565b166060820152600080604084013590508060808401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610ca157600080fd5b830160208101903567ffffffffffffffff811115610cbe57600080fd5b803603821315610ccd57600080fd5b608060a08501526105e560c085018284610ba7565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610d1760a08301866107d9565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610d62578151865260209586019590910190600101610d44565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610dff577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610dea8583516107d9565b94506020938401939190910190600101610db0565b505050508281036040840152610e158186610d30565b915050610e26606083018415159052565b95945050505050565b600060208284031215610e4157600080fd5b815161021b8161097d565b60008251610e5e8184602087016107b5565b919091019291505056fea26469706673582212200208dfaef53d7ec7d471b3a513486f45b234e5fb6727c50beff735b8aa974ee464736f6c634300081a0033"; type ReceiverEVMConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/SafeERC20__factory.ts b/v2/types/factories/SafeERC20__factory.ts index bccd3d1ba..9a853e693 100644 --- a/v2/types/factories/SafeERC20__factory.ts +++ b/v2/types/factories/SafeERC20__factory.ts @@ -47,7 +47,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202905cd55850035ea20b97ad43d92b09d94f8c95b651a8733a0f08394084a88ec64736f6c634300081a0033"; + "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d1e8ca78c7d9a8f7956969bf9e18a306c7fbad4315793a417432f76f34b799d864736f6c634300081a0033"; type SafeERC20ConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/SenderZEVM__factory.ts b/v2/types/factories/SenderZEVM__factory.ts index 428758a42..70bcbd62d 100644 --- a/v2/types/factories/SenderZEVM__factory.ts +++ b/v2/types/factories/SenderZEVM__factory.ts @@ -120,7 +120,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6080604052348015600f57600080fd5b50604051610a2c380380610a2c833981016040819052602c916050565b600080546001600160a01b0319166001600160a01b0392909216919091179055607e565b600060208284031215606157600080fd5b81516001600160a01b0381168114607757600080fd5b9392505050565b61099f8061008d6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b5780637a34d8bb146100a4575b600080fd5b6100596100543660046105f5565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b2366004610695565b610313565b60008383836040516024016100ce93929190610791565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490915073ffffffffffffffffffffffffffffffffffffffff8087169163095ea7b391166101758960026107bb565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016020604051808303816000875af11580156101e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020991906107fb565b61023f576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160a0810182526103218082526001602080840182905283850192909252835191820184526000808352606084019290925260808301829052905492517f048ae42c000000000000000000000000000000000000000000000000000000008152919273ffffffffffffffffffffffffffffffffffffffff169163048ae42c916102d7918c918c918c9189918990600401610894565b600060405180830381600087803b1580156102f157600080fd5b505af1158015610305573d6000803e3d6000fd5b505050505050505050505050565b600083838360405160240161032a93929190610791565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f9700000000000000000000000000000000000000000000000000000000179052815160a081018352610321808252600182840181905282850191909152835192830184526000808452606083019390935260808201839052915492517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810183905293945092909188169063095ea7b3906044016020604051808303816000875af1158015610455573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047991906107fb565b506000546040517f1cb5ea7500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690631cb5ea75906102d7908b908b90889087908990600401610902565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261051857600080fd5b81356020830160008067ffffffffffffffff841115610539576105396104d8565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff82111715610586576105866104d8565b60405283815290508082840187101561059e57600080fd5b838360208301376000602085830101528094505050505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146105df57600080fd5b919050565b80151581146105f257600080fd5b50565b60008060008060008060c0878903121561060e57600080fd5b863567ffffffffffffffff81111561062557600080fd5b61063189828a01610507565b96505060208701359450610647604088016105bb565b9350606087013567ffffffffffffffff81111561066357600080fd5b61066f89828a01610507565b9350506080870135915060a0870135610687816105e4565b809150509295509295509295565b600080600080600060a086880312156106ad57600080fd5b853567ffffffffffffffff8111156106c457600080fd5b6106d088828901610507565b9550506106df602087016105bb565b9350604086013567ffffffffffffffff8111156106fb57600080fd5b61070788828901610507565b93505060608601359150608086013561071f816105e4565b809150509295509295909350565b6000815180845260005b8181101561075357602081850181015186830182015201610737565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6060815260006107a4606083018661072d565b602083019490945250901515604090910152919050565b808201808211156107f5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b60006020828403121561080d57600080fd5b8151610818816105e4565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff815116825260208101511515602083015273ffffffffffffffffffffffffffffffffffffffff60408201511660408301526000606082015160a0606085015261088060a085018261072d565b608093840151949093019390935250919050565b60c0815260006108a760c083018961072d565b87602084015273ffffffffffffffffffffffffffffffffffffffff8716604084015282810360608401526108db818761072d565b905084608084015282810360a08401526108f5818561081f565b9998505050505050505050565b60a08152600061091560a083018861072d565b73ffffffffffffffffffffffffffffffffffffffff871660208401528281036040840152610943818761072d565b9050846060840152828103608084015261095d818561081f565b9897505050505050505056fea26469706673582212205fa8242e260218029afa3d89782c3c4b8f593abd55a4428515fbfa47b0bbebf764736f6c634300081a0033"; + "0x6080604052348015600f57600080fd5b50604051610a6f380380610a6f833981016040819052602c916050565b600080546001600160a01b0319166001600160a01b0392909216919091179055607e565b600060208284031215606157600080fd5b81516001600160a01b0381168114607757600080fd5b9392505050565b6109e28061008d6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b5780637a34d8bb146100a4575b600080fd5b61005961005436600461061e565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b23660046106be565b61032a565b60008383836040516024016100ce939291906107ba565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490915073ffffffffffffffffffffffffffffffffffffffff8087169163095ea7b391166101758960026107e4565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016020604051808303816000875af11580156101e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102099190610824565b61023f576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160a081018252610321808252600160208084018290528385019290925283518083018552600080825260608501919091526080840181905284518086018652828152928301919091525492517f7b15118b0000000000000000000000000000000000000000000000000000000081529192909173ffffffffffffffffffffffffffffffffffffffff90911690637b15118b906102ed908c908c908c90899088908a906004016108bd565b600060405180830381600087803b15801561030757600080fd5b505af115801561031b573d6000803e3d6000fd5b50505050505050505050505050565b6000838383604051602401610341939291906107ba565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f9700000000000000000000000000000000000000000000000000000000179052815160a081018352610321808252600182840181905282850191909152835192830184526000808452606083019390935260808201839052915492517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810183905293945092909188169063095ea7b3906044016020604051808303816000875af115801561046c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104909190610824565b506040805180820182528281526001602082015260005491517f06cb8983000000000000000000000000000000000000000000000000000000008152909173ffffffffffffffffffffffffffffffffffffffff16906306cb8983906102ed908c908c90899087908a90600401610938565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261054157600080fd5b81356020830160008067ffffffffffffffff84111561056257610562610501565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff821117156105af576105af610501565b6040528381529050808284018710156105c757600080fd5b838360208301376000602085830101528094505050505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461060857600080fd5b919050565b801515811461061b57600080fd5b50565b60008060008060008060c0878903121561063757600080fd5b863567ffffffffffffffff81111561064e57600080fd5b61065a89828a01610530565b96505060208701359450610670604088016105e4565b9350606087013567ffffffffffffffff81111561068c57600080fd5b61069889828a01610530565b9350506080870135915060a08701356106b08161060d565b809150509295509295509295565b600080600080600060a086880312156106d657600080fd5b853567ffffffffffffffff8111156106ed57600080fd5b6106f988828901610530565b955050610708602087016105e4565b9350604086013567ffffffffffffffff81111561072457600080fd5b61073088828901610530565b9350506060860135915060808601356107488161060d565b809150509295509295909350565b6000815180845260005b8181101561077c57602081850181015186830182015201610760565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6060815260006107cd6060830186610756565b602083019490945250901515604090910152919050565b8082018082111561081e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b60006020828403121561083657600080fd5b81516108418161060d565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff815116825260208101511515602083015273ffffffffffffffffffffffffffffffffffffffff60408201511660408301526000606082015160a060608501526108a960a0850182610756565b608093840151949093019390935250919050565b60e0815260006108d060e0830189610756565b87602084015273ffffffffffffffffffffffffffffffffffffffff8716604084015282810360608401526109048187610756565b855160808501526020860151151560a0850152905082810360c084015261092b8185610848565b9998505050505050505050565b60c08152600061094b60c0830188610756565b73ffffffffffffffffffffffffffffffffffffffff8716602084015282810360408401526109798187610756565b85516060850152602086015115156080850152905082810360a08401526109a08185610848565b9897505050505050505056fea26469706673582212209f622dcab5d8978e2fd5899f3e29df8a3e10b78ba00381cd9537eaa5c325f63464736f6c634300081a0033"; type SenderZEVMConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/StdError.sol/StdError__factory.ts b/v2/types/factories/StdError.sol/StdError__factory.ts index d2a33ecfb..b99cdace1 100644 --- a/v2/types/factories/StdError.sol/StdError__factory.ts +++ b/v2/types/factories/StdError.sol/StdError__factory.ts @@ -132,7 +132,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6102c9610039600b82828239805160001a607314602c57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100ad5760003560e01c8063986c5f6811610080578063b67689da11610065578063b67689da146100f8578063d160e4de14610100578063fa784a441461010857600080fd5b8063986c5f68146100e8578063b22dc54d146100f057600080fd5b806305ee8612146100b257806310332977146100d05780631de45560146100d85780638995290f146100e0575b600080fd5b6100ba610110565b6040516100c79190610227565b60405180910390f35b6100ba610197565b6100ba6101a9565b6100ba6101bb565b6100ba6101cd565b6100ba6101df565b6100ba6101f1565b6100ba610203565b6100ba610215565b604051603260248201526044015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f4e487b710000000000000000000000000000000000000000000000000000000017905281565b6040516001602482015260440161011e565b6040516021602482015260440161011e565b6040516011602482015260440161011e565b6040516041602482015260440161011e565b6040516031602482015260440161011e565b6040516051602482015260440161011e565b6040516022602482015260440161011e565b6040516012602482015260440161011e565b602081526000825180602084015260005b818110156102555760208186018101516040868401015201610238565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168401019150509291505056fea26469706673582212205a231584a6f904510d30e1e9640c6ee4f02df82512523f20aa2706966fcef00364736f6c634300081a0033"; + "0x6102c9610039600b82828239805160001a607314602c57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100ad5760003560e01c8063986c5f6811610080578063b67689da11610065578063b67689da146100f8578063d160e4de14610100578063fa784a441461010857600080fd5b8063986c5f68146100e8578063b22dc54d146100f057600080fd5b806305ee8612146100b257806310332977146100d05780631de45560146100d85780638995290f146100e0575b600080fd5b6100ba610110565b6040516100c79190610227565b60405180910390f35b6100ba610197565b6100ba6101a9565b6100ba6101bb565b6100ba6101cd565b6100ba6101df565b6100ba6101f1565b6100ba610203565b6100ba610215565b604051603260248201526044015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f4e487b710000000000000000000000000000000000000000000000000000000017905281565b6040516001602482015260440161011e565b6040516021602482015260440161011e565b6040516011602482015260440161011e565b6040516041602482015260440161011e565b6040516031602482015260440161011e565b6040516051602482015260440161011e565b6040516022602482015260440161011e565b6040516012602482015260440161011e565b602081526000825180602084015260005b818110156102555760208186018101516040868401015201610238565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168401019150509291505056fea26469706673582212207fb7cfabfc66edcd3015bba7f9f51fdd2883c3b6db832f21033426e3c6440d1e64736f6c634300081a0033"; type StdErrorConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/StdStorage.sol/StdStorageSafe__factory.ts b/v2/types/factories/StdStorage.sol/StdStorageSafe__factory.ts index 8663da450..767d6c3ff 100644 --- a/v2/types/factories/StdStorage.sol/StdStorageSafe__factory.ts +++ b/v2/types/factories/StdStorage.sol/StdStorageSafe__factory.ts @@ -68,7 +68,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200300b2a3fefbb75d98e75f1192239d81ef17eec1b8e4e59220733faaf4ff33ab64736f6c634300081a0033"; + "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206f64b7e1dbbc6026c24d52f1fa6a0ced3aba89a87747eea738880443683416a864736f6c634300081a0033"; type StdStorageSafeConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/Strings__factory.ts b/v2/types/factories/Strings__factory.ts index ab56f556b..9df193adb 100644 --- a/v2/types/factories/Strings__factory.ts +++ b/v2/types/factories/Strings__factory.ts @@ -31,7 +31,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122054df1ae034bd3cf22b4b583f6a2b4432114d224f44ffb3b28e5f3c6323e3e27f64736f6c634300081a0033"; + "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204d82302a12b7f0a06328a3c9a77ba505da0c3bcc1aaa5d00f99298af997827de64736f6c634300081a0033"; type StringsConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/SystemContract.sol/SystemContract__factory.ts b/v2/types/factories/SystemContract.sol/SystemContract__factory.ts index 0070ba882..7c2043bf9 100644 --- a/v2/types/factories/SystemContract.sol/SystemContract__factory.ts +++ b/v2/types/factories/SystemContract.sol/SystemContract__factory.ts @@ -439,7 +439,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea2646970667358221220b13ccf97234dc9b7f658234f9bf37a57d08f465bb99c431b865174e7a399a30764736f6c634300081a0033"; + "0x60c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea2646970667358221220eaa287ea22d82335c1d97ef661cb17f1296902daa41cca34de107966248e954364736f6c634300081a0033"; type SystemContractConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/SystemContractMock.sol/SystemContractMock__factory.ts b/v2/types/factories/SystemContractMock.sol/SystemContractMock__factory.ts index 1d22ac788..e8346ce8e 100644 --- a/v2/types/factories/SystemContractMock.sol/SystemContractMock__factory.ts +++ b/v2/types/factories/SystemContractMock.sol/SystemContractMock__factory.ts @@ -342,7 +342,7 @@ const _abi = [ ] as const; const _bytecode = - "0x608060405234801561001057600080fd5b50604051610b3f380380610b3f83398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a348061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fd565b6103a0565b6101416101da36600461081f565b610419565b6101046101ed366004610841565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610884565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108b0565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e90610366908490899089908990899060040161091b565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff8111156107b257600080fd5b8601601f810188136107c357600080fd5b803567ffffffffffffffff8111156107da57600080fd5b8860208284010111156107ec57600080fd5b959894975092955050506020019190565b60006020828403121561080f57600080fd5b61081882610737565b9392505050565b6000806040838503121561083257600080fd5b50508035926020909101359150565b60008060006060848603121561085657600080fd5b61085f84610737565b925061086d60208501610737565b915061087b60408501610737565b90509250925092565b6000806040838503121561089757600080fd5b823591506108a760208401610737565b90509250929050565b6000602082840312156108c257600080fd5b8151801515811461081857600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610953576020818401810151610100878401015201610935565b5060008482016101000152602089015173ffffffffffffffffffffffffffffffffffffffff811660a0860152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168401915050604088015160c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401526101008382030160608401526109f2610100820185876108d2565b9897505050505050505056fea26469706673582212201600a256a4ffaaa4ceb3b81d9f67be9d8f33665245b35eeba52fdc70200176a764736f6c634300081a0033"; + "0x608060405234801561001057600080fd5b50604051610b3f380380610b3f83398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a348061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fd565b6103a0565b6101416101da36600461081f565b610419565b6101046101ed366004610841565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610884565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108b0565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e90610366908490899089908990899060040161091b565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff8111156107b257600080fd5b8601601f810188136107c357600080fd5b803567ffffffffffffffff8111156107da57600080fd5b8860208284010111156107ec57600080fd5b959894975092955050506020019190565b60006020828403121561080f57600080fd5b61081882610737565b9392505050565b6000806040838503121561083257600080fd5b50508035926020909101359150565b60008060006060848603121561085657600080fd5b61085f84610737565b925061086d60208501610737565b915061087b60408501610737565b90509250925092565b6000806040838503121561089757600080fd5b823591506108a760208401610737565b90509250929050565b6000602082840312156108c257600080fd5b8151801515811461081857600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610953576020818401810151610100878401015201610935565b5060008482016101000152602089015173ffffffffffffffffffffffffffffffffffffffff811660a0860152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168401915050604088015160c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401526101008382030160608401526109f2610100820185876108d2565b9897505050505050505056fea2646970667358221220eb281f71b1a10df3d88243dcf9e9ff7f57e8f4bc6018408c57e8ef3bb671313d64736f6c634300081a0033"; type SystemContractMockConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/TestERC20__factory.ts b/v2/types/factories/TestERC20__factory.ts index 5410c45c0..eec6897e7 100644 --- a/v2/types/factories/TestERC20__factory.ts +++ b/v2/types/factories/TestERC20__factory.ts @@ -357,7 +357,7 @@ const _abi = [ ] as const; const _bytecode = - "0x608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220a043c41353215fce25ecb67a8a4f6f724aaa86dea8dcb0a6975bfb1f10ff3beb64736f6c634300081a0033"; + "0x608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212205f76808fb3dc6dacf4bd766b2d0bf9d6beb64856c952cec8e267368511bd936a64736f6c634300081a0033"; type TestERC20ConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/TestUniversalContract__factory.ts b/v2/types/factories/TestUniversalContract__factory.ts index c7bbe7d3b..031628269 100644 --- a/v2/types/factories/TestUniversalContract__factory.ts +++ b/v2/types/factories/TestUniversalContract__factory.ts @@ -50,12 +50,12 @@ const _abi = [ ], }, { - name: "zrc20", + name: "", type: "address", internalType: "address", }, { - name: "amount", + name: "", type: "uint256", internalType: "uint256", }, @@ -178,7 +178,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6080604052348015600f57600080fd5b5061061b8061001f6000396000f3fe60806040526004361061002a5760003560e01c80635bcfd61614610033578063c9028a361461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e366004610151565b610073565b34801561005f57600080fd5b5061003161006e36600461020e565b6100ee565b6060811561008a576100878284018461027f565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610375565b6100c560408a0160208b016103e1565b896040013533866040516100de96959493929190610445565b60405180910390a1505050505050565b7fd75bb509c8f32a725aac99ac5c4541060dbfb889a3aca8314d6f00395618c4c48160405161011d9190610507565b60405180910390a150565b803573ffffffffffffffffffffffffffffffffffffffff8116811461014c57600080fd5b919050565b60008060008060006080868803121561016957600080fd5b853567ffffffffffffffff81111561018057600080fd5b86016060818903121561019257600080fd5b94506101a060208701610128565b935060408601359250606086013567ffffffffffffffff8111156101c357600080fd5b8601601f810188136101d457600080fd5b803567ffffffffffffffff8111156101eb57600080fd5b8860208284010111156101fd57600080fd5b959894975092955050506020019190565b60006020828403121561022057600080fd5b813567ffffffffffffffff81111561023757600080fd5b82016080818503121561024957600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561029157600080fd5b813567ffffffffffffffff8111156102a857600080fd5b8201601f810184136102b957600080fd5b803567ffffffffffffffff8111156102d3576102d3610250565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033f5761033f610250565b60405281815282820160200186101561035757600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126103aa57600080fd5b83018035915067ffffffffffffffff8211156103c557600080fd5b6020019150368190038213156103da57600080fd5b9250929050565b6000602082840312156103f357600080fd5b61024982610128565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60a08152600061045960a08301888a6103fc565b73ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff851660608401528281036080840152835180825260005b818110156104c3576020818701810151848301820152016104a7565b5060006020828401015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011683010192505050979650505050505050565b6020815273ffffffffffffffffffffffffffffffffffffffff61052983610128565b16602082015273ffffffffffffffffffffffffffffffffffffffff61055060208401610128565b166040820152600080604084013590508060608401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261059c57600080fd5b830160208101903567ffffffffffffffff8111156105b957600080fd5b8036038213156105c857600080fd5b6080808501526105dc60a0850182846103fc565b9594505050505056fea264697066735822122061cdfae648cbae7594990dcb3c026ac50f91568f9bdbabb7185e35e94b64bb7d64736f6c634300081a0033"; + "0x6080604052348015600f57600080fd5b5061061b8061001f6000396000f3fe60806040526004361061002a5760003560e01c80635bcfd61614610033578063c9028a361461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e366004610151565b610073565b34801561005f57600080fd5b5061003161006e36600461020e565b6100ee565b6060811561008a576100878284018461027f565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610375565b6100c560408a0160208b016103e1565b896040013533866040516100de96959493929190610445565b60405180910390a1505050505050565b7fd75bb509c8f32a725aac99ac5c4541060dbfb889a3aca8314d6f00395618c4c48160405161011d9190610507565b60405180910390a150565b803573ffffffffffffffffffffffffffffffffffffffff8116811461014c57600080fd5b919050565b60008060008060006080868803121561016957600080fd5b853567ffffffffffffffff81111561018057600080fd5b86016060818903121561019257600080fd5b94506101a060208701610128565b935060408601359250606086013567ffffffffffffffff8111156101c357600080fd5b8601601f810188136101d457600080fd5b803567ffffffffffffffff8111156101eb57600080fd5b8860208284010111156101fd57600080fd5b959894975092955050506020019190565b60006020828403121561022057600080fd5b813567ffffffffffffffff81111561023757600080fd5b82016080818503121561024957600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561029157600080fd5b813567ffffffffffffffff8111156102a857600080fd5b8201601f810184136102b957600080fd5b803567ffffffffffffffff8111156102d3576102d3610250565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033f5761033f610250565b60405281815282820160200186101561035757600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126103aa57600080fd5b83018035915067ffffffffffffffff8211156103c557600080fd5b6020019150368190038213156103da57600080fd5b9250929050565b6000602082840312156103f357600080fd5b61024982610128565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60a08152600061045960a08301888a6103fc565b73ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff851660608401528281036080840152835180825260005b818110156104c3576020818701810151848301820152016104a7565b5060006020828401015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011683010192505050979650505050505050565b6020815273ffffffffffffffffffffffffffffffffffffffff61052983610128565b16602082015273ffffffffffffffffffffffffffffffffffffffff61055060208401610128565b166040820152600080604084013590508060608401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261059c57600080fd5b830160208101903567ffffffffffffffff8111156105b957600080fd5b8036038213156105c857600080fd5b6080808501526105dc60a0850182846103fc565b9594505050505056fea2646970667358221220dc7a523df5134796579649d41e8953ef32547ff135f22140d4bed3844993809c64736f6c634300081a0033"; type TestUniversalContractConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy__factory.ts b/v2/types/factories/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy__factory.ts index 841cadf63..b4764a6e6 100644 --- a/v2/types/factories/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy__factory.ts +++ b/v2/types/factories/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy__factory.ts @@ -129,7 +129,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a060405260405161117a38038061117a8339810160408190526100229161039d565b828161002e828261008f565b50508160405161003d9061033a565b6001600160a01b039091168152602001604051809103906000f080158015610069573d6000803e3d6000fd5b506001600160a01b031660805261008761008260805190565b6100ee565b50505061048f565b6100988261015c565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156100e2576100dd82826101db565b505050565b6100ea610252565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61012e60008051602061115a833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161015981610273565b50565b806001600160a01b03163b60000361019757604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080846001600160a01b0316846040516101f89190610473565b600060405180830381855af49150503d8060008114610233576040519150601f19603f3d011682016040523d82523d6000602084013e610238565b606091505b5090925090506102498583836102b2565b95945050505050565b34156102715760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661029d57604051633173bdd160e11b81526000600482015260240161018e565b8060008051602061115a8339815191526101ba565b6060826102c7576102c282610311565b61030a565b81511580156102de57506001600160a01b0384163b155b1561030757604051639996b31560e01b81526001600160a01b038516600482015260240161018e565b50805b9392505050565b8051156103215780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b61068480610ad683390190565b80516001600160a01b038116811461035e57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561039457818101518382015260200161037c565b50506000910152565b6000806000606084860312156103b257600080fd5b6103bb84610347565b92506103c960208501610347565b60408501519092506001600160401b038111156103e557600080fd5b8401601f810186136103f657600080fd5b80516001600160401b0381111561040f5761040f610363565b604051601f8201601f19908116603f011681016001600160401b038111828210171561043d5761043d610363565b60405281815282820160200188101561045557600080fd5b610466826020830160208601610379565b8093505050509250925092565b60008251610485818460208701610379565b9190910192915050565b60805161062d6104a960003960006010015261062d6000f3fe608060405261000c61000e565b005b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633036100d2576000357fffffffff00000000000000000000000000000000000000000000000000000000167f4f1ef28600000000000000000000000000000000000000000000000000000000146100c8576040517fd2b576ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100d06100da565b565b6100d0610109565b6000806100ea366004818461044d565b8101906100f791906104a6565b915091506101058282610119565b5050565b6100d0610114610181565b6101c6565b610122826101ea565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156101795761017482826102be565b505050565b610105610341565b60006101c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e8080156101e5573d6000f35b3d6000fd5b8073ffffffffffffffffffffffffffffffffffffffff163b600003610258576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60606000808473ffffffffffffffffffffffffffffffffffffffff16846040516102e891906105c8565b600060405180830381855af49150503d8060008114610323576040519150601f19603f3d011682016040523d82523d6000602084013e610328565b606091505b5091509150610338858383610379565b95945050505050565b34156100d0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261038e576103898261040b565b610404565b81511580156103b2575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610401576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161024f565b50805b9392505050565b80511561041b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808585111561045d57600080fd5b8386111561046a57600080fd5b5050820193919092039150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156104b957600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104dd57600080fd5b9150602083013567ffffffffffffffff8111156104f957600080fd5b8301601f8101851361050a57600080fd5b803567ffffffffffffffff81111561052457610524610477565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561059057610590610477565b6040528181528282016020018710156105a857600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000825160005b818110156105e957602081860181015185830152016105cf565b50600092019182525091905056fea2646970667358221220253f136e11d5f63ec3563318e55ad57e885108c3ff50fe7c6397f7ecf53edd5a64736f6c634300081a0033608060405234801561001057600080fd5b5060405161068438038061068483398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610587806100fd6000396000f3fe60806040526004361061005a5760003560e01c80639623609d116100435780639623609d146100b0578063ad3cb1cc146100c3578063f2fde38b1461011957600080fd5b8063715018a61461005f5780638da5cb5b14610076575b600080fd5b34801561006b57600080fd5b50610074610139565b005b34801561008257600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100746100be366004610364565b61014d565b3480156100cf57600080fd5b5061010c6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a791906104e3565b34801561012557600080fd5b506100746101343660046104fd565b6101e2565b61014161024b565b61014b600061029e565b565b61015561024b565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101ab908690869060040161051a565b6000604051808303818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b5050505050505050565b6101ea61024b565b73ffffffffffffffffffffffffffffffffffffffff811661023f576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6102488161029e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461014b576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610236565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461024857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561037957600080fd5b833561038481610313565b9250602084013561039481610313565b9150604084013567ffffffffffffffff8111156103b057600080fd5b8401601f810186136103c157600080fd5b803567ffffffffffffffff8111156103db576103db610335565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561044757610447610335565b60405281815282820160200188101561045f57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000815180845260005b818110156104a557602081850181015186830182015201610489565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104f6602083018461047f565b9392505050565b60006020828403121561050f57600080fd5b81356104f681610313565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610549604083018461047f565b94935050505056fea2646970667358221220cc8bbfd5df3920285befce3b27271fc70ad0dfb073ae2b9db9df8353b1cc6fff64736f6c634300081a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103"; + "0x60a060405260405161117a38038061117a8339810160408190526100229161039d565b828161002e828261008f565b50508160405161003d9061033a565b6001600160a01b039091168152602001604051809103906000f080158015610069573d6000803e3d6000fd5b506001600160a01b031660805261008761008260805190565b6100ee565b50505061048f565b6100988261015c565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156100e2576100dd82826101db565b505050565b6100ea610252565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61012e60008051602061115a833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161015981610273565b50565b806001600160a01b03163b60000361019757604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080846001600160a01b0316846040516101f89190610473565b600060405180830381855af49150503d8060008114610233576040519150601f19603f3d011682016040523d82523d6000602084013e610238565b606091505b5090925090506102498583836102b2565b95945050505050565b34156102715760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661029d57604051633173bdd160e11b81526000600482015260240161018e565b8060008051602061115a8339815191526101ba565b6060826102c7576102c282610311565b61030a565b81511580156102de57506001600160a01b0384163b155b1561030757604051639996b31560e01b81526001600160a01b038516600482015260240161018e565b50805b9392505050565b8051156103215780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b61068480610ad683390190565b80516001600160a01b038116811461035e57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561039457818101518382015260200161037c565b50506000910152565b6000806000606084860312156103b257600080fd5b6103bb84610347565b92506103c960208501610347565b60408501519092506001600160401b038111156103e557600080fd5b8401601f810186136103f657600080fd5b80516001600160401b0381111561040f5761040f610363565b604051601f8201601f19908116603f011681016001600160401b038111828210171561043d5761043d610363565b60405281815282820160200188101561045557600080fd5b610466826020830160208601610379565b8093505050509250925092565b60008251610485818460208701610379565b9190910192915050565b60805161062d6104a960003960006010015261062d6000f3fe608060405261000c61000e565b005b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633036100d2576000357fffffffff00000000000000000000000000000000000000000000000000000000167f4f1ef28600000000000000000000000000000000000000000000000000000000146100c8576040517fd2b576ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100d06100da565b565b6100d0610109565b6000806100ea366004818461044d565b8101906100f791906104a6565b915091506101058282610119565b5050565b6100d0610114610181565b6101c6565b610122826101ea565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156101795761017482826102be565b505050565b610105610341565b60006101c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e8080156101e5573d6000f35b3d6000fd5b8073ffffffffffffffffffffffffffffffffffffffff163b600003610258576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60606000808473ffffffffffffffffffffffffffffffffffffffff16846040516102e891906105c8565b600060405180830381855af49150503d8060008114610323576040519150601f19603f3d011682016040523d82523d6000602084013e610328565b606091505b5091509150610338858383610379565b95945050505050565b34156100d0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261038e576103898261040b565b610404565b81511580156103b2575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610401576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161024f565b50805b9392505050565b80511561041b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808585111561045d57600080fd5b8386111561046a57600080fd5b5050820193919092039150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156104b957600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104dd57600080fd5b9150602083013567ffffffffffffffff8111156104f957600080fd5b8301601f8101851361050a57600080fd5b803567ffffffffffffffff81111561052457610524610477565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561059057610590610477565b6040528181528282016020018710156105a857600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000825160005b818110156105e957602081860181015185830152016105cf565b50600092019182525091905056fea2646970667358221220a4ebc0057fc296295a495e12fd7b1928a56a5810665ef2dd8b0464323df419c964736f6c634300081a0033608060405234801561001057600080fd5b5060405161068438038061068483398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610587806100fd6000396000f3fe60806040526004361061005a5760003560e01c80639623609d116100435780639623609d146100b0578063ad3cb1cc146100c3578063f2fde38b1461011957600080fd5b8063715018a61461005f5780638da5cb5b14610076575b600080fd5b34801561006b57600080fd5b50610074610139565b005b34801561008257600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100746100be366004610364565b61014d565b3480156100cf57600080fd5b5061010c6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a791906104e3565b34801561012557600080fd5b506100746101343660046104fd565b6101e2565b61014161024b565b61014b600061029e565b565b61015561024b565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101ab908690869060040161051a565b6000604051808303818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b5050505050505050565b6101ea61024b565b73ffffffffffffffffffffffffffffffffffffffff811661023f576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6102488161029e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461014b576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610236565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461024857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561037957600080fd5b833561038481610313565b9250602084013561039481610313565b9150604084013567ffffffffffffffff8111156103b057600080fd5b8401601f810186136103c157600080fd5b803567ffffffffffffffff8111156103db576103db610335565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561044757610447610335565b60405281815282820160200188101561045f57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000815180845260005b818110156104a557602081850181015186830182015201610489565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104f6602083018461047f565b9392505050565b60006020828403121561050f57600080fd5b81356104f681610313565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610549604083018461047f565b94935050505056fea2646970667358221220bfcb42a89a84dac0635a45bd4013ab76b4d822e9c9c757167dcf256da0cea66f64736f6c634300081a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103"; type TransparentUpgradeableProxyConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/UpgradeableBeacon__factory.ts b/v2/types/factories/UpgradeableBeacon__factory.ts index 4a8a43c0e..0c7d4d709 100644 --- a/v2/types/factories/UpgradeableBeacon__factory.ts +++ b/v2/types/factories/UpgradeableBeacon__factory.ts @@ -163,7 +163,7 @@ const _abi = [ ] as const; const _bytecode = - "0x608060405234801561001057600080fd5b5060405161054538038061054583398101604081905261002f91610165565b806001600160a01b03811661005f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61006881610079565b50610072826100c9565b5050610198565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b806001600160a01b03163b6000036100ff5760405163211eb15960e21b81526001600160a01b0382166004820152602401610056565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b80516001600160a01b038116811461016057600080fd5b919050565b6000806040838503121561017857600080fd5b61018183610149565b915061018f60208401610149565b90509250929050565b61039e806101a76000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063715018a611610050578063715018a6146100c45780638da5cb5b146100cc578063f2fde38b146100ea57600080fd5b80633659cfe61461006c5780635c60da1b14610081575b600080fd5b61007f61007a36600461032b565b6100fd565b005b60015473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61007f610111565b60005473ffffffffffffffffffffffffffffffffffffffff1661009b565b61007f6100f836600461032b565b610125565b61010561018b565b61010e816101de565b50565b61011961018b565b61012360006102b6565b565b61012d61018b565b73ffffffffffffffffffffffffffffffffffffffff8116610182576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61010e816102b6565b60005473ffffffffffffffffffffffffffffffffffffffff163314610123576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610179565b8073ffffffffffffffffffffffffffffffffffffffff163b600003610247576040517f847ac56400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610179565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561033d57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461036157600080fd5b939250505056fea2646970667358221220c9c7179481a766b085d2da5ae9750f1c78f5bdec74151fc542064690d3a7e39864736f6c634300081a0033"; + "0x608060405234801561001057600080fd5b5060405161054538038061054583398101604081905261002f91610165565b806001600160a01b03811661005f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61006881610079565b50610072826100c9565b5050610198565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b806001600160a01b03163b6000036100ff5760405163211eb15960e21b81526001600160a01b0382166004820152602401610056565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b80516001600160a01b038116811461016057600080fd5b919050565b6000806040838503121561017857600080fd5b61018183610149565b915061018f60208401610149565b90509250929050565b61039e806101a76000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063715018a611610050578063715018a6146100c45780638da5cb5b146100cc578063f2fde38b146100ea57600080fd5b80633659cfe61461006c5780635c60da1b14610081575b600080fd5b61007f61007a36600461032b565b6100fd565b005b60015473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61007f610111565b60005473ffffffffffffffffffffffffffffffffffffffff1661009b565b61007f6100f836600461032b565b610125565b61010561018b565b61010e816101de565b50565b61011961018b565b61012360006102b6565b565b61012d61018b565b73ffffffffffffffffffffffffffffffffffffffff8116610182576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61010e816102b6565b60005473ffffffffffffffffffffffffffffffffffffffff163314610123576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610179565b8073ffffffffffffffffffffffffffffffffffffffff163b600003610247576040517f847ac56400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610179565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561033d57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461036157600080fd5b939250505056fea2646970667358221220a34903c6e0667f087cb6963c1584e20e97a79adf79b1e49dca433f1edfc474c264736f6c634300081a0033"; type UpgradeableBeaconConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/WZETA.sol/WETH9__factory.ts b/v2/types/factories/WZETA.sol/WETH9__factory.ts index 33f7e2882..f4728502d 100644 --- a/v2/types/factories/WZETA.sol/WETH9__factory.ts +++ b/v2/types/factories/WZETA.sol/WETH9__factory.ts @@ -299,7 +299,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea2646970667358221220b09c98b42d894b1b92a74ecc691587bcc17012fff7ef3bcfa6fe755f9b6255a564736f6c634300081a0033"; + "0x60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea2646970667358221220c069e4cb3e16bcddc5b07d6ba4019a062fbae92d695877ad19f66fc9ac6047fd64736f6c634300081a0033"; type WETH9ConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/ZRC20.sol/ZRC20__factory.ts b/v2/types/factories/ZRC20.sol/ZRC20__factory.ts index 754fa0068..ca9fbcb84 100644 --- a/v2/types/factories/ZRC20.sol/ZRC20__factory.ts +++ b/v2/types/factories/ZRC20.sol/ZRC20__factory.ts @@ -721,7 +721,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60c060405234801561001057600080fd5b5060405161207238038061207283398101604081905261002f916101f0565b6001600160a01b038216158061004c57506001600160a01b038116155b1561006a5760405163d92e233d60e01b815260040160405180910390fd5b60066100768982610342565b5060076100838882610342565b506008805460ff191660ff881617905560808590528360028111156100aa576100aa610400565b60a08160028111156100be576100be610400565b905250600192909255600080546001600160a01b039283166001600160a01b0319909116179055600880549190921661010002610100600160a81b0319909116179055506104169350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261013357600080fd5b81516001600160401b0381111561014c5761014c61010c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561017a5761017a61010c565b60405281815283820160200185101561019257600080fd5b60005b828110156101b157602081860181015183830182015201610195565b506000918101602001919091529392505050565b8051600381106101d457600080fd5b919050565b80516001600160a01b03811681146101d457600080fd5b600080600080600080600080610100898b03121561020d57600080fd5b88516001600160401b0381111561022357600080fd5b61022f8b828c01610122565b60208b015190995090506001600160401b0381111561024d57600080fd5b6102598b828c01610122565b975050604089015160ff8116811461027057600080fd5b60608a0151909650945061028660808a016101c5565b60a08a0151909450925061029c60c08a016101d9565b91506102aa60e08a016101d9565b90509295985092959890939650565b600181811c908216806102cd57607f821691505b6020821081036102ed57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561033d57806000526020600020601f840160051c8101602085101561031a5750805b601f840160051c820191505b8181101561033a5760008155600101610326565b50505b505050565b81516001600160401b0381111561035b5761035b61010c565b61036f8161036984546102b9565b846102f3565b6020601f8211600181146103a3576000831561038b5750848201515b600019600385901b1c1916600184901b17845561033a565b600084815260208120601f198516915b828110156103d357878501518255602094850194600190920191016103b3565b50848210156103f15786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a051611c1b61045760003960006103440152600081816102f001528181610bdc01528181610ce201528181610efe01526110040152611c1b6000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c806395d89b41116100f9578063ccc7759911610097578063eddeb12311610071578063eddeb12314610461578063f2441b3214610474578063f687d12a14610494578063fc5fecd5146104a757600080fd5b8063ccc77599146103d4578063d9eeebed146103e7578063dd62ed3e1461041b57600080fd5b8063b84c8246116100d3578063b84c824614610386578063c47f00271461039b578063c7012626146103ae578063c835d7cc146103c157600080fd5b806395d89b4114610337578063a3413d031461033f578063a9059cbb1461037357600080fd5b80633ce4a5bc116101665780634d8943bb116101405780634d8943bb146102ac57806370a08231146102b557806385e1f4d0146102eb5780638b851b951461031257600080fd5b80633ce4a5bc1461024657806342966c681461028657806347e7ef241461029957600080fd5b806318160ddd1161019757806318160ddd1461021657806323b872dd1461021e578063313ce5671461023157600080fd5b806306fdde03146101be578063091d2788146101dc578063095ea7b3146101f3575b600080fd5b6101c66104ba565b6040516101d39190611648565b60405180910390f35b6101e560015481565b6040519081526020016101d3565b610206610201366004611687565b61054c565b60405190151581526020016101d3565b6005546101e5565b61020661022c3660046116b3565b610563565b60085460405160ff90911681526020016101d3565b61026173735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d3565b6102066102943660046116f4565b6105fa565b6102066102a7366004611687565b61060e565b6101e560025481565b6101e56102c336600461170d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6101e57f000000000000000000000000000000000000000000000000000000000000000081565b60085461026190610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6101c6610767565b6103667f000000000000000000000000000000000000000000000000000000000000000081565b6040516101d3919061172a565b610206610381366004611687565b610776565b610399610394366004611832565b610783565b005b6103996103a9366004611832565b6107e0565b6102066103bc366004611883565b610839565b6103996103cf36600461170d565b610988565b6103996103e236600461170d565b610a9c565b6103ef610bb0565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101d3565b6101e56104293660046118dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205490565b61039961046f3660046116f4565b610dce565b6000546102619073ffffffffffffffffffffffffffffffffffffffff1681565b6103996104a23660046116f4565b610e50565b6103ef6104b53660046116f4565b610ed2565b6060600680546104c990611915565b80601f01602080910402602001604051908101604052809291908181526020018280546104f590611915565b80156105425780601f1061051757610100808354040283529160200191610542565b820191906000526020600020905b81548152906001019060200180831161052557829003601f168201915b5050505050905090565b60006105593384846110ee565b5060015b92915050565b60006105708484846111f7565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460209081526040808320338452909152902054828110156105db576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105ef85336105ea8685611997565b6110ee565b506001949350505050565b600061060633836113b2565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab1480159061064c575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156106755750600854610100900473ffffffffffffffffffffffffffffffffffffffff163314155b156106ac576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106b683836114f4565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526107569186906119aa565b60405180910390a250600192915050565b6060600780546104c990611915565b60006105593384846111f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab146107d0576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60076107dc8282611a1b565b5050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461082d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60066107dc8282611a1b565b6000806000610846610bb0565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156108d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fc9190611b34565b610932576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61093c33856113b2565b60025460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161097591899189918791611b56565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146109d5576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a22576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610ae9576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610b36576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c679190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610cb6576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d699190611ba2565b905080600003610da5576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060025460015483610db89190611bbb565b610dc29190611bd2565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e1b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610a91565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e9d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610f65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f899190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610fd8576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015611067573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108b9190611ba2565b9050806000036110c7576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000906110d78784611bbb565b6110e19190611bd2565b9296929550919350505050565b73ffffffffffffffffffffffffffffffffffffffff831661113b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611188576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611244576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611291576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040902054818110156112f1576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112fb8282611997565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260036020526040808220939093559085168152908120805484929061133e908490611bd2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113a491815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff82166113ff576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260409020548181101561145f576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114698282611997565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260036020526040812091909155600580548492906114a4908490611997565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016111ea565b73ffffffffffffffffffffffffffffffffffffffff8216611541576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008282546115539190611bd2565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805483929061158d908490611bd2565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561160a576020818501810151868301820152016115ee565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061165b60208301846115e4565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461168457600080fd5b50565b6000806040838503121561169a57600080fd5b82356116a581611662565b946020939093013593505050565b6000806000606084860312156116c857600080fd5b83356116d381611662565b925060208401356116e381611662565b929592945050506040919091013590565b60006020828403121561170657600080fd5b5035919050565b60006020828403121561171f57600080fd5b813561165b81611662565b6020810160038310611765577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff8411156117b5576117b561176b565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff821117156118025761180261176b565b60405283815290508082840185101561181a57600080fd5b83836020830137600060208583010152509392505050565b60006020828403121561184457600080fd5b813567ffffffffffffffff81111561185b57600080fd5b8201601f8101841361186c57600080fd5b61187b8482356020840161179a565b949350505050565b6000806040838503121561189657600080fd5b823567ffffffffffffffff8111156118ad57600080fd5b8301601f810185136118be57600080fd5b6118cd8582356020840161179a565b95602094909401359450505050565b600080604083850312156118ef57600080fd5b82356118fa81611662565b9150602083013561190a81611662565b809150509250929050565b600181811c9082168061192957607f821691505b602082108103611962577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561055d5761055d611968565b6040815260006119bd60408301856115e4565b90508260208301529392505050565b601f821115611a1657806000526020600020601f840160051c810160208510156119f35750805b601f840160051c820191505b81811015611a1357600081556001016119ff565b50505b505050565b815167ffffffffffffffff811115611a3557611a3561176b565b611a4981611a438454611915565b846119cc565b6020601f821160018114611a9b5760008315611a655750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611a13565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015611ae95787850151825560209485019460019092019101611ac9565b5084821015611b2557868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b600060208284031215611b4657600080fd5b8151801515811461165b57600080fd5b608081526000611b6960808301876115e4565b6020830195909552506040810192909252606090910152919050565b600060208284031215611b9757600080fd5b815161165b81611662565b600060208284031215611bb457600080fd5b5051919050565b808202811582820484141761055d5761055d611968565b8082018082111561055d5761055d61196856fea2646970667358221220d6ba834f25782689ed13bffb6ac9ff2c8d3b5342c94a515aea8197a76070ad3f64736f6c634300081a0033"; + "0x60c060405234801561001057600080fd5b5060405161207238038061207283398101604081905261002f916101f0565b6001600160a01b038216158061004c57506001600160a01b038116155b1561006a5760405163d92e233d60e01b815260040160405180910390fd5b60066100768982610342565b5060076100838882610342565b506008805460ff191660ff881617905560808590528360028111156100aa576100aa610400565b60a08160028111156100be576100be610400565b905250600192909255600080546001600160a01b039283166001600160a01b0319909116179055600880549190921661010002610100600160a81b0319909116179055506104169350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261013357600080fd5b81516001600160401b0381111561014c5761014c61010c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561017a5761017a61010c565b60405281815283820160200185101561019257600080fd5b60005b828110156101b157602081860181015183830182015201610195565b506000918101602001919091529392505050565b8051600381106101d457600080fd5b919050565b80516001600160a01b03811681146101d457600080fd5b600080600080600080600080610100898b03121561020d57600080fd5b88516001600160401b0381111561022357600080fd5b61022f8b828c01610122565b60208b015190995090506001600160401b0381111561024d57600080fd5b6102598b828c01610122565b975050604089015160ff8116811461027057600080fd5b60608a0151909650945061028660808a016101c5565b60a08a0151909450925061029c60c08a016101d9565b91506102aa60e08a016101d9565b90509295985092959890939650565b600181811c908216806102cd57607f821691505b6020821081036102ed57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561033d57806000526020600020601f840160051c8101602085101561031a5750805b601f840160051c820191505b8181101561033a5760008155600101610326565b50505b505050565b81516001600160401b0381111561035b5761035b61010c565b61036f8161036984546102b9565b846102f3565b6020601f8211600181146103a3576000831561038b5750848201515b600019600385901b1c1916600184901b17845561033a565b600084815260208120601f198516915b828110156103d357878501518255602094850194600190920191016103b3565b50848210156103f15786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a051611c1b61045760003960006103440152600081816102f001528181610bdc01528181610ce201528181610efe01526110040152611c1b6000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c806395d89b41116100f9578063ccc7759911610097578063eddeb12311610071578063eddeb12314610461578063f2441b3214610474578063f687d12a14610494578063fc5fecd5146104a757600080fd5b8063ccc77599146103d4578063d9eeebed146103e7578063dd62ed3e1461041b57600080fd5b8063b84c8246116100d3578063b84c824614610386578063c47f00271461039b578063c7012626146103ae578063c835d7cc146103c157600080fd5b806395d89b4114610337578063a3413d031461033f578063a9059cbb1461037357600080fd5b80633ce4a5bc116101665780634d8943bb116101405780634d8943bb146102ac57806370a08231146102b557806385e1f4d0146102eb5780638b851b951461031257600080fd5b80633ce4a5bc1461024657806342966c681461028657806347e7ef241461029957600080fd5b806318160ddd1161019757806318160ddd1461021657806323b872dd1461021e578063313ce5671461023157600080fd5b806306fdde03146101be578063091d2788146101dc578063095ea7b3146101f3575b600080fd5b6101c66104ba565b6040516101d39190611648565b60405180910390f35b6101e560015481565b6040519081526020016101d3565b610206610201366004611687565b61054c565b60405190151581526020016101d3565b6005546101e5565b61020661022c3660046116b3565b610563565b60085460405160ff90911681526020016101d3565b61026173735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d3565b6102066102943660046116f4565b6105fa565b6102066102a7366004611687565b61060e565b6101e560025481565b6101e56102c336600461170d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6101e57f000000000000000000000000000000000000000000000000000000000000000081565b60085461026190610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6101c6610767565b6103667f000000000000000000000000000000000000000000000000000000000000000081565b6040516101d3919061172a565b610206610381366004611687565b610776565b610399610394366004611832565b610783565b005b6103996103a9366004611832565b6107e0565b6102066103bc366004611883565b610839565b6103996103cf36600461170d565b610988565b6103996103e236600461170d565b610a9c565b6103ef610bb0565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101d3565b6101e56104293660046118dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205490565b61039961046f3660046116f4565b610dce565b6000546102619073ffffffffffffffffffffffffffffffffffffffff1681565b6103996104a23660046116f4565b610e50565b6103ef6104b53660046116f4565b610ed2565b6060600680546104c990611915565b80601f01602080910402602001604051908101604052809291908181526020018280546104f590611915565b80156105425780601f1061051757610100808354040283529160200191610542565b820191906000526020600020905b81548152906001019060200180831161052557829003601f168201915b5050505050905090565b60006105593384846110ee565b5060015b92915050565b60006105708484846111f7565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460209081526040808320338452909152902054828110156105db576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105ef85336105ea8685611997565b6110ee565b506001949350505050565b600061060633836113b2565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab1480159061064c575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156106755750600854610100900473ffffffffffffffffffffffffffffffffffffffff163314155b156106ac576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106b683836114f4565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526107569186906119aa565b60405180910390a250600192915050565b6060600780546104c990611915565b60006105593384846111f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab146107d0576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60076107dc8282611a1b565b5050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461082d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60066107dc8282611a1b565b6000806000610846610bb0565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156108d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fc9190611b34565b610932576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61093c33856113b2565b60025460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161097591899189918791611b56565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146109d5576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a22576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610ae9576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610b36576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c679190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610cb6576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d699190611ba2565b905080600003610da5576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060025460015483610db89190611bbb565b610dc29190611bd2565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e1b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610a91565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e9d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610f65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f899190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610fd8576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015611067573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108b9190611ba2565b9050806000036110c7576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000906110d78784611bbb565b6110e19190611bd2565b9296929550919350505050565b73ffffffffffffffffffffffffffffffffffffffff831661113b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611188576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611244576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611291576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040902054818110156112f1576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112fb8282611997565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260036020526040808220939093559085168152908120805484929061133e908490611bd2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113a491815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff82166113ff576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260409020548181101561145f576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114698282611997565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260036020526040812091909155600580548492906114a4908490611997565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016111ea565b73ffffffffffffffffffffffffffffffffffffffff8216611541576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008282546115539190611bd2565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805483929061158d908490611bd2565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561160a576020818501810151868301820152016115ee565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061165b60208301846115e4565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461168457600080fd5b50565b6000806040838503121561169a57600080fd5b82356116a581611662565b946020939093013593505050565b6000806000606084860312156116c857600080fd5b83356116d381611662565b925060208401356116e381611662565b929592945050506040919091013590565b60006020828403121561170657600080fd5b5035919050565b60006020828403121561171f57600080fd5b813561165b81611662565b6020810160038310611765577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff8411156117b5576117b561176b565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff821117156118025761180261176b565b60405283815290508082840185101561181a57600080fd5b83836020830137600060208583010152509392505050565b60006020828403121561184457600080fd5b813567ffffffffffffffff81111561185b57600080fd5b8201601f8101841361186c57600080fd5b61187b8482356020840161179a565b949350505050565b6000806040838503121561189657600080fd5b823567ffffffffffffffff8111156118ad57600080fd5b8301601f810185136118be57600080fd5b6118cd8582356020840161179a565b95602094909401359450505050565b600080604083850312156118ef57600080fd5b82356118fa81611662565b9150602083013561190a81611662565b809150509250929050565b600181811c9082168061192957607f821691505b602082108103611962577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561055d5761055d611968565b6040815260006119bd60408301856115e4565b90508260208301529392505050565b601f821115611a1657806000526020600020601f840160051c810160208510156119f35750805b601f840160051c820191505b81811015611a1357600081556001016119ff565b50505b505050565b815167ffffffffffffffff811115611a3557611a3561176b565b611a4981611a438454611915565b846119cc565b6020601f821160018114611a9b5760008315611a655750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611a13565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015611ae95787850151825560209485019460019092019101611ac9565b5084821015611b2557868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b600060208284031215611b4657600080fd5b8151801515811461165b57600080fd5b608081526000611b6960808301876115e4565b6020830195909552506040810192909252606090910152919050565b600060208284031215611b9757600080fd5b815161165b81611662565b600060208284031215611bb457600080fd5b5051919050565b808202811582820484141761055d5761055d611968565b8082018082111561055d5761055d61196856fea26469706673582212202a06c5d72036d88c206ff2bfdd016b3ce8555bc0090e8bb5487bc61ea043732b64736f6c634300081a0033"; type ZRC20ConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/Zeta.non-eth.sol/ZetaNonEth__factory.ts b/v2/types/factories/Zeta.non-eth.sol/ZetaNonEth__factory.ts index 9677f67ba..4363a1a73 100644 --- a/v2/types/factories/Zeta.non-eth.sol/ZetaNonEth__factory.ts +++ b/v2/types/factories/Zeta.non-eth.sol/ZetaNonEth__factory.ts @@ -620,7 +620,7 @@ const _abi = [ ] as const; const _bytecode = - "0x608060405234801561001057600080fd5b506040516112a63803806112a683398101604081905261002f91610110565b604051806040016040528060048152602001635a65746160e01b815250604051806040016040528060048152602001635a45544160e01b815250816003908161007891906101e2565b50600461008582826101e2565b5050506001600160a01b03821615806100a557506001600160a01b038116155b156100c35760405163e6c4247b60e01b815260040160405180910390fd5b600680546001600160a01b039384166001600160a01b031991821617909155600780549290931691161790556102a0565b80516001600160a01b038116811461010b57600080fd5b919050565b6000806040838503121561012357600080fd5b61012c836100f4565b915061013a602084016100f4565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061016d57607f821691505b60208210810361018d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101dd57806000526020600020601f840160051c810160208510156101ba5750805b601f840160051c820191505b818110156101da57600081556001016101c6565b50505b505050565b81516001600160401b038111156101fb576101fb610143565b61020f816102098454610159565b84610193565b6020601f821160018114610243576000831561022b5750848201515b600019600385901b1c1916600184901b1784556101da565b600084815260208120601f198516915b828110156102735787850151825560209485019460019092019101610253565b50848210156102915786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610ff7806102af6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806342966c68116100b257806379cc679011610081578063a9059cbb11610066578063a9059cbb1461028e578063bff9662a146102a1578063dd62ed3e146102c157600080fd5b806379cc67901461027357806395d89b411461028657600080fd5b806342966c68146102025780635b1125911461021557806370a0823114610235578063779e3b631461026b57600080fd5b80631e458bee116100ee5780631e458bee1461018857806323b872dd1461019b578063313ce567146101ae578063328a01d0146101bd57600080fd5b806306fdde0314610120578063095ea7b31461013e57806315d57fd41461016157806318160ddd14610176575b600080fd5b610128610307565b6040516101359190610d97565b60405180910390f35b61015161014c366004610e2c565b610399565b6040519015158152602001610135565b61017461016f366004610e56565b6103b3565b005b6002545b604051908152602001610135565b610174610196366004610e89565b61057e565b6101516101a9366004610ebc565b610631565b60405160128152602001610135565b6007546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610135565b610174610210366004610ef9565b610655565b6006546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a610243366004610f12565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b610174610662565b610174610281366004610e2c565b610786565b610128610837565b61015161029c366004610e2c565b610846565b6005546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a6102cf366004610e56565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461031690610f34565b80601f016020809104026020016040519081016040528092919081815260200182805461034290610f34565b801561038f5780601f106103645761010080835404028352916020019161038f565b820191906000526020600020905b81548152906001019060200180831161037257829003601f168201915b5050505050905090565b6000336103a7818585610854565b60019150505b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff1633148015906103f3575060065473ffffffffffffffffffffffffffffffffffffffff163314155b15610431576040517fcdfcef970000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82161580610468575073ffffffffffffffffffffffffffffffffffffffff8116155b1561049f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006805473ffffffffffffffffffffffffffffffffffffffff8481167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316811790935560058054918516919092161790556040805133815260208101929092527fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff910160405180910390a16040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f1b9352454524a57a51f24f67dc66d898f616922cd1f7a12d73570ece12b1975c910160405180910390a15050565b60055473ffffffffffffffffffffffffffffffffffffffff1633146105d1576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6105db8383610866565b808373ffffffffffffffffffffffffffffffffffffffff167fc263b302aec62d29105026245f19e16f8e0137066ccd4a8bd941f716bd4096bb8460405161062491815260200190565b60405180910390a3505050565b60003361063f8582856108c6565b61064a858585610995565b506001949350505050565b61065f3382610a40565b50565b60075473ffffffffffffffffffffffffffffffffffffffff1633146106b5576040517fe700765e000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b60065473ffffffffffffffffffffffffffffffffffffffff16610704576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0910160405180910390a1565b60055473ffffffffffffffffffffffffffffffffffffffff1633146107d9576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6107e38282610a9c565b8173ffffffffffffffffffffffffffffffffffffffff167f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b18260405161082b91815260200190565b60405180910390a25050565b60606004805461031690610f34565b6000336103a7818585610995565b6108618383836001610ab1565b505050565b73ffffffffffffffffffffffffffffffffffffffff82166108b6576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c260008383610bf9565b5050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461098f5781811015610980576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401610428565b61098f84848484036000610ab1565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166109e5576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8216610a35576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b610861838383610bf9565b73ffffffffffffffffffffffffffffffffffffffff8216610a90576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c282600083610bf9565b610aa78233836108c6565b6108c28282610a40565b73ffffffffffffffffffffffffffffffffffffffff8416610b01576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8316610b51576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160209081526040808320938716835292905220829055801561098f578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610beb91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8316610c31578060026000828254610c269190610f87565b90915550610ce39050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610cb7576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810182905260448101839052606401610428565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff8216610d0c57600280548290039055610d38565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161062491815260200190565b602081526000825180602084015260005b81811015610dc55760208186018101516040868401015201610da8565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e2757600080fd5b919050565b60008060408385031215610e3f57600080fd5b610e4883610e03565b946020939093013593505050565b60008060408385031215610e6957600080fd5b610e7283610e03565b9150610e8060208401610e03565b90509250929050565b600080600060608486031215610e9e57600080fd5b610ea784610e03565b95602085013595506040909401359392505050565b600080600060608486031215610ed157600080fd5b610eda84610e03565b9250610ee860208501610e03565b929592945050506040919091013590565b600060208284031215610f0b57600080fd5b5035919050565b600060208284031215610f2457600080fd5b610f2d82610e03565b9392505050565b600181811c90821680610f4857607f821691505b602082108103610f81577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156103ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea264697066735822122001ec0ce060384773f3d3389fab7bed652c6b8ee389a7471cce10d00d87a75a0c64736f6c634300081a0033"; + "0x608060405234801561001057600080fd5b506040516112a63803806112a683398101604081905261002f91610110565b604051806040016040528060048152602001635a65746160e01b815250604051806040016040528060048152602001635a45544160e01b815250816003908161007891906101e2565b50600461008582826101e2565b5050506001600160a01b03821615806100a557506001600160a01b038116155b156100c35760405163e6c4247b60e01b815260040160405180910390fd5b600680546001600160a01b039384166001600160a01b031991821617909155600780549290931691161790556102a0565b80516001600160a01b038116811461010b57600080fd5b919050565b6000806040838503121561012357600080fd5b61012c836100f4565b915061013a602084016100f4565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061016d57607f821691505b60208210810361018d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101dd57806000526020600020601f840160051c810160208510156101ba5750805b601f840160051c820191505b818110156101da57600081556001016101c6565b50505b505050565b81516001600160401b038111156101fb576101fb610143565b61020f816102098454610159565b84610193565b6020601f821160018114610243576000831561022b5750848201515b600019600385901b1c1916600184901b1784556101da565b600084815260208120601f198516915b828110156102735787850151825560209485019460019092019101610253565b50848210156102915786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610ff7806102af6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806342966c68116100b257806379cc679011610081578063a9059cbb11610066578063a9059cbb1461028e578063bff9662a146102a1578063dd62ed3e146102c157600080fd5b806379cc67901461027357806395d89b411461028657600080fd5b806342966c68146102025780635b1125911461021557806370a0823114610235578063779e3b631461026b57600080fd5b80631e458bee116100ee5780631e458bee1461018857806323b872dd1461019b578063313ce567146101ae578063328a01d0146101bd57600080fd5b806306fdde0314610120578063095ea7b31461013e57806315d57fd41461016157806318160ddd14610176575b600080fd5b610128610307565b6040516101359190610d97565b60405180910390f35b61015161014c366004610e2c565b610399565b6040519015158152602001610135565b61017461016f366004610e56565b6103b3565b005b6002545b604051908152602001610135565b610174610196366004610e89565b61057e565b6101516101a9366004610ebc565b610631565b60405160128152602001610135565b6007546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610135565b610174610210366004610ef9565b610655565b6006546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a610243366004610f12565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b610174610662565b610174610281366004610e2c565b610786565b610128610837565b61015161029c366004610e2c565b610846565b6005546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a6102cf366004610e56565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461031690610f34565b80601f016020809104026020016040519081016040528092919081815260200182805461034290610f34565b801561038f5780601f106103645761010080835404028352916020019161038f565b820191906000526020600020905b81548152906001019060200180831161037257829003601f168201915b5050505050905090565b6000336103a7818585610854565b60019150505b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff1633148015906103f3575060065473ffffffffffffffffffffffffffffffffffffffff163314155b15610431576040517fcdfcef970000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82161580610468575073ffffffffffffffffffffffffffffffffffffffff8116155b1561049f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006805473ffffffffffffffffffffffffffffffffffffffff8481167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316811790935560058054918516919092161790556040805133815260208101929092527fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff910160405180910390a16040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f1b9352454524a57a51f24f67dc66d898f616922cd1f7a12d73570ece12b1975c910160405180910390a15050565b60055473ffffffffffffffffffffffffffffffffffffffff1633146105d1576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6105db8383610866565b808373ffffffffffffffffffffffffffffffffffffffff167fc263b302aec62d29105026245f19e16f8e0137066ccd4a8bd941f716bd4096bb8460405161062491815260200190565b60405180910390a3505050565b60003361063f8582856108c6565b61064a858585610995565b506001949350505050565b61065f3382610a40565b50565b60075473ffffffffffffffffffffffffffffffffffffffff1633146106b5576040517fe700765e000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b60065473ffffffffffffffffffffffffffffffffffffffff16610704576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0910160405180910390a1565b60055473ffffffffffffffffffffffffffffffffffffffff1633146107d9576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6107e38282610a9c565b8173ffffffffffffffffffffffffffffffffffffffff167f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b18260405161082b91815260200190565b60405180910390a25050565b60606004805461031690610f34565b6000336103a7818585610995565b6108618383836001610ab1565b505050565b73ffffffffffffffffffffffffffffffffffffffff82166108b6576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c260008383610bf9565b5050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461098f5781811015610980576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401610428565b61098f84848484036000610ab1565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166109e5576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8216610a35576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b610861838383610bf9565b73ffffffffffffffffffffffffffffffffffffffff8216610a90576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c282600083610bf9565b610aa78233836108c6565b6108c28282610a40565b73ffffffffffffffffffffffffffffffffffffffff8416610b01576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8316610b51576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160209081526040808320938716835292905220829055801561098f578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610beb91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8316610c31578060026000828254610c269190610f87565b90915550610ce39050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610cb7576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810182905260448101839052606401610428565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff8216610d0c57600280548290039055610d38565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161062491815260200190565b602081526000825180602084015260005b81811015610dc55760208186018101516040868401015201610da8565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e2757600080fd5b919050565b60008060408385031215610e3f57600080fd5b610e4883610e03565b946020939093013593505050565b60008060408385031215610e6957600080fd5b610e7283610e03565b9150610e8060208401610e03565b90509250929050565b600080600060608486031215610e9e57600080fd5b610ea784610e03565b95602085013595506040909401359392505050565b600080600060608486031215610ed157600080fd5b610eda84610e03565b9250610ee860208501610e03565b929592945050506040919091013590565b600060208284031215610f0b57600080fd5b5035919050565b600060208284031215610f2457600080fd5b610f2d82610e03565b9392505050565b600181811c90821680610f4857607f821691505b602082108103610f81577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156103ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220e8a1f6a00b1b9c77fd6d8724e3829463441aaedd6b65190c6dc6c18bcc5810e364736f6c634300081a0033"; type ZetaNonEthConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/ZetaConnectorNativeUpgradeTest__factory.ts b/v2/types/factories/ZetaConnectorNativeUpgradeTest__factory.ts index 5dd012271..719785e2c 100644 --- a/v2/types/factories/ZetaConnectorNativeUpgradeTest__factory.ts +++ b/v2/types/factories/ZetaConnectorNativeUpgradeTest__factory.ts @@ -349,7 +349,7 @@ const _abi = [ internalType: "uint256", }, { - name: "internalSendHash", + name: "", type: "bytes32", internalType: "bytes32", }, @@ -377,7 +377,7 @@ const _abi = [ internalType: "bytes", }, { - name: "internalSendHash", + name: "", type: "bytes32", internalType: "bytes32", }, @@ -405,7 +405,7 @@ const _abi = [ internalType: "bytes", }, { - name: "internalSendHash", + name: "", type: "bytes32", internalType: "bytes32", }, @@ -839,7 +839,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a060405230608052348015601357600080fd5b5060805161248461003d6000396000818161125d01528181611286015261145c01526124846000f3fe6080604052600436106101965760003560e01c80635e3e9fef116100e1578063950837aa1161008a578063ad3cb1cc11610064578063ad3cb1cc146104f2578063d547741f14610548578063e63ab1e914610568578063f8c8765e1461059c57600080fd5b8063950837aa14610489578063a217fddf146104a9578063a783c789146104be57600080fd5b80638456cb59116100bb5780638456cb59146103db57806385f438c1146103f057806391d148541461042457600080fd5b80635e3e9fef1461037b5780636f8728ad1461039b578063743e0c9b146103bb57600080fd5b806336568abe1161014357806352d1902d1161011d57806352d1902d1461030f5780635b112591146103245780635c975abb1461034457600080fd5b806336568abe146102c75780633f4ba83a146102e75780634f1ef286146102fc57600080fd5b806321e093b11161017457806321e093b11461022a578063248a9ca31461024a5780632f2ff15d146102a757600080fd5b806301ffc9a71461019b578063106e6290146101d0578063116191b6146101f2575b600080fd5b3480156101a757600080fd5b506101bb6101b6366004611dea565b6105bc565b60405190151581526020015b60405180910390f35b3480156101dc57600080fd5b506101f06101eb366004611e48565b610655565b005b3480156101fe57600080fd5b50600054610212906001600160a01b031681565b6040516001600160a01b0390911681526020016101c7565b34801561023657600080fd5b50600154610212906001600160a01b031681565b34801561025657600080fd5b50610299610265366004611e7b565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101c7565b3480156102b357600080fd5b506101f06102c2366004611e94565b610718565b3480156102d357600080fd5b506101f06102e2366004611e94565b610762565b3480156102f357600080fd5b506101f06107ae565b6101f061030a366004611eef565b6107e3565b34801561031b57600080fd5b50610299610802565b34801561033057600080fd5b50600254610212906001600160a01b031681565b34801561035057600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101bb565b34801561038757600080fd5b506101f061039636600461203f565b610831565b3480156103a757600080fd5b506101f06103b63660046120a1565b610985565b3480156103c757600080fd5b506101f06103d6366004611e7b565b610ade565b3480156103e757600080fd5b506101f0610afe565b3480156103fc57600080fd5b506102997f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b34801561043057600080fd5b506101bb61043f366004611e94565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561049557600080fd5b506101f06104a4366004612139565b610b30565b3480156104b557600080fd5b50610299600081565b3480156104ca57600080fd5b506102997f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b3480156104fe57600080fd5b5061053b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101c79190612178565b34801561055457600080fd5b506101f0610563366004611e94565b610cc3565b34801561057457600080fd5b506102997f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b3480156105a857600080fd5b506101f06105b73660046121c9565b610d07565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061064f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61065d610e8e565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461068781610f0f565b61068f610f19565b6001546106a6906001600160a01b03168585610f77565b836001600160a01b03167f3e35ef4326151011878c9e8e968a0f3913fe98ca68f72a1e0c2e9be13ffb3ee9846040516106e191815260200190565b60405180910390a25061071360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461075281610f0f565b61075c8383611011565b50505050565b6001600160a01b03811633146107a4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61071382826110fe565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6107d881610f0f565b6107e06111c2565b50565b6107eb611252565b6107f482611322565b6107fe828261132d565b5050565b600061080c611451565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610839610e8e565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461086381610f0f565b61086b610f19565b600054600154610888916001600160a01b03918216911687610f77565b6000546001546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692635131ab59926108dd929116908a908a908a908a90600401612266565b600060405180830381600087803b1580156108f757600080fd5b505af115801561090b573d6000803e3d6000fd5b50505050856001600160a01b03167f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d86868660405161094c939291906122a9565b60405180910390a25061097e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b61098d610e8e565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46109b781610f0f565b6109bf610f19565b6000546001546109dc916001600160a01b03918216911688610f77565b6000546001546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526001600160a01b039283169263aa0c0fc192610a33929116908b908b908b908b908a90600401612374565b600060405180830381600087803b158015610a4d57600080fd5b505af1158015610a61573d6000803e3d6000fd5b50505050866001600160a01b03167f5272d2fee39bff41b2e763562526315906046373ce08a7bacf76c3080d731ff087878786604051610aa494939291906123cb565b60405180910390a250610ad660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b610ae6610f19565b6001546107e0906001600160a01b03163330846114b3565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610b2881610f0f565b6107e06114ec565b6000610b3b81610f0f565b6001600160a01b038216610b7b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254610bb2907f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4906001600160a01b03166110fe565b50600254610bea907f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb906001600160a01b03166110fe565b50610c157f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483611011565b50610c407f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb83611011565b50600254604080516001600160a01b03928316815291841660208301527f33770ab682353c17917ad3e667f05905fc8dda00671ef1ed33bef9bc8db0323e910160405180910390a150600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610cfd81610f0f565b61075c83836110fe565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610d525750825b905060008267ffffffffffffffff166001148015610d6f5750303b155b905081158015610d7d575080155b15610db4576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610e155784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610e2189898989611565565b8315610e835784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b505050505050505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01610f09576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6107e08133611870565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615610f75576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040516001600160a01b0383811660248301526044820183905261071391859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506118fd565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166110f4576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556110aa3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061064f565b600091505061064f565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156110f4576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061064f565b6111ca611979565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806112eb57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166112df7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610f75576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006107fe81610f0f565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156113a5575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526113a2918101906123f7565b60015b6113eb576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611447576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016113e2565b61071383836119d4565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f75576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040516001600160a01b03848116602483015283811660448301526064820183905261075c9186918216906323b872dd90608401610fa4565b6114f4610f19565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611234565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156115b05750825b905060008267ffffffffffffffff1660011480156115cd5750303b155b9050811580156115db575080155b15611612576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156116735784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038916158061169057506001600160a01b038816155b806116a257506001600160a01b038716155b806116b457506001600160a01b038616155b156116eb576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116f3611a2a565b6116fb611a32565b611703611a2a565b61170b611a42565b600080546001600160a01b03808c167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316178355600180548c831690841617905560028054918b16919092161790556117669087611011565b506117917f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e488611011565b506117bc7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb88611011565b506117e77f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611011565b506118127f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a88611011565b508315610e835784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001610e7a565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166107fe576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016113e2565b60006119126001600160a01b03841683611a52565b905080516000141580156119375750808060200190518101906119359190612410565b155b15610713576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016113e2565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610f75576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119dd82611a67565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611a22576107138282611b0f565b6107fe611b85565b610f75611bbd565b611a3a611bbd565b610f75611c24565b611a4a611bbd565b610f75611c2c565b6060611a6083836000611c7d565b9392505050565b806001600160a01b03163b600003611ab6576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016113e2565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611b2c9190612432565b600060405180830381855af49150503d8060008114611b67576040519150601f19603f3d011682016040523d82523d6000602084013e611b6c565b606091505b5091509150611b7c858383611d33565b95945050505050565b3415610f75576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610f75576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610feb611bbd565b611c34611bbd565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b606081471015611cbb576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016113e2565b600080856001600160a01b03168486604051611cd79190612432565b60006040518083038185875af1925050503d8060008114611d14576040519150601f19603f3d011682016040523d82523d6000602084013e611d19565b606091505b5091509150611d29868383611d33565b9695505050505050565b606082611d4857611d4382611da8565b611a60565b8151158015611d5f57506001600160a01b0384163b155b15611da1576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016113e2565b5080611a60565b805115611db85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215611dfc57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611a6057600080fd5b80356001600160a01b0381168114611e4357600080fd5b919050565b600080600060608486031215611e5d57600080fd5b611e6684611e2c565b95602085013595506040909401359392505050565b600060208284031215611e8d57600080fd5b5035919050565b60008060408385031215611ea757600080fd5b82359150611eb760208401611e2c565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215611f0257600080fd5b611f0b83611e2c565b9150602083013567ffffffffffffffff811115611f2757600080fd5b8301601f81018513611f3857600080fd5b803567ffffffffffffffff811115611f5257611f52611ec0565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715611fbe57611fbe611ec0565b604052818152828201602001871015611fd657600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008083601f84011261200857600080fd5b50813567ffffffffffffffff81111561202057600080fd5b60208301915083602082850101111561203857600080fd5b9250929050565b60008060008060006080868803121561205757600080fd5b61206086611e2c565b945060208601359350604086013567ffffffffffffffff81111561208357600080fd5b61208f88828901611ff6565b96999598509660600135949350505050565b60008060008060008060a087890312156120ba57600080fd5b6120c387611e2c565b955060208701359450604087013567ffffffffffffffff8111156120e657600080fd5b6120f289828a01611ff6565b90955093505060608701359150608087013567ffffffffffffffff81111561211957600080fd5b87016080818a03121561212b57600080fd5b809150509295509295509295565b60006020828403121561214b57600080fd5b611a6082611e2c565b60005b8381101561216f578181015183820152602001612157565b50506000910152565b6020815260008251806020840152612197816040850160208701612154565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b600080600080608085870312156121df57600080fd5b6121e885611e2c565b93506121f660208601611e2c565b925061220460408601611e2c565b915061221260608601611e2c565b905092959194509250565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015260806060820152600061229e60808301848661221d565b979650505050505050565b838152604060208201526000611b7c60408301848661221d565b6001600160a01b036122d482611e2c565b1682526001600160a01b036122eb60208301611e2c565b1660208301526040818101359083015260006060820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe101811261233357600080fd5b820160208101903567ffffffffffffffff81111561235057600080fd5b80360382131561235f57600080fd5b60806060860152611b7c60808601828461221d565b6001600160a01b03871681526001600160a01b038616602082015284604082015260a0606082015260006123ac60a08301858761221d565b82810360808401526123be81856122c3565b9998505050505050505050565b8481526060602082015260006123e560608301858761221d565b828103604084015261229e81856122c3565b60006020828403121561240957600080fd5b5051919050565b60006020828403121561242257600080fd5b81518015158114611a6057600080fd5b60008251612444818460208701612154565b919091019291505056fea26469706673582212202ccda6cf938103cf9360372c0fa3e0ebb32685301499dc22c9161d7f6bd7f3a664736f6c634300081a0033"; + "0x60a060405230608052348015601357600080fd5b5060805161248461003d6000396000818161125d01528181611286015261145c01526124846000f3fe6080604052600436106101965760003560e01c80635e3e9fef116100e1578063950837aa1161008a578063ad3cb1cc11610064578063ad3cb1cc146104f2578063d547741f14610548578063e63ab1e914610568578063f8c8765e1461059c57600080fd5b8063950837aa14610489578063a217fddf146104a9578063a783c789146104be57600080fd5b80638456cb59116100bb5780638456cb59146103db57806385f438c1146103f057806391d148541461042457600080fd5b80635e3e9fef1461037b5780636f8728ad1461039b578063743e0c9b146103bb57600080fd5b806336568abe1161014357806352d1902d1161011d57806352d1902d1461030f5780635b112591146103245780635c975abb1461034457600080fd5b806336568abe146102c75780633f4ba83a146102e75780634f1ef286146102fc57600080fd5b806321e093b11161017457806321e093b11461022a578063248a9ca31461024a5780632f2ff15d146102a757600080fd5b806301ffc9a71461019b578063106e6290146101d0578063116191b6146101f2575b600080fd5b3480156101a757600080fd5b506101bb6101b6366004611dea565b6105bc565b60405190151581526020015b60405180910390f35b3480156101dc57600080fd5b506101f06101eb366004611e48565b610655565b005b3480156101fe57600080fd5b50600054610212906001600160a01b031681565b6040516001600160a01b0390911681526020016101c7565b34801561023657600080fd5b50600154610212906001600160a01b031681565b34801561025657600080fd5b50610299610265366004611e7b565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101c7565b3480156102b357600080fd5b506101f06102c2366004611e94565b610718565b3480156102d357600080fd5b506101f06102e2366004611e94565b610762565b3480156102f357600080fd5b506101f06107ae565b6101f061030a366004611eef565b6107e3565b34801561031b57600080fd5b50610299610802565b34801561033057600080fd5b50600254610212906001600160a01b031681565b34801561035057600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101bb565b34801561038757600080fd5b506101f061039636600461203f565b610831565b3480156103a757600080fd5b506101f06103b63660046120a1565b610985565b3480156103c757600080fd5b506101f06103d6366004611e7b565b610ade565b3480156103e757600080fd5b506101f0610afe565b3480156103fc57600080fd5b506102997f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b34801561043057600080fd5b506101bb61043f366004611e94565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561049557600080fd5b506101f06104a4366004612139565b610b30565b3480156104b557600080fd5b50610299600081565b3480156104ca57600080fd5b506102997f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b3480156104fe57600080fd5b5061053b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101c79190612178565b34801561055457600080fd5b506101f0610563366004611e94565b610cc3565b34801561057457600080fd5b506102997f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b3480156105a857600080fd5b506101f06105b73660046121c9565b610d07565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061064f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61065d610e8e565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461068781610f0f565b61068f610f19565b6001546106a6906001600160a01b03168585610f77565b836001600160a01b03167f3e35ef4326151011878c9e8e968a0f3913fe98ca68f72a1e0c2e9be13ffb3ee9846040516106e191815260200190565b60405180910390a25061071360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461075281610f0f565b61075c8383611011565b50505050565b6001600160a01b03811633146107a4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61071382826110fe565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6107d881610f0f565b6107e06111c2565b50565b6107eb611252565b6107f482611322565b6107fe828261132d565b5050565b600061080c611451565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610839610e8e565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461086381610f0f565b61086b610f19565b600054600154610888916001600160a01b03918216911687610f77565b6000546001546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692635131ab59926108dd929116908a908a908a908a90600401612266565b600060405180830381600087803b1580156108f757600080fd5b505af115801561090b573d6000803e3d6000fd5b50505050856001600160a01b03167f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d86868660405161094c939291906122a9565b60405180910390a25061097e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b61098d610e8e565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46109b781610f0f565b6109bf610f19565b6000546001546109dc916001600160a01b03918216911688610f77565b6000546001546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526001600160a01b039283169263aa0c0fc192610a33929116908b908b908b908b908a90600401612374565b600060405180830381600087803b158015610a4d57600080fd5b505af1158015610a61573d6000803e3d6000fd5b50505050866001600160a01b03167f5272d2fee39bff41b2e763562526315906046373ce08a7bacf76c3080d731ff087878786604051610aa494939291906123cb565b60405180910390a250610ad660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b610ae6610f19565b6001546107e0906001600160a01b03163330846114b3565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610b2881610f0f565b6107e06114ec565b6000610b3b81610f0f565b6001600160a01b038216610b7b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254610bb2907f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4906001600160a01b03166110fe565b50600254610bea907f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb906001600160a01b03166110fe565b50610c157f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483611011565b50610c407f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb83611011565b50600254604080516001600160a01b03928316815291841660208301527f33770ab682353c17917ad3e667f05905fc8dda00671ef1ed33bef9bc8db0323e910160405180910390a150600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610cfd81610f0f565b61075c83836110fe565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610d525750825b905060008267ffffffffffffffff166001148015610d6f5750303b155b905081158015610d7d575080155b15610db4576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610e155784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610e2189898989611565565b8315610e835784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b505050505050505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01610f09576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6107e08133611870565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615610f75576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040516001600160a01b0383811660248301526044820183905261071391859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506118fd565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166110f4576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556110aa3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061064f565b600091505061064f565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156110f4576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061064f565b6111ca611979565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806112eb57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166112df7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610f75576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006107fe81610f0f565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156113a5575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526113a2918101906123f7565b60015b6113eb576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611447576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016113e2565b61071383836119d4565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f75576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040516001600160a01b03848116602483015283811660448301526064820183905261075c9186918216906323b872dd90608401610fa4565b6114f4610f19565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611234565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156115b05750825b905060008267ffffffffffffffff1660011480156115cd5750303b155b9050811580156115db575080155b15611612576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156116735784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038916158061169057506001600160a01b038816155b806116a257506001600160a01b038716155b806116b457506001600160a01b038616155b156116eb576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116f3611a2a565b6116fb611a32565b611703611a2a565b61170b611a42565b600080546001600160a01b03808c167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316178355600180548c831690841617905560028054918b16919092161790556117669087611011565b506117917f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e488611011565b506117bc7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb88611011565b506117e77f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611011565b506118127f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a88611011565b508315610e835784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001610e7a565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166107fe576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016113e2565b60006119126001600160a01b03841683611a52565b905080516000141580156119375750808060200190518101906119359190612410565b155b15610713576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016113e2565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610f75576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119dd82611a67565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611a22576107138282611b0f565b6107fe611b85565b610f75611bbd565b611a3a611bbd565b610f75611c24565b611a4a611bbd565b610f75611c2c565b6060611a6083836000611c7d565b9392505050565b806001600160a01b03163b600003611ab6576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016113e2565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611b2c9190612432565b600060405180830381855af49150503d8060008114611b67576040519150601f19603f3d011682016040523d82523d6000602084013e611b6c565b606091505b5091509150611b7c858383611d33565b95945050505050565b3415610f75576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610f75576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610feb611bbd565b611c34611bbd565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b606081471015611cbb576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016113e2565b600080856001600160a01b03168486604051611cd79190612432565b60006040518083038185875af1925050503d8060008114611d14576040519150601f19603f3d011682016040523d82523d6000602084013e611d19565b606091505b5091509150611d29868383611d33565b9695505050505050565b606082611d4857611d4382611da8565b611a60565b8151158015611d5f57506001600160a01b0384163b155b15611da1576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016113e2565b5080611a60565b805115611db85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215611dfc57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611a6057600080fd5b80356001600160a01b0381168114611e4357600080fd5b919050565b600080600060608486031215611e5d57600080fd5b611e6684611e2c565b95602085013595506040909401359392505050565b600060208284031215611e8d57600080fd5b5035919050565b60008060408385031215611ea757600080fd5b82359150611eb760208401611e2c565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215611f0257600080fd5b611f0b83611e2c565b9150602083013567ffffffffffffffff811115611f2757600080fd5b8301601f81018513611f3857600080fd5b803567ffffffffffffffff811115611f5257611f52611ec0565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715611fbe57611fbe611ec0565b604052818152828201602001871015611fd657600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008083601f84011261200857600080fd5b50813567ffffffffffffffff81111561202057600080fd5b60208301915083602082850101111561203857600080fd5b9250929050565b60008060008060006080868803121561205757600080fd5b61206086611e2c565b945060208601359350604086013567ffffffffffffffff81111561208357600080fd5b61208f88828901611ff6565b96999598509660600135949350505050565b60008060008060008060a087890312156120ba57600080fd5b6120c387611e2c565b955060208701359450604087013567ffffffffffffffff8111156120e657600080fd5b6120f289828a01611ff6565b90955093505060608701359150608087013567ffffffffffffffff81111561211957600080fd5b87016080818a03121561212b57600080fd5b809150509295509295509295565b60006020828403121561214b57600080fd5b611a6082611e2c565b60005b8381101561216f578181015183820152602001612157565b50506000910152565b6020815260008251806020840152612197816040850160208701612154565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b600080600080608085870312156121df57600080fd5b6121e885611e2c565b93506121f660208601611e2c565b925061220460408601611e2c565b915061221260608601611e2c565b905092959194509250565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015260806060820152600061229e60808301848661221d565b979650505050505050565b838152604060208201526000611b7c60408301848661221d565b6001600160a01b036122d482611e2c565b1682526001600160a01b036122eb60208301611e2c565b1660208301526040818101359083015260006060820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe101811261233357600080fd5b820160208101903567ffffffffffffffff81111561235057600080fd5b80360382131561235f57600080fd5b60806060860152611b7c60808601828461221d565b6001600160a01b03871681526001600160a01b038616602082015284604082015260a0606082015260006123ac60a08301858761221d565b82810360808401526123be81856122c3565b9998505050505050505050565b8481526060602082015260006123e560608301858761221d565b828103604084015261229e81856122c3565b60006020828403121561240957600080fd5b5051919050565b60006020828403121561242257600080fd5b81518015158114611a6057600080fd5b60008251612444818460208701612154565b919091019291505056fea26469706673582212205647c42df80872546deb9db473500b1f5e2ea026ed8139f845cd3cf3f6b459f764736f6c634300081a0033"; type ZetaConnectorNativeUpgradeTestConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/ZetaConnectorNative__factory.ts b/v2/types/factories/ZetaConnectorNative__factory.ts index 0f6c94b57..9a3f85c96 100644 --- a/v2/types/factories/ZetaConnectorNative__factory.ts +++ b/v2/types/factories/ZetaConnectorNative__factory.ts @@ -349,7 +349,7 @@ const _abi = [ internalType: "uint256", }, { - name: "internalSendHash", + name: "", type: "bytes32", internalType: "bytes32", }, @@ -377,7 +377,7 @@ const _abi = [ internalType: "bytes", }, { - name: "internalSendHash", + name: "", type: "bytes32", internalType: "bytes32", }, @@ -405,7 +405,7 @@ const _abi = [ internalType: "bytes", }, { - name: "internalSendHash", + name: "", type: "bytes32", internalType: "bytes32", }, @@ -820,7 +820,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a060405230608052348015601357600080fd5b5060805161248461003d6000396000818161125d01528181611286015261145c01526124846000f3fe6080604052600436106101965760003560e01c80635e3e9fef116100e1578063950837aa1161008a578063ad3cb1cc11610064578063ad3cb1cc146104f2578063d547741f14610548578063e63ab1e914610568578063f8c8765e1461059c57600080fd5b8063950837aa14610489578063a217fddf146104a9578063a783c789146104be57600080fd5b80638456cb59116100bb5780638456cb59146103db57806385f438c1146103f057806391d148541461042457600080fd5b80635e3e9fef1461037b5780636f8728ad1461039b578063743e0c9b146103bb57600080fd5b806336568abe1161014357806352d1902d1161011d57806352d1902d1461030f5780635b112591146103245780635c975abb1461034457600080fd5b806336568abe146102c75780633f4ba83a146102e75780634f1ef286146102fc57600080fd5b806321e093b11161017457806321e093b11461022a578063248a9ca31461024a5780632f2ff15d146102a757600080fd5b806301ffc9a71461019b578063106e6290146101d0578063116191b6146101f2575b600080fd5b3480156101a757600080fd5b506101bb6101b6366004611dea565b6105bc565b60405190151581526020015b60405180910390f35b3480156101dc57600080fd5b506101f06101eb366004611e48565b610655565b005b3480156101fe57600080fd5b50600054610212906001600160a01b031681565b6040516001600160a01b0390911681526020016101c7565b34801561023657600080fd5b50600154610212906001600160a01b031681565b34801561025657600080fd5b50610299610265366004611e7b565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101c7565b3480156102b357600080fd5b506101f06102c2366004611e94565b610718565b3480156102d357600080fd5b506101f06102e2366004611e94565b610762565b3480156102f357600080fd5b506101f06107ae565b6101f061030a366004611eef565b6107e3565b34801561031b57600080fd5b50610299610802565b34801561033057600080fd5b50600254610212906001600160a01b031681565b34801561035057600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101bb565b34801561038757600080fd5b506101f061039636600461203f565b610831565b3480156103a757600080fd5b506101f06103b63660046120a1565b610985565b3480156103c757600080fd5b506101f06103d6366004611e7b565b610ade565b3480156103e757600080fd5b506101f0610afe565b3480156103fc57600080fd5b506102997f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b34801561043057600080fd5b506101bb61043f366004611e94565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561049557600080fd5b506101f06104a4366004612139565b610b30565b3480156104b557600080fd5b50610299600081565b3480156104ca57600080fd5b506102997f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b3480156104fe57600080fd5b5061053b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101c79190612178565b34801561055457600080fd5b506101f0610563366004611e94565b610cc3565b34801561057457600080fd5b506102997f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b3480156105a857600080fd5b506101f06105b73660046121c9565b610d07565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061064f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61065d610e8e565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461068781610f0f565b61068f610f19565b6001546106a6906001600160a01b03168585610f77565b836001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5846040516106e191815260200190565b60405180910390a25061071360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461075281610f0f565b61075c8383611011565b50505050565b6001600160a01b03811633146107a4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61071382826110fe565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6107d881610f0f565b6107e06111c2565b50565b6107eb611252565b6107f482611322565b6107fe828261132d565b5050565b600061080c611451565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610839610e8e565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461086381610f0f565b61086b610f19565b600054600154610888916001600160a01b03918216911687610f77565b6000546001546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692635131ab59926108dd929116908a908a908a908a90600401612266565b600060405180830381600087803b1580156108f757600080fd5b505af115801561090b573d6000803e3d6000fd5b50505050856001600160a01b03167f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d86868660405161094c939291906122a9565b60405180910390a25061097e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b61098d610e8e565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46109b781610f0f565b6109bf610f19565b6000546001546109dc916001600160a01b03918216911688610f77565b6000546001546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526001600160a01b039283169263aa0c0fc192610a33929116908b908b908b908b908a90600401612374565b600060405180830381600087803b158015610a4d57600080fd5b505af1158015610a61573d6000803e3d6000fd5b50505050866001600160a01b03167f5272d2fee39bff41b2e763562526315906046373ce08a7bacf76c3080d731ff087878786604051610aa494939291906123cb565b60405180910390a250610ad660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b610ae6610f19565b6001546107e0906001600160a01b03163330846114b3565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610b2881610f0f565b6107e06114ec565b6000610b3b81610f0f565b6001600160a01b038216610b7b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254610bb2907f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4906001600160a01b03166110fe565b50600254610bea907f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb906001600160a01b03166110fe565b50610c157f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483611011565b50610c407f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb83611011565b50600254604080516001600160a01b03928316815291841660208301527f33770ab682353c17917ad3e667f05905fc8dda00671ef1ed33bef9bc8db0323e910160405180910390a150600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610cfd81610f0f565b61075c83836110fe565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610d525750825b905060008267ffffffffffffffff166001148015610d6f5750303b155b905081158015610d7d575080155b15610db4576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610e155784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610e2189898989611565565b8315610e835784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b505050505050505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01610f09576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6107e08133611870565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615610f75576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040516001600160a01b0383811660248301526044820183905261071391859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506118fd565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166110f4576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556110aa3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061064f565b600091505061064f565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156110f4576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061064f565b6111ca611979565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806112eb57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166112df7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610f75576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006107fe81610f0f565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156113a5575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526113a2918101906123f7565b60015b6113eb576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611447576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016113e2565b61071383836119d4565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f75576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040516001600160a01b03848116602483015283811660448301526064820183905261075c9186918216906323b872dd90608401610fa4565b6114f4610f19565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611234565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156115b05750825b905060008267ffffffffffffffff1660011480156115cd5750303b155b9050811580156115db575080155b15611612576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156116735784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038916158061169057506001600160a01b038816155b806116a257506001600160a01b038716155b806116b457506001600160a01b038616155b156116eb576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116f3611a2a565b6116fb611a32565b611703611a2a565b61170b611a42565b600080546001600160a01b03808c167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316178355600180548c831690841617905560028054918b16919092161790556117669087611011565b506117917f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e488611011565b506117bc7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb88611011565b506117e77f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611011565b506118127f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a88611011565b508315610e835784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001610e7a565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166107fe576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016113e2565b60006119126001600160a01b03841683611a52565b905080516000141580156119375750808060200190518101906119359190612410565b155b15610713576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016113e2565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610f75576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119dd82611a67565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611a22576107138282611b0f565b6107fe611b85565b610f75611bbd565b611a3a611bbd565b610f75611c24565b611a4a611bbd565b610f75611c2c565b6060611a6083836000611c7d565b9392505050565b806001600160a01b03163b600003611ab6576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016113e2565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611b2c9190612432565b600060405180830381855af49150503d8060008114611b67576040519150601f19603f3d011682016040523d82523d6000602084013e611b6c565b606091505b5091509150611b7c858383611d33565b95945050505050565b3415610f75576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610f75576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610feb611bbd565b611c34611bbd565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b606081471015611cbb576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016113e2565b600080856001600160a01b03168486604051611cd79190612432565b60006040518083038185875af1925050503d8060008114611d14576040519150601f19603f3d011682016040523d82523d6000602084013e611d19565b606091505b5091509150611d29868383611d33565b9695505050505050565b606082611d4857611d4382611da8565b611a60565b8151158015611d5f57506001600160a01b0384163b155b15611da1576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016113e2565b5080611a60565b805115611db85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215611dfc57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611a6057600080fd5b80356001600160a01b0381168114611e4357600080fd5b919050565b600080600060608486031215611e5d57600080fd5b611e6684611e2c565b95602085013595506040909401359392505050565b600060208284031215611e8d57600080fd5b5035919050565b60008060408385031215611ea757600080fd5b82359150611eb760208401611e2c565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215611f0257600080fd5b611f0b83611e2c565b9150602083013567ffffffffffffffff811115611f2757600080fd5b8301601f81018513611f3857600080fd5b803567ffffffffffffffff811115611f5257611f52611ec0565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715611fbe57611fbe611ec0565b604052818152828201602001871015611fd657600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008083601f84011261200857600080fd5b50813567ffffffffffffffff81111561202057600080fd5b60208301915083602082850101111561203857600080fd5b9250929050565b60008060008060006080868803121561205757600080fd5b61206086611e2c565b945060208601359350604086013567ffffffffffffffff81111561208357600080fd5b61208f88828901611ff6565b96999598509660600135949350505050565b60008060008060008060a087890312156120ba57600080fd5b6120c387611e2c565b955060208701359450604087013567ffffffffffffffff8111156120e657600080fd5b6120f289828a01611ff6565b90955093505060608701359150608087013567ffffffffffffffff81111561211957600080fd5b87016080818a03121561212b57600080fd5b809150509295509295509295565b60006020828403121561214b57600080fd5b611a6082611e2c565b60005b8381101561216f578181015183820152602001612157565b50506000910152565b6020815260008251806020840152612197816040850160208701612154565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b600080600080608085870312156121df57600080fd5b6121e885611e2c565b93506121f660208601611e2c565b925061220460408601611e2c565b915061221260608601611e2c565b905092959194509250565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015260806060820152600061229e60808301848661221d565b979650505050505050565b838152604060208201526000611b7c60408301848661221d565b6001600160a01b036122d482611e2c565b1682526001600160a01b036122eb60208301611e2c565b1660208301526040818101359083015260006060820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe101811261233357600080fd5b820160208101903567ffffffffffffffff81111561235057600080fd5b80360382131561235f57600080fd5b60806060860152611b7c60808601828461221d565b6001600160a01b03871681526001600160a01b038616602082015284604082015260a0606082015260006123ac60a08301858761221d565b82810360808401526123be81856122c3565b9998505050505050505050565b8481526060602082015260006123e560608301858761221d565b828103604084015261229e81856122c3565b60006020828403121561240957600080fd5b5051919050565b60006020828403121561242257600080fd5b81518015158114611a6057600080fd5b60008251612444818460208701612154565b919091019291505056fea264697066735822122058bc11cc028ce867ac5a6edc7b1fe3e7c1a367c0953fe630938523d2581ba13e64736f6c634300081a0033"; + "0x60a060405230608052348015601357600080fd5b5060805161248461003d6000396000818161125d01528181611286015261145c01526124846000f3fe6080604052600436106101965760003560e01c80635e3e9fef116100e1578063950837aa1161008a578063ad3cb1cc11610064578063ad3cb1cc146104f2578063d547741f14610548578063e63ab1e914610568578063f8c8765e1461059c57600080fd5b8063950837aa14610489578063a217fddf146104a9578063a783c789146104be57600080fd5b80638456cb59116100bb5780638456cb59146103db57806385f438c1146103f057806391d148541461042457600080fd5b80635e3e9fef1461037b5780636f8728ad1461039b578063743e0c9b146103bb57600080fd5b806336568abe1161014357806352d1902d1161011d57806352d1902d1461030f5780635b112591146103245780635c975abb1461034457600080fd5b806336568abe146102c75780633f4ba83a146102e75780634f1ef286146102fc57600080fd5b806321e093b11161017457806321e093b11461022a578063248a9ca31461024a5780632f2ff15d146102a757600080fd5b806301ffc9a71461019b578063106e6290146101d0578063116191b6146101f2575b600080fd5b3480156101a757600080fd5b506101bb6101b6366004611dea565b6105bc565b60405190151581526020015b60405180910390f35b3480156101dc57600080fd5b506101f06101eb366004611e48565b610655565b005b3480156101fe57600080fd5b50600054610212906001600160a01b031681565b6040516001600160a01b0390911681526020016101c7565b34801561023657600080fd5b50600154610212906001600160a01b031681565b34801561025657600080fd5b50610299610265366004611e7b565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101c7565b3480156102b357600080fd5b506101f06102c2366004611e94565b610718565b3480156102d357600080fd5b506101f06102e2366004611e94565b610762565b3480156102f357600080fd5b506101f06107ae565b6101f061030a366004611eef565b6107e3565b34801561031b57600080fd5b50610299610802565b34801561033057600080fd5b50600254610212906001600160a01b031681565b34801561035057600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101bb565b34801561038757600080fd5b506101f061039636600461203f565b610831565b3480156103a757600080fd5b506101f06103b63660046120a1565b610985565b3480156103c757600080fd5b506101f06103d6366004611e7b565b610ade565b3480156103e757600080fd5b506101f0610afe565b3480156103fc57600080fd5b506102997f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b34801561043057600080fd5b506101bb61043f366004611e94565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561049557600080fd5b506101f06104a4366004612139565b610b30565b3480156104b557600080fd5b50610299600081565b3480156104ca57600080fd5b506102997f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b3480156104fe57600080fd5b5061053b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101c79190612178565b34801561055457600080fd5b506101f0610563366004611e94565b610cc3565b34801561057457600080fd5b506102997f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b3480156105a857600080fd5b506101f06105b73660046121c9565b610d07565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061064f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61065d610e8e565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461068781610f0f565b61068f610f19565b6001546106a6906001600160a01b03168585610f77565b836001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5846040516106e191815260200190565b60405180910390a25061071360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461075281610f0f565b61075c8383611011565b50505050565b6001600160a01b03811633146107a4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61071382826110fe565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6107d881610f0f565b6107e06111c2565b50565b6107eb611252565b6107f482611322565b6107fe828261132d565b5050565b600061080c611451565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610839610e8e565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461086381610f0f565b61086b610f19565b600054600154610888916001600160a01b03918216911687610f77565b6000546001546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692635131ab59926108dd929116908a908a908a908a90600401612266565b600060405180830381600087803b1580156108f757600080fd5b505af115801561090b573d6000803e3d6000fd5b50505050856001600160a01b03167f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d86868660405161094c939291906122a9565b60405180910390a25061097e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b61098d610e8e565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46109b781610f0f565b6109bf610f19565b6000546001546109dc916001600160a01b03918216911688610f77565b6000546001546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526001600160a01b039283169263aa0c0fc192610a33929116908b908b908b908b908a90600401612374565b600060405180830381600087803b158015610a4d57600080fd5b505af1158015610a61573d6000803e3d6000fd5b50505050866001600160a01b03167f5272d2fee39bff41b2e763562526315906046373ce08a7bacf76c3080d731ff087878786604051610aa494939291906123cb565b60405180910390a250610ad660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b610ae6610f19565b6001546107e0906001600160a01b03163330846114b3565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610b2881610f0f565b6107e06114ec565b6000610b3b81610f0f565b6001600160a01b038216610b7b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254610bb2907f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4906001600160a01b03166110fe565b50600254610bea907f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb906001600160a01b03166110fe565b50610c157f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483611011565b50610c407f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb83611011565b50600254604080516001600160a01b03928316815291841660208301527f33770ab682353c17917ad3e667f05905fc8dda00671ef1ed33bef9bc8db0323e910160405180910390a150600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610cfd81610f0f565b61075c83836110fe565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610d525750825b905060008267ffffffffffffffff166001148015610d6f5750303b155b905081158015610d7d575080155b15610db4576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610e155784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610e2189898989611565565b8315610e835784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b505050505050505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01610f09576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6107e08133611870565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615610f75576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040516001600160a01b0383811660248301526044820183905261071391859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506118fd565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166110f4576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556110aa3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061064f565b600091505061064f565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156110f4576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061064f565b6111ca611979565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806112eb57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166112df7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610f75576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006107fe81610f0f565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156113a5575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526113a2918101906123f7565b60015b6113eb576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611447576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016113e2565b61071383836119d4565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f75576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040516001600160a01b03848116602483015283811660448301526064820183905261075c9186918216906323b872dd90608401610fa4565b6114f4610f19565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611234565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156115b05750825b905060008267ffffffffffffffff1660011480156115cd5750303b155b9050811580156115db575080155b15611612576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156116735784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038916158061169057506001600160a01b038816155b806116a257506001600160a01b038716155b806116b457506001600160a01b038616155b156116eb576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116f3611a2a565b6116fb611a32565b611703611a2a565b61170b611a42565b600080546001600160a01b03808c167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316178355600180548c831690841617905560028054918b16919092161790556117669087611011565b506117917f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e488611011565b506117bc7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb88611011565b506117e77f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611011565b506118127f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a88611011565b508315610e835784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001610e7a565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166107fe576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016113e2565b60006119126001600160a01b03841683611a52565b905080516000141580156119375750808060200190518101906119359190612410565b155b15610713576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016113e2565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610f75576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119dd82611a67565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611a22576107138282611b0f565b6107fe611b85565b610f75611bbd565b611a3a611bbd565b610f75611c24565b611a4a611bbd565b610f75611c2c565b6060611a6083836000611c7d565b9392505050565b806001600160a01b03163b600003611ab6576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016113e2565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611b2c9190612432565b600060405180830381855af49150503d8060008114611b67576040519150601f19603f3d011682016040523d82523d6000602084013e611b6c565b606091505b5091509150611b7c858383611d33565b95945050505050565b3415610f75576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610f75576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610feb611bbd565b611c34611bbd565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b606081471015611cbb576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016113e2565b600080856001600160a01b03168486604051611cd79190612432565b60006040518083038185875af1925050503d8060008114611d14576040519150601f19603f3d011682016040523d82523d6000602084013e611d19565b606091505b5091509150611d29868383611d33565b9695505050505050565b606082611d4857611d4382611da8565b611a60565b8151158015611d5f57506001600160a01b0384163b155b15611da1576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016113e2565b5080611a60565b805115611db85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215611dfc57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611a6057600080fd5b80356001600160a01b0381168114611e4357600080fd5b919050565b600080600060608486031215611e5d57600080fd5b611e6684611e2c565b95602085013595506040909401359392505050565b600060208284031215611e8d57600080fd5b5035919050565b60008060408385031215611ea757600080fd5b82359150611eb760208401611e2c565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215611f0257600080fd5b611f0b83611e2c565b9150602083013567ffffffffffffffff811115611f2757600080fd5b8301601f81018513611f3857600080fd5b803567ffffffffffffffff811115611f5257611f52611ec0565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715611fbe57611fbe611ec0565b604052818152828201602001871015611fd657600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008083601f84011261200857600080fd5b50813567ffffffffffffffff81111561202057600080fd5b60208301915083602082850101111561203857600080fd5b9250929050565b60008060008060006080868803121561205757600080fd5b61206086611e2c565b945060208601359350604086013567ffffffffffffffff81111561208357600080fd5b61208f88828901611ff6565b96999598509660600135949350505050565b60008060008060008060a087890312156120ba57600080fd5b6120c387611e2c565b955060208701359450604087013567ffffffffffffffff8111156120e657600080fd5b6120f289828a01611ff6565b90955093505060608701359150608087013567ffffffffffffffff81111561211957600080fd5b87016080818a03121561212b57600080fd5b809150509295509295509295565b60006020828403121561214b57600080fd5b611a6082611e2c565b60005b8381101561216f578181015183820152602001612157565b50506000910152565b6020815260008251806020840152612197816040850160208701612154565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b600080600080608085870312156121df57600080fd5b6121e885611e2c565b93506121f660208601611e2c565b925061220460408601611e2c565b915061221260608601611e2c565b905092959194509250565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015260806060820152600061229e60808301848661221d565b979650505050505050565b838152604060208201526000611b7c60408301848661221d565b6001600160a01b036122d482611e2c565b1682526001600160a01b036122eb60208301611e2c565b1660208301526040818101359083015260006060820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe101811261233357600080fd5b820160208101903567ffffffffffffffff81111561235057600080fd5b80360382131561235f57600080fd5b60806060860152611b7c60808601828461221d565b6001600160a01b03871681526001600160a01b038616602082015284604082015260a0606082015260006123ac60a08301858761221d565b82810360808401526123be81856122c3565b9998505050505050505050565b8481526060602082015260006123e560608301858761221d565b828103604084015261229e81856122c3565b60006020828403121561240957600080fd5b5051919050565b60006020828403121561242257600080fd5b81518015158114611a6057600080fd5b60008251612444818460208701612154565b919091019291505056fea26469706673582212201adb39f0b6ab7848ec5c476199d4fd1fa0c035dfd4f2aa61d558d86c854a13ac64736f6c634300081a0033"; type ZetaConnectorNativeConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/ZetaConnectorNonNativeUpgradeTest__factory.ts b/v2/types/factories/ZetaConnectorNonNativeUpgradeTest__factory.ts index e8f05c94b..c40532431 100644 --- a/v2/types/factories/ZetaConnectorNonNativeUpgradeTest__factory.ts +++ b/v2/types/factories/ZetaConnectorNonNativeUpgradeTest__factory.ts @@ -861,7 +861,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a060405230608052348015601357600080fd5b5060805161251961003d6000396000818161145701528181611480015261165601526125196000f3fe6080604052600436106101ac5760003560e01c80636f8728ad116100ec578063a217fddf1161008a578063d547741f11610064578063d547741f1461057e578063d5abeb011461059e578063e63ab1e9146105b4578063f8c8765e146105e857600080fd5b8063a217fddf146104df578063a783c789146104f4578063ad3cb1cc1461052857600080fd5b80638456cb59116100c65780638456cb591461041157806385f438c11461042657806391d148541461045a578063950837aa146104bf57600080fd5b80636f8728ad146103b15780636f8b44b0146103d1578063743e0c9b146103f157600080fd5b806336568abe1161015957806352d1902d1161013357806352d1902d146103255780635b1125911461033a5780635c975abb1461035a5780635e3e9fef1461039157600080fd5b806336568abe146102dd5780633f4ba83a146102fd5780634f1ef2861461031257600080fd5b806321e093b11161018a57806321e093b114610240578063248a9ca3146102605780632f2ff15d146102bd57600080fd5b806301ffc9a7146101b1578063106e6290146101e6578063116191b614610208575b600080fd5b3480156101bd57600080fd5b506101d16101cc366004611e67565b610608565b60405190151581526020015b60405180910390f35b3480156101f257600080fd5b50610206610201366004611ec5565b6106a1565b005b34801561021457600080fd5b50600054610228906001600160a01b031681565b6040516001600160a01b0390911681526020016101dd565b34801561024c57600080fd5b50600154610228906001600160a01b031681565b34801561026c57600080fd5b506102af61027b366004611ef8565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101dd565b3480156102c957600080fd5b506102066102d8366004611f11565b610758565b3480156102e957600080fd5b506102066102f8366004611f11565b6107a2565b34801561030957600080fd5b506102066107ee565b610206610320366004611f6c565b610823565b34801561033157600080fd5b506102af610842565b34801561034657600080fd5b50600254610228906001600160a01b031681565b34801561036657600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101d1565b34801561039d57600080fd5b506102066103ac3660046120bc565b610871565b3480156103bd57600080fd5b506102066103cc36600461211e565b6109bf565b3480156103dd57600080fd5b506102066103ec366004611ef8565b610b12565b3480156103fd57600080fd5b5061020661040c366004611ef8565b610b80565b34801561041d57600080fd5b50610206610c01565b34801561043257600080fd5b506102af7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b34801561046657600080fd5b506101d1610475366004611f11565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156104cb57600080fd5b506102066104da3660046121b6565b610c33565b3480156104eb57600080fd5b506102af600081565b34801561050057600080fd5b506102af7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561053457600080fd5b506105716040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101dd91906121f5565b34801561058a57600080fd5b50610206610599366004611f11565b610dc6565b3480156105aa57600080fd5b506102af60035481565b3480156105c057600080fd5b506102af7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b3480156105f457600080fd5b50610206610603366004612246565b610e0a565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061069b57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6106a9610fb5565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46106d381611036565b6106db611040565b6106e684848461109e565b836001600160a01b03167f3e35ef4326151011878c9e8e968a0f3913fe98ca68f72a1e0c2e9be13ffb3ee98460405161072191815260200190565b60405180910390a25061075360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461079281611036565b61079c838361120b565b50505050565b6001600160a01b03811633146107e4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61075382826112f8565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61081881611036565b6108206113bc565b50565b61082b61144c565b6108348261151c565b61083e8282611527565b5050565b600061084c61164b565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610879610fb5565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46108a381611036565b6108ab611040565b6000546108c2906001600160a01b0316868461109e565b6000546001546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692635131ab5992610917929116908a908a908a908a906004016122e3565b600060405180830381600087803b15801561093157600080fd5b505af1158015610945573d6000803e3d6000fd5b50505050856001600160a01b03167f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d86868660405161098693929190612326565b60405180910390a2506109b860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6109c7610fb5565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46109f181611036565b6109f9611040565b600054610a10906001600160a01b0316878561109e565b6000546001546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526001600160a01b039283169263aa0c0fc192610a67929116908b908b908b908b908a906004016123f1565b600060405180830381600087803b158015610a8157600080fd5b505af1158015610a95573d6000803e3d6000fd5b50505050866001600160a01b03167f5272d2fee39bff41b2e763562526315906046373ce08a7bacf76c3080d731ff087878786604051610ad89493929190612448565b60405180910390a250610b0a60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610b3c81611036565b610b44611040565b60038290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610b88611040565b6001546040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018390526001600160a01b03909116906379cc679090604401600060405180830381600087803b158015610bed57600080fd5b505af11580156109b8573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610c2b81611036565b6108206116ad565b6000610c3e81611036565b6001600160a01b038216610c7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254610cb5907f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4906001600160a01b03166112f8565b50600254610ced907f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb906001600160a01b03166112f8565b50610d187f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48361120b565b50610d437f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb8361120b565b50600254604080516001600160a01b03928316815291841660208301527f33770ab682353c17917ad3e667f05905fc8dda00671ef1ed33bef9bc8db0323e910160405180910390a150600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610e0081611036565b61079c83836112f8565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610e555750825b905060008267ffffffffffffffff166001148015610e725750303b155b905081158015610e80575080155b15610eb7576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610f185784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610f2489898989611726565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6003558315610faa5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b505050505050505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611030576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6108208133611a31565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff161561109c576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600354600160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111189190612474565b611122908461248d565b111561115a576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040517f1e458bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018590526044820184905290911690631e458bee90606401600060405180830381600087803b1580156111c857600080fd5b505af11580156111dc573d6000803e3d6000fd5b50505050505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166112ee576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556112a43390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061069b565b600091505061069b565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156112ee576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061069b565b6113c4611abe565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806114e557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114d97f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b1561109c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061083e81611036565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561159f575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261159c91810190612474565b60015b6115e5576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611641576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016115dc565b6107538383611b19565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461109c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116b5611040565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361142e565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156117715750825b905060008267ffffffffffffffff16600114801561178e5750303b155b90508115801561179c575080155b156117d3576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156118345784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038916158061185157506001600160a01b038816155b8061186357506001600160a01b038716155b8061187557506001600160a01b038616155b156118ac576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118b4611b6f565b6118bc611b77565b6118c4611b6f565b6118cc611b87565b600080546001600160a01b03808c167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316178355600180548c831690841617905560028054918b1691909216179055611927908761120b565b506119527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48861120b565b5061197d7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb8861120b565b506119a87f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8761120b565b506119d37f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8861120b565b508315610faa5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001610fa1565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff1661083e576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016115dc565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1661109c576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b2282611b97565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b67576107538282611c3f565b61083e611cb5565b61109c611ced565b611b7f611ced565b61109c611d54565b611b8f611ced565b61109c611d5c565b806001600160a01b03163b600003611be6576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016115dc565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611c5c91906124c7565b600060405180830381855af49150503d8060008114611c97576040519150601f19603f3d011682016040523d82523d6000602084013e611c9c565b606091505b5091509150611cac858383611dad565b95945050505050565b341561109c576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661109c576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111e5611ced565b611d64611ced565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b606082611dc257611dbd82611e25565b611e1e565b8151158015611dd957506001600160a01b0384163b155b15611e1b576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016115dc565b50805b9392505050565b805115611e355780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215611e7957600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611e1e57600080fd5b80356001600160a01b0381168114611ec057600080fd5b919050565b600080600060608486031215611eda57600080fd5b611ee384611ea9565b95602085013595506040909401359392505050565b600060208284031215611f0a57600080fd5b5035919050565b60008060408385031215611f2457600080fd5b82359150611f3460208401611ea9565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215611f7f57600080fd5b611f8883611ea9565b9150602083013567ffffffffffffffff811115611fa457600080fd5b8301601f81018513611fb557600080fd5b803567ffffffffffffffff811115611fcf57611fcf611f3d565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561203b5761203b611f3d565b60405281815282820160200187101561205357600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008083601f84011261208557600080fd5b50813567ffffffffffffffff81111561209d57600080fd5b6020830191508360208285010111156120b557600080fd5b9250929050565b6000806000806000608086880312156120d457600080fd5b6120dd86611ea9565b945060208601359350604086013567ffffffffffffffff81111561210057600080fd5b61210c88828901612073565b96999598509660600135949350505050565b60008060008060008060a0878903121561213757600080fd5b61214087611ea9565b955060208701359450604087013567ffffffffffffffff81111561216357600080fd5b61216f89828a01612073565b90955093505060608701359150608087013567ffffffffffffffff81111561219657600080fd5b87016080818a0312156121a857600080fd5b809150509295509295509295565b6000602082840312156121c857600080fd5b611e1e82611ea9565b60005b838110156121ec5781810151838201526020016121d4565b50506000910152565b60208152600082518060208401526122148160408501602087016121d1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000806000806080858703121561225c57600080fd5b61226585611ea9565b935061227360208601611ea9565b925061228160408601611ea9565b915061228f60608601611ea9565b905092959194509250565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015260806060820152600061231b60808301848661229a565b979650505050505050565b838152604060208201526000611cac60408301848661229a565b6001600160a01b0361235182611ea9565b1682526001600160a01b0361236860208301611ea9565b1660208301526040818101359083015260006060820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe10181126123b057600080fd5b820160208101903567ffffffffffffffff8111156123cd57600080fd5b8036038213156123dc57600080fd5b60806060860152611cac60808601828461229a565b6001600160a01b03871681526001600160a01b038616602082015284604082015260a06060820152600061242960a08301858761229a565b828103608084015261243b8185612340565b9998505050505050505050565b84815260606020820152600061246260608301858761229a565b828103604084015261231b8185612340565b60006020828403121561248657600080fd5b5051919050565b8082018082111561069b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082516124d98184602087016121d1565b919091019291505056fea2646970667358221220eba4c2f5dade5ff34217048d440008758a00a1202245b68fa99aa106f7b708de64736f6c634300081a0033"; + "0x60a060405230608052348015601357600080fd5b5060805161251961003d6000396000818161145701528181611480015261165601526125196000f3fe6080604052600436106101ac5760003560e01c80636f8728ad116100ec578063a217fddf1161008a578063d547741f11610064578063d547741f1461057e578063d5abeb011461059e578063e63ab1e9146105b4578063f8c8765e146105e857600080fd5b8063a217fddf146104df578063a783c789146104f4578063ad3cb1cc1461052857600080fd5b80638456cb59116100c65780638456cb591461041157806385f438c11461042657806391d148541461045a578063950837aa146104bf57600080fd5b80636f8728ad146103b15780636f8b44b0146103d1578063743e0c9b146103f157600080fd5b806336568abe1161015957806352d1902d1161013357806352d1902d146103255780635b1125911461033a5780635c975abb1461035a5780635e3e9fef1461039157600080fd5b806336568abe146102dd5780633f4ba83a146102fd5780634f1ef2861461031257600080fd5b806321e093b11161018a57806321e093b114610240578063248a9ca3146102605780632f2ff15d146102bd57600080fd5b806301ffc9a7146101b1578063106e6290146101e6578063116191b614610208575b600080fd5b3480156101bd57600080fd5b506101d16101cc366004611e67565b610608565b60405190151581526020015b60405180910390f35b3480156101f257600080fd5b50610206610201366004611ec5565b6106a1565b005b34801561021457600080fd5b50600054610228906001600160a01b031681565b6040516001600160a01b0390911681526020016101dd565b34801561024c57600080fd5b50600154610228906001600160a01b031681565b34801561026c57600080fd5b506102af61027b366004611ef8565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101dd565b3480156102c957600080fd5b506102066102d8366004611f11565b610758565b3480156102e957600080fd5b506102066102f8366004611f11565b6107a2565b34801561030957600080fd5b506102066107ee565b610206610320366004611f6c565b610823565b34801561033157600080fd5b506102af610842565b34801561034657600080fd5b50600254610228906001600160a01b031681565b34801561036657600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101d1565b34801561039d57600080fd5b506102066103ac3660046120bc565b610871565b3480156103bd57600080fd5b506102066103cc36600461211e565b6109bf565b3480156103dd57600080fd5b506102066103ec366004611ef8565b610b12565b3480156103fd57600080fd5b5061020661040c366004611ef8565b610b80565b34801561041d57600080fd5b50610206610c01565b34801561043257600080fd5b506102af7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b34801561046657600080fd5b506101d1610475366004611f11565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156104cb57600080fd5b506102066104da3660046121b6565b610c33565b3480156104eb57600080fd5b506102af600081565b34801561050057600080fd5b506102af7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561053457600080fd5b506105716040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101dd91906121f5565b34801561058a57600080fd5b50610206610599366004611f11565b610dc6565b3480156105aa57600080fd5b506102af60035481565b3480156105c057600080fd5b506102af7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b3480156105f457600080fd5b50610206610603366004612246565b610e0a565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061069b57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6106a9610fb5565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46106d381611036565b6106db611040565b6106e684848461109e565b836001600160a01b03167f3e35ef4326151011878c9e8e968a0f3913fe98ca68f72a1e0c2e9be13ffb3ee98460405161072191815260200190565b60405180910390a25061075360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461079281611036565b61079c838361120b565b50505050565b6001600160a01b03811633146107e4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61075382826112f8565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61081881611036565b6108206113bc565b50565b61082b61144c565b6108348261151c565b61083e8282611527565b5050565b600061084c61164b565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610879610fb5565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46108a381611036565b6108ab611040565b6000546108c2906001600160a01b0316868461109e565b6000546001546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692635131ab5992610917929116908a908a908a908a906004016122e3565b600060405180830381600087803b15801561093157600080fd5b505af1158015610945573d6000803e3d6000fd5b50505050856001600160a01b03167f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d86868660405161098693929190612326565b60405180910390a2506109b860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6109c7610fb5565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46109f181611036565b6109f9611040565b600054610a10906001600160a01b0316878561109e565b6000546001546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526001600160a01b039283169263aa0c0fc192610a67929116908b908b908b908b908a906004016123f1565b600060405180830381600087803b158015610a8157600080fd5b505af1158015610a95573d6000803e3d6000fd5b50505050866001600160a01b03167f5272d2fee39bff41b2e763562526315906046373ce08a7bacf76c3080d731ff087878786604051610ad89493929190612448565b60405180910390a250610b0a60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610b3c81611036565b610b44611040565b60038290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610b88611040565b6001546040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018390526001600160a01b03909116906379cc679090604401600060405180830381600087803b158015610bed57600080fd5b505af11580156109b8573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610c2b81611036565b6108206116ad565b6000610c3e81611036565b6001600160a01b038216610c7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254610cb5907f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4906001600160a01b03166112f8565b50600254610ced907f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb906001600160a01b03166112f8565b50610d187f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48361120b565b50610d437f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb8361120b565b50600254604080516001600160a01b03928316815291841660208301527f33770ab682353c17917ad3e667f05905fc8dda00671ef1ed33bef9bc8db0323e910160405180910390a150600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610e0081611036565b61079c83836112f8565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610e555750825b905060008267ffffffffffffffff166001148015610e725750303b155b905081158015610e80575080155b15610eb7576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610f185784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610f2489898989611726565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6003558315610faa5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b505050505050505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611030576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6108208133611a31565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff161561109c576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600354600160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111189190612474565b611122908461248d565b111561115a576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040517f1e458bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018590526044820184905290911690631e458bee90606401600060405180830381600087803b1580156111c857600080fd5b505af11580156111dc573d6000803e3d6000fd5b50505050505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166112ee576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556112a43390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061069b565b600091505061069b565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156112ee576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061069b565b6113c4611abe565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806114e557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114d97f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b1561109c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061083e81611036565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561159f575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261159c91810190612474565b60015b6115e5576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611641576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016115dc565b6107538383611b19565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461109c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116b5611040565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361142e565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156117715750825b905060008267ffffffffffffffff16600114801561178e5750303b155b90508115801561179c575080155b156117d3576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156118345784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038916158061185157506001600160a01b038816155b8061186357506001600160a01b038716155b8061187557506001600160a01b038616155b156118ac576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118b4611b6f565b6118bc611b77565b6118c4611b6f565b6118cc611b87565b600080546001600160a01b03808c167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316178355600180548c831690841617905560028054918b1691909216179055611927908761120b565b506119527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48861120b565b5061197d7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb8861120b565b506119a87f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8761120b565b506119d37f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8861120b565b508315610faa5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001610fa1565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff1661083e576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016115dc565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1661109c576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b2282611b97565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b67576107538282611c3f565b61083e611cb5565b61109c611ced565b611b7f611ced565b61109c611d54565b611b8f611ced565b61109c611d5c565b806001600160a01b03163b600003611be6576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016115dc565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611c5c91906124c7565b600060405180830381855af49150503d8060008114611c97576040519150601f19603f3d011682016040523d82523d6000602084013e611c9c565b606091505b5091509150611cac858383611dad565b95945050505050565b341561109c576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661109c576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111e5611ced565b611d64611ced565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b606082611dc257611dbd82611e25565b611e1e565b8151158015611dd957506001600160a01b0384163b155b15611e1b576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016115dc565b50805b9392505050565b805115611e355780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215611e7957600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611e1e57600080fd5b80356001600160a01b0381168114611ec057600080fd5b919050565b600080600060608486031215611eda57600080fd5b611ee384611ea9565b95602085013595506040909401359392505050565b600060208284031215611f0a57600080fd5b5035919050565b60008060408385031215611f2457600080fd5b82359150611f3460208401611ea9565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215611f7f57600080fd5b611f8883611ea9565b9150602083013567ffffffffffffffff811115611fa457600080fd5b8301601f81018513611fb557600080fd5b803567ffffffffffffffff811115611fcf57611fcf611f3d565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561203b5761203b611f3d565b60405281815282820160200187101561205357600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008083601f84011261208557600080fd5b50813567ffffffffffffffff81111561209d57600080fd5b6020830191508360208285010111156120b557600080fd5b9250929050565b6000806000806000608086880312156120d457600080fd5b6120dd86611ea9565b945060208601359350604086013567ffffffffffffffff81111561210057600080fd5b61210c88828901612073565b96999598509660600135949350505050565b60008060008060008060a0878903121561213757600080fd5b61214087611ea9565b955060208701359450604087013567ffffffffffffffff81111561216357600080fd5b61216f89828a01612073565b90955093505060608701359150608087013567ffffffffffffffff81111561219657600080fd5b87016080818a0312156121a857600080fd5b809150509295509295509295565b6000602082840312156121c857600080fd5b611e1e82611ea9565b60005b838110156121ec5781810151838201526020016121d4565b50506000910152565b60208152600082518060208401526122148160408501602087016121d1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000806000806080858703121561225c57600080fd5b61226585611ea9565b935061227360208601611ea9565b925061228160408601611ea9565b915061228f60608601611ea9565b905092959194509250565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015260806060820152600061231b60808301848661229a565b979650505050505050565b838152604060208201526000611cac60408301848661229a565b6001600160a01b0361235182611ea9565b1682526001600160a01b0361236860208301611ea9565b1660208301526040818101359083015260006060820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe10181126123b057600080fd5b820160208101903567ffffffffffffffff8111156123cd57600080fd5b8036038213156123dc57600080fd5b60806060860152611cac60808601828461229a565b6001600160a01b03871681526001600160a01b038616602082015284604082015260a06060820152600061242960a08301858761229a565b828103608084015261243b8185612340565b9998505050505050505050565b84815260606020820152600061246260608301858761229a565b828103604084015261231b8185612340565b60006020828403121561248657600080fd5b5051919050565b8082018082111561069b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082516124d98184602087016121d1565b919091019291505056fea26469706673582212204813daad458b8c103dfebd07f6ec74ee1d40a7eec885cae6963c827c7daf36af64736f6c634300081a0033"; type ZetaConnectorNonNativeUpgradeTestConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/ZetaConnectorNonNative__factory.ts b/v2/types/factories/ZetaConnectorNonNative__factory.ts index c3e4f1f3c..89cce6586 100644 --- a/v2/types/factories/ZetaConnectorNonNative__factory.ts +++ b/v2/types/factories/ZetaConnectorNonNative__factory.ts @@ -842,7 +842,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a060405230608052348015601357600080fd5b5060805161251961003d6000396000818161145701528181611480015261165601526125196000f3fe6080604052600436106101ac5760003560e01c80636f8728ad116100ec578063a217fddf1161008a578063d547741f11610064578063d547741f1461057e578063d5abeb011461059e578063e63ab1e9146105b4578063f8c8765e146105e857600080fd5b8063a217fddf146104df578063a783c789146104f4578063ad3cb1cc1461052857600080fd5b80638456cb59116100c65780638456cb591461041157806385f438c11461042657806391d148541461045a578063950837aa146104bf57600080fd5b80636f8728ad146103b15780636f8b44b0146103d1578063743e0c9b146103f157600080fd5b806336568abe1161015957806352d1902d1161013357806352d1902d146103255780635b1125911461033a5780635c975abb1461035a5780635e3e9fef1461039157600080fd5b806336568abe146102dd5780633f4ba83a146102fd5780634f1ef2861461031257600080fd5b806321e093b11161018a57806321e093b114610240578063248a9ca3146102605780632f2ff15d146102bd57600080fd5b806301ffc9a7146101b1578063106e6290146101e6578063116191b614610208575b600080fd5b3480156101bd57600080fd5b506101d16101cc366004611e67565b610608565b60405190151581526020015b60405180910390f35b3480156101f257600080fd5b50610206610201366004611ec5565b6106a1565b005b34801561021457600080fd5b50600054610228906001600160a01b031681565b6040516001600160a01b0390911681526020016101dd565b34801561024c57600080fd5b50600154610228906001600160a01b031681565b34801561026c57600080fd5b506102af61027b366004611ef8565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101dd565b3480156102c957600080fd5b506102066102d8366004611f11565b610758565b3480156102e957600080fd5b506102066102f8366004611f11565b6107a2565b34801561030957600080fd5b506102066107ee565b610206610320366004611f6c565b610823565b34801561033157600080fd5b506102af610842565b34801561034657600080fd5b50600254610228906001600160a01b031681565b34801561036657600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101d1565b34801561039d57600080fd5b506102066103ac3660046120bc565b610871565b3480156103bd57600080fd5b506102066103cc36600461211e565b6109bf565b3480156103dd57600080fd5b506102066103ec366004611ef8565b610b12565b3480156103fd57600080fd5b5061020661040c366004611ef8565b610b80565b34801561041d57600080fd5b50610206610c01565b34801561043257600080fd5b506102af7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b34801561046657600080fd5b506101d1610475366004611f11565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156104cb57600080fd5b506102066104da3660046121b6565b610c33565b3480156104eb57600080fd5b506102af600081565b34801561050057600080fd5b506102af7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561053457600080fd5b506105716040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101dd91906121f5565b34801561058a57600080fd5b50610206610599366004611f11565b610dc6565b3480156105aa57600080fd5b506102af60035481565b3480156105c057600080fd5b506102af7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b3480156105f457600080fd5b50610206610603366004612246565b610e0a565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061069b57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6106a9610fb5565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46106d381611036565b6106db611040565b6106e684848461109e565b836001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d58460405161072191815260200190565b60405180910390a25061075360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461079281611036565b61079c838361120b565b50505050565b6001600160a01b03811633146107e4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61075382826112f8565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61081881611036565b6108206113bc565b50565b61082b61144c565b6108348261151c565b61083e8282611527565b5050565b600061084c61164b565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610879610fb5565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46108a381611036565b6108ab611040565b6000546108c2906001600160a01b0316868461109e565b6000546001546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692635131ab5992610917929116908a908a908a908a906004016122e3565b600060405180830381600087803b15801561093157600080fd5b505af1158015610945573d6000803e3d6000fd5b50505050856001600160a01b03167f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d86868660405161098693929190612326565b60405180910390a2506109b860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6109c7610fb5565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46109f181611036565b6109f9611040565b600054610a10906001600160a01b0316878561109e565b6000546001546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526001600160a01b039283169263aa0c0fc192610a67929116908b908b908b908b908a906004016123f1565b600060405180830381600087803b158015610a8157600080fd5b505af1158015610a95573d6000803e3d6000fd5b50505050866001600160a01b03167f5272d2fee39bff41b2e763562526315906046373ce08a7bacf76c3080d731ff087878786604051610ad89493929190612448565b60405180910390a250610b0a60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610b3c81611036565b610b44611040565b60038290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610b88611040565b6001546040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018390526001600160a01b03909116906379cc679090604401600060405180830381600087803b158015610bed57600080fd5b505af11580156109b8573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610c2b81611036565b6108206116ad565b6000610c3e81611036565b6001600160a01b038216610c7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254610cb5907f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4906001600160a01b03166112f8565b50600254610ced907f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb906001600160a01b03166112f8565b50610d187f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48361120b565b50610d437f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb8361120b565b50600254604080516001600160a01b03928316815291841660208301527f33770ab682353c17917ad3e667f05905fc8dda00671ef1ed33bef9bc8db0323e910160405180910390a150600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610e0081611036565b61079c83836112f8565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610e555750825b905060008267ffffffffffffffff166001148015610e725750303b155b905081158015610e80575080155b15610eb7576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610f185784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610f2489898989611726565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6003558315610faa5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b505050505050505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611030576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6108208133611a31565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff161561109c576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600354600160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111189190612474565b611122908461248d565b111561115a576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040517f1e458bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018590526044820184905290911690631e458bee90606401600060405180830381600087803b1580156111c857600080fd5b505af11580156111dc573d6000803e3d6000fd5b50505050505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166112ee576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556112a43390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061069b565b600091505061069b565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156112ee576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061069b565b6113c4611abe565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806114e557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114d97f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b1561109c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061083e81611036565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561159f575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261159c91810190612474565b60015b6115e5576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611641576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016115dc565b6107538383611b19565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461109c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116b5611040565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361142e565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156117715750825b905060008267ffffffffffffffff16600114801561178e5750303b155b90508115801561179c575080155b156117d3576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156118345784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038916158061185157506001600160a01b038816155b8061186357506001600160a01b038716155b8061187557506001600160a01b038616155b156118ac576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118b4611b6f565b6118bc611b77565b6118c4611b6f565b6118cc611b87565b600080546001600160a01b03808c167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316178355600180548c831690841617905560028054918b1691909216179055611927908761120b565b506119527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48861120b565b5061197d7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb8861120b565b506119a87f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8761120b565b506119d37f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8861120b565b508315610faa5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001610fa1565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff1661083e576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016115dc565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1661109c576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b2282611b97565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b67576107538282611c3f565b61083e611cb5565b61109c611ced565b611b7f611ced565b61109c611d54565b611b8f611ced565b61109c611d5c565b806001600160a01b03163b600003611be6576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016115dc565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611c5c91906124c7565b600060405180830381855af49150503d8060008114611c97576040519150601f19603f3d011682016040523d82523d6000602084013e611c9c565b606091505b5091509150611cac858383611dad565b95945050505050565b341561109c576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661109c576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111e5611ced565b611d64611ced565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b606082611dc257611dbd82611e25565b611e1e565b8151158015611dd957506001600160a01b0384163b155b15611e1b576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016115dc565b50805b9392505050565b805115611e355780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215611e7957600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611e1e57600080fd5b80356001600160a01b0381168114611ec057600080fd5b919050565b600080600060608486031215611eda57600080fd5b611ee384611ea9565b95602085013595506040909401359392505050565b600060208284031215611f0a57600080fd5b5035919050565b60008060408385031215611f2457600080fd5b82359150611f3460208401611ea9565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215611f7f57600080fd5b611f8883611ea9565b9150602083013567ffffffffffffffff811115611fa457600080fd5b8301601f81018513611fb557600080fd5b803567ffffffffffffffff811115611fcf57611fcf611f3d565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561203b5761203b611f3d565b60405281815282820160200187101561205357600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008083601f84011261208557600080fd5b50813567ffffffffffffffff81111561209d57600080fd5b6020830191508360208285010111156120b557600080fd5b9250929050565b6000806000806000608086880312156120d457600080fd5b6120dd86611ea9565b945060208601359350604086013567ffffffffffffffff81111561210057600080fd5b61210c88828901612073565b96999598509660600135949350505050565b60008060008060008060a0878903121561213757600080fd5b61214087611ea9565b955060208701359450604087013567ffffffffffffffff81111561216357600080fd5b61216f89828a01612073565b90955093505060608701359150608087013567ffffffffffffffff81111561219657600080fd5b87016080818a0312156121a857600080fd5b809150509295509295509295565b6000602082840312156121c857600080fd5b611e1e82611ea9565b60005b838110156121ec5781810151838201526020016121d4565b50506000910152565b60208152600082518060208401526122148160408501602087016121d1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000806000806080858703121561225c57600080fd5b61226585611ea9565b935061227360208601611ea9565b925061228160408601611ea9565b915061228f60608601611ea9565b905092959194509250565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015260806060820152600061231b60808301848661229a565b979650505050505050565b838152604060208201526000611cac60408301848661229a565b6001600160a01b0361235182611ea9565b1682526001600160a01b0361236860208301611ea9565b1660208301526040818101359083015260006060820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe10181126123b057600080fd5b820160208101903567ffffffffffffffff8111156123cd57600080fd5b8036038213156123dc57600080fd5b60806060860152611cac60808601828461229a565b6001600160a01b03871681526001600160a01b038616602082015284604082015260a06060820152600061242960a08301858761229a565b828103608084015261243b8185612340565b9998505050505050505050565b84815260606020820152600061246260608301858761229a565b828103604084015261231b8185612340565b60006020828403121561248657600080fd5b5051919050565b8082018082111561069b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082516124d98184602087016121d1565b919091019291505056fea2646970667358221220ecaeeab5029e9c664da04ee2fdaf2e0659e1740805c1791257cff702c4072f4664736f6c634300081a0033"; + "0x60a060405230608052348015601357600080fd5b5060805161251961003d6000396000818161145701528181611480015261165601526125196000f3fe6080604052600436106101ac5760003560e01c80636f8728ad116100ec578063a217fddf1161008a578063d547741f11610064578063d547741f1461057e578063d5abeb011461059e578063e63ab1e9146105b4578063f8c8765e146105e857600080fd5b8063a217fddf146104df578063a783c789146104f4578063ad3cb1cc1461052857600080fd5b80638456cb59116100c65780638456cb591461041157806385f438c11461042657806391d148541461045a578063950837aa146104bf57600080fd5b80636f8728ad146103b15780636f8b44b0146103d1578063743e0c9b146103f157600080fd5b806336568abe1161015957806352d1902d1161013357806352d1902d146103255780635b1125911461033a5780635c975abb1461035a5780635e3e9fef1461039157600080fd5b806336568abe146102dd5780633f4ba83a146102fd5780634f1ef2861461031257600080fd5b806321e093b11161018a57806321e093b114610240578063248a9ca3146102605780632f2ff15d146102bd57600080fd5b806301ffc9a7146101b1578063106e6290146101e6578063116191b614610208575b600080fd5b3480156101bd57600080fd5b506101d16101cc366004611e67565b610608565b60405190151581526020015b60405180910390f35b3480156101f257600080fd5b50610206610201366004611ec5565b6106a1565b005b34801561021457600080fd5b50600054610228906001600160a01b031681565b6040516001600160a01b0390911681526020016101dd565b34801561024c57600080fd5b50600154610228906001600160a01b031681565b34801561026c57600080fd5b506102af61027b366004611ef8565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101dd565b3480156102c957600080fd5b506102066102d8366004611f11565b610758565b3480156102e957600080fd5b506102066102f8366004611f11565b6107a2565b34801561030957600080fd5b506102066107ee565b610206610320366004611f6c565b610823565b34801561033157600080fd5b506102af610842565b34801561034657600080fd5b50600254610228906001600160a01b031681565b34801561036657600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101d1565b34801561039d57600080fd5b506102066103ac3660046120bc565b610871565b3480156103bd57600080fd5b506102066103cc36600461211e565b6109bf565b3480156103dd57600080fd5b506102066103ec366004611ef8565b610b12565b3480156103fd57600080fd5b5061020661040c366004611ef8565b610b80565b34801561041d57600080fd5b50610206610c01565b34801561043257600080fd5b506102af7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b34801561046657600080fd5b506101d1610475366004611f11565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156104cb57600080fd5b506102066104da3660046121b6565b610c33565b3480156104eb57600080fd5b506102af600081565b34801561050057600080fd5b506102af7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561053457600080fd5b506105716040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101dd91906121f5565b34801561058a57600080fd5b50610206610599366004611f11565b610dc6565b3480156105aa57600080fd5b506102af60035481565b3480156105c057600080fd5b506102af7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b3480156105f457600080fd5b50610206610603366004612246565b610e0a565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061069b57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6106a9610fb5565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46106d381611036565b6106db611040565b6106e684848461109e565b836001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d58460405161072191815260200190565b60405180910390a25061075360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461079281611036565b61079c838361120b565b50505050565b6001600160a01b03811633146107e4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61075382826112f8565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61081881611036565b6108206113bc565b50565b61082b61144c565b6108348261151c565b61083e8282611527565b5050565b600061084c61164b565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610879610fb5565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46108a381611036565b6108ab611040565b6000546108c2906001600160a01b0316868461109e565b6000546001546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692635131ab5992610917929116908a908a908a908a906004016122e3565b600060405180830381600087803b15801561093157600080fd5b505af1158015610945573d6000803e3d6000fd5b50505050856001600160a01b03167f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d86868660405161098693929190612326565b60405180910390a2506109b860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6109c7610fb5565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46109f181611036565b6109f9611040565b600054610a10906001600160a01b0316878561109e565b6000546001546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526001600160a01b039283169263aa0c0fc192610a67929116908b908b908b908b908a906004016123f1565b600060405180830381600087803b158015610a8157600080fd5b505af1158015610a95573d6000803e3d6000fd5b50505050866001600160a01b03167f5272d2fee39bff41b2e763562526315906046373ce08a7bacf76c3080d731ff087878786604051610ad89493929190612448565b60405180910390a250610b0a60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610b3c81611036565b610b44611040565b60038290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610b88611040565b6001546040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018390526001600160a01b03909116906379cc679090604401600060405180830381600087803b158015610bed57600080fd5b505af11580156109b8573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610c2b81611036565b6108206116ad565b6000610c3e81611036565b6001600160a01b038216610c7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254610cb5907f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4906001600160a01b03166112f8565b50600254610ced907f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb906001600160a01b03166112f8565b50610d187f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48361120b565b50610d437f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb8361120b565b50600254604080516001600160a01b03928316815291841660208301527f33770ab682353c17917ad3e667f05905fc8dda00671ef1ed33bef9bc8db0323e910160405180910390a150600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610e0081611036565b61079c83836112f8565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610e555750825b905060008267ffffffffffffffff166001148015610e725750303b155b905081158015610e80575080155b15610eb7576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610f185784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610f2489898989611726565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6003558315610faa5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b505050505050505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611030576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6108208133611a31565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff161561109c576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600354600160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111189190612474565b611122908461248d565b111561115a576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040517f1e458bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018590526044820184905290911690631e458bee90606401600060405180830381600087803b1580156111c857600080fd5b505af11580156111dc573d6000803e3d6000fd5b50505050505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166112ee576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556112a43390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061069b565b600091505061069b565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156112ee576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061069b565b6113c4611abe565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806114e557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114d97f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b1561109c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061083e81611036565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561159f575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261159c91810190612474565b60015b6115e5576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611641576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016115dc565b6107538383611b19565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461109c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116b5611040565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361142e565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156117715750825b905060008267ffffffffffffffff16600114801561178e5750303b155b90508115801561179c575080155b156117d3576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156118345784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038916158061185157506001600160a01b038816155b8061186357506001600160a01b038716155b8061187557506001600160a01b038616155b156118ac576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118b4611b6f565b6118bc611b77565b6118c4611b6f565b6118cc611b87565b600080546001600160a01b03808c167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316178355600180548c831690841617905560028054918b1691909216179055611927908761120b565b506119527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48861120b565b5061197d7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb8861120b565b506119a87f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8761120b565b506119d37f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8861120b565b508315610faa5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001610fa1565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff1661083e576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016115dc565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1661109c576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b2282611b97565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b67576107538282611c3f565b61083e611cb5565b61109c611ced565b611b7f611ced565b61109c611d54565b611b8f611ced565b61109c611d5c565b806001600160a01b03163b600003611be6576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016115dc565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611c5c91906124c7565b600060405180830381855af49150503d8060008114611c97576040519150601f19603f3d011682016040523d82523d6000602084013e611c9c565b606091505b5091509150611cac858383611dad565b95945050505050565b341561109c576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661109c576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111e5611ced565b611d64611ced565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b606082611dc257611dbd82611e25565b611e1e565b8151158015611dd957506001600160a01b0384163b155b15611e1b576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016115dc565b50805b9392505050565b805115611e355780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215611e7957600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611e1e57600080fd5b80356001600160a01b0381168114611ec057600080fd5b919050565b600080600060608486031215611eda57600080fd5b611ee384611ea9565b95602085013595506040909401359392505050565b600060208284031215611f0a57600080fd5b5035919050565b60008060408385031215611f2457600080fd5b82359150611f3460208401611ea9565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215611f7f57600080fd5b611f8883611ea9565b9150602083013567ffffffffffffffff811115611fa457600080fd5b8301601f81018513611fb557600080fd5b803567ffffffffffffffff811115611fcf57611fcf611f3d565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561203b5761203b611f3d565b60405281815282820160200187101561205357600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008083601f84011261208557600080fd5b50813567ffffffffffffffff81111561209d57600080fd5b6020830191508360208285010111156120b557600080fd5b9250929050565b6000806000806000608086880312156120d457600080fd5b6120dd86611ea9565b945060208601359350604086013567ffffffffffffffff81111561210057600080fd5b61210c88828901612073565b96999598509660600135949350505050565b60008060008060008060a0878903121561213757600080fd5b61214087611ea9565b955060208701359450604087013567ffffffffffffffff81111561216357600080fd5b61216f89828a01612073565b90955093505060608701359150608087013567ffffffffffffffff81111561219657600080fd5b87016080818a0312156121a857600080fd5b809150509295509295509295565b6000602082840312156121c857600080fd5b611e1e82611ea9565b60005b838110156121ec5781810151838201526020016121d4565b50506000910152565b60208152600082518060208401526122148160408501602087016121d1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000806000806080858703121561225c57600080fd5b61226585611ea9565b935061227360208601611ea9565b925061228160408601611ea9565b915061228f60608601611ea9565b905092959194509250565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015260806060820152600061231b60808301848661229a565b979650505050505050565b838152604060208201526000611cac60408301848661229a565b6001600160a01b0361235182611ea9565b1682526001600160a01b0361236860208301611ea9565b1660208301526040818101359083015260006060820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe10181126123b057600080fd5b820160208101903567ffffffffffffffff8111156123cd57600080fd5b8036038213156123dc57600080fd5b60806060860152611cac60808601828461229a565b6001600160a01b03871681526001600160a01b038616602082015284604082015260a06060820152600061242960a08301858761229a565b828103608084015261243b8185612340565b9998505050505050505050565b84815260606020820152600061246260608301858761229a565b828103604084015261231b8185612340565b60006020828403121561248657600080fd5b5051919050565b8082018082111561069b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082516124d98184602087016121d1565b919091019291505056fea2646970667358221220dcdae3d1abcc1e59c760855979066a21bc8e8a92347b22dd5e8b2fe90f3a69a864736f6c634300081a0033"; type ZetaConnectorNonNativeConstructorParams = | [signer?: Signer] From 09e051f9f7dd460cac52e7ab8806014c533a9490 Mon Sep 17 00:00:00 2001 From: lumtis Date: Wed, 16 Oct 2024 14:58:38 +0200 Subject: [PATCH 04/17] test abigen version --- .github/workflows/generated-files_v2.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/generated-files_v2.yaml b/.github/workflows/generated-files_v2.yaml index 078f2241c..0712d03fa 100644 --- a/.github/workflows/generated-files_v2.yaml +++ b/.github/workflows/generated-files_v2.yaml @@ -50,6 +50,9 @@ 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: Run abigen --version + run: abigen --version + - name: Generate Go packages and types run: | yarn generate From b90126f6b178a613a3c5c2ecdd0cafc515198ae3 Mon Sep 17 00:00:00 2001 From: lumtis Date: Wed, 16 Oct 2024 15:19:05 +0200 Subject: [PATCH 05/17] ci test --- .github/workflows/generated-files_v2.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/generated-files_v2.yaml b/.github/workflows/generated-files_v2.yaml index 0712d03fa..af8adbea1 100644 --- a/.github/workflows/generated-files_v2.yaml +++ b/.github/workflows/generated-files_v2.yaml @@ -50,8 +50,8 @@ 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: Run abigen --version - run: abigen --version + - name: Run forge --version + run: forge --version - name: Generate Go packages and types run: | From 7500403133048246c51a9b34177e742b1e56be97 Mon Sep 17 00:00:00 2001 From: lumtis Date: Wed, 16 Oct 2024 15:32:13 +0200 Subject: [PATCH 06/17] some more fixes --- v2/test/GatewayZEVM.t.sol | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/v2/test/GatewayZEVM.t.sol b/v2/test/GatewayZEVM.t.sol index d42e53680..ed648b3bb 100644 --- a/v2/test/GatewayZEVM.t.sol +++ b/v2/test/GatewayZEVM.t.sol @@ -419,9 +419,9 @@ contract GatewayZEVMInboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors function testWithdrawZETA() public { uint256 amount = 1; - uint256 ownerBalanceBefore = zetaToken.balanceOf(owner); - uint256 gatewayBalanceBefore = zetaToken.balanceOf(address(gateway)); - uint256 protocolBalanceBefore = protocolAddress.balance; + // uint256 ownerBalanceBefore = zetaToken.balanceOf(owner); + // uint256 gatewayBalanceBefore = zetaToken.balanceOf(address(gateway)); + // uint256 protocolBalanceBefore = protocolAddress.balance; uint256 chainId = 1; // vm.expectEmit(true, true, true, true, address(gateway)); @@ -490,9 +490,9 @@ contract GatewayZEVMInboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors function testWithdrawZETAWithCallOptsWithMessage() public { uint256 amount = 1; - uint256 ownerBalanceBefore = zetaToken.balanceOf(owner); - uint256 gatewayBalanceBefore = zetaToken.balanceOf(address(gateway)); - uint256 protocolAddressBalanceBefore = protocolAddress.balance; + // uint256 ownerBalanceBefore = zetaToken.balanceOf(owner); + // uint256 gatewayBalanceBefore = zetaToken.balanceOf(address(gateway)); + // uint256 protocolAddressBalanceBefore = protocolAddress.balance; bytes memory message = abi.encodeWithSignature("hello(address)", addr1); uint256 chainId = 1; From 712d37a72e0a6a030cbd2538ab39f1d50f30c9e0 Mon Sep 17 00:00:00 2001 From: lumtis Date: Wed, 16 Oct 2024 15:32:30 +0200 Subject: [PATCH 07/17] docs generate --- .../contracts/evm/ERC20Custody.sol/contract.ERC20Custody.md | 3 +++ .../src/contracts/evm/GatewayEVM.sol/contract.GatewayEVM.md | 3 +++ .../contracts/zevm/GatewayZEVM.sol/contract.GatewayZEVM.md | 3 +++ .../interfaces/UniversalContract.sol/interface.zContract.md | 4 ++++ .../zevm/interfaces/UniversalContract.sol/struct.zContext.md | 4 ++++ 5 files changed, 17 insertions(+) diff --git a/v2/docs/src/contracts/evm/ERC20Custody.sol/contract.ERC20Custody.md b/v2/docs/src/contracts/evm/ERC20Custody.sol/contract.ERC20Custody.md index 1f30d17a3..ba9963b60 100644 --- a/v2/docs/src/contracts/evm/ERC20Custody.sol/contract.ERC20Custody.md +++ b/v2/docs/src/contracts/evm/ERC20Custody.sol/contract.ERC20Custody.md @@ -264,6 +264,9 @@ function withdrawAndRevert( Deposits asset to custody and pay fee in zeta erc20. +**Note:** +This method is deprecated. + ```solidity function deposit( diff --git a/v2/docs/src/contracts/evm/GatewayEVM.sol/contract.GatewayEVM.md b/v2/docs/src/contracts/evm/GatewayEVM.sol/contract.GatewayEVM.md index aba2c97e7..4da40091e 100644 --- a/v2/docs/src/contracts/evm/GatewayEVM.sol/contract.GatewayEVM.md +++ b/v2/docs/src/contracts/evm/GatewayEVM.sol/contract.GatewayEVM.md @@ -85,6 +85,9 @@ uint256 public constant MAX_PAYLOAD_SIZE = 1024; ## Functions ### constructor +**Note:** +constructor + ```solidity constructor(); diff --git a/v2/docs/src/contracts/zevm/GatewayZEVM.sol/contract.GatewayZEVM.md b/v2/docs/src/contracts/zevm/GatewayZEVM.sol/contract.GatewayZEVM.md index c25989b06..d60f97f8a 100644 --- a/v2/docs/src/contracts/zevm/GatewayZEVM.sol/contract.GatewayZEVM.md +++ b/v2/docs/src/contracts/zevm/GatewayZEVM.sol/contract.GatewayZEVM.md @@ -58,6 +58,9 @@ modifier onlyProtocol(); ### constructor +**Note:** +constructor + ```solidity constructor(); diff --git a/v2/docs/src/contracts/zevm/interfaces/UniversalContract.sol/interface.zContract.md b/v2/docs/src/contracts/zevm/interfaces/UniversalContract.sol/interface.zContract.md index b2c6cb6e3..adcf06751 100644 --- a/v2/docs/src/contracts/zevm/interfaces/UniversalContract.sol/interface.zContract.md +++ b/v2/docs/src/contracts/zevm/interfaces/UniversalContract.sol/interface.zContract.md @@ -1,6 +1,10 @@ # zContract [Git Source](https://github.com/zeta-chain/protocol-contracts/blob/main/v2/contracts/zevm/interfaces/UniversalContract.sol) +**Note:** +should be removed once v2 SystemContract is not used anymore. +UniversalContract should be used + ## Functions ### onCrossChainCall diff --git a/v2/docs/src/contracts/zevm/interfaces/UniversalContract.sol/struct.zContext.md b/v2/docs/src/contracts/zevm/interfaces/UniversalContract.sol/struct.zContext.md index e71230acd..e50ac885b 100644 --- a/v2/docs/src/contracts/zevm/interfaces/UniversalContract.sol/struct.zContext.md +++ b/v2/docs/src/contracts/zevm/interfaces/UniversalContract.sol/struct.zContext.md @@ -1,6 +1,10 @@ # zContext [Git Source](https://github.com/zeta-chain/protocol-contracts/blob/main/v2/contracts/zevm/interfaces/UniversalContract.sol) +**Note:** +should be removed once v2 SystemContract is not used anymore. +MessageContext should be used + ```solidity struct zContext { From 5623f3cc6f6d1b9e7d7e2bc050ac5fb79f8231c8 Mon Sep 17 00:00:00 2001 From: lumtis Date: Wed, 16 Oct 2024 16:21:17 +0200 Subject: [PATCH 08/17] fix soldeer change --- v2/soldeer.lock | 1 - 1 file changed, 1 deletion(-) diff --git a/v2/soldeer.lock b/v2/soldeer.lock index f8c02ef76..77fa484cb 100644 --- a/v2/soldeer.lock +++ b/v2/soldeer.lock @@ -1,4 +1,3 @@ - [[dependencies]] name = "forge-std" version = "1.9.2" From 978cac3462b385cffbae5505117729788f4b765e Mon Sep 17 00:00:00 2001 From: lumtis Date: Wed, 16 Oct 2024 16:27:19 +0200 Subject: [PATCH 09/17] fix contracts --- v2/pkg/gatewayzevm.t.sol/gatewayzevminboundtest.go | 2 +- v2/pkg/gatewayzevm.t.sol/gatewayzevmoutboundtest.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/v2/pkg/gatewayzevm.t.sol/gatewayzevminboundtest.go b/v2/pkg/gatewayzevm.t.sol/gatewayzevminboundtest.go index e3ed57cea..8c21103b7 100644 --- a/v2/pkg/gatewayzevm.t.sol/gatewayzevminboundtest.go +++ b/v2/pkg/gatewayzevm.t.sol/gatewayzevminboundtest.go @@ -65,7 +65,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\":\"testCallWithCallOpts\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testCallWithCallOptsFailsIfGasLimitIsZero\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testCallWithCallOptsFailsIfMessageSizeExceeded\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testCallWithCallOptsFailsIfReceiverIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpgradeAndWithdrawZRC20\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallZETAWithCallOptsFailsIfAmountIsReceiverIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallZETAWithCallOptsFailsIfAmountIsZero\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallZETAWithCallOptsFailsIfMessageSizeExceeded\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallZRC20FailsIfAmountIsZero\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallZRC20FailsIfGasLimitIsZero\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallZRC20FailsIfMessageSizeExceeded\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallZRC20FailsIfReceiverIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallZRC20WithCallOptsFailsIfAmountIsZero\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallZRC20WithCallOptsFailsIfGasLimitIsZero\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallZRC20WithCallOptsFailsIfMessageSizeExceeded\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallZRC20WithCallOptsFailsIfReceiverIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETA\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAFailsIfAmountIsZero\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAFailsIfMessageSizeExceeded\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAFailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAFailsIfNoBalance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAFailsIfReceiverIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAWithCallOptsWithMessage\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAWithCallOptsWithMessageFailsIfGasLimitIsZero\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAWithCallOptsWithMessageFailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20FailsIfMessageSizeExceeded\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20FailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20FailsIfNoBalanceForGasFee\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20FailsIfNoBalanceForTransfer\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20FailsIfReceiverIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20FailsIsAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20WithCallOptsWithMessage\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20WithMessage\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20WithMessageFailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20WithMessageWithCallOptsFailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Called\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"callOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structCallOptions\",\"components\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"isArbitraryCall\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawn\",\"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\"},{\"name\":\"callOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structCallOptions\",\"components\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"isArbitraryCall\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawnV2\",\"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\"},{\"name\":\"callOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structCallOptions\",\"components\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"isArbitraryCall\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\":\"CallerIsNotProtocol\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedZetaSent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientGasLimit\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZetaAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LowBalance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"MessageSizeExceeded\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrProtocol\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZETANotSupported\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20BurnFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20TransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5062010ecd806200003e6000396000f3fe608060405234801561001057600080fd5b506004361061032b5760003560e01c80636dfcbc50116101b2578063bed3e813116100f9578063e51c6388116100a2578063eb7a2fac1161007c578063eb7a2fac146104ec578063fa7626d4146104f4578063fbc611c814610501578063fdad0ad01461050957600080fd5b8063e51c6388146104dc578063e804a4061461035a578063ea37902f146104e457600080fd5b8063dc749dd7116100d3578063dc749dd7146104c4578063dde7e967146104cc578063e20c9f71146104d457600080fd5b8063bed3e813146104ac578063c946d7c0146104b4578063ceccfab3146104bc57600080fd5b8063b0464fdc1161015b578063ba414fa611610135578063ba414fa614610484578063ba800c911461049c578063ba9adeef146104a457600080fd5b8063b0464fdc1461046c578063b51ac07114610474578063b5508aa91461047c57600080fd5b806385226c811161018c57806385226c811461043a578063916a17c61461044f578063a721b2d31461046457600080fd5b80636dfcbc50146104225780637ae697301461042a57806383ababa91461043257600080fd5b80633e5e3c23116102765780635efe72a91161021f57806364002a1f116101f957806364002a1f146103fd57806366d9a9a0146104055780636d6ce0d01461041a57600080fd5b80635efe72a9146103e55780636198fb19146103ed5780636221b509146103f557600080fd5b8063431814371161025057806343181437146103cd5780634ffab9de146103d55780635d72228f146103dd57600080fd5b80633e5e3c23146103b55780633f7286f4146103bd57806342752d41146103c557600080fd5b80631ed7831c116102d8578063264b524c116102b2578063264b524c146103905780632ade38801461039857806336431b3f146103ad57600080fd5b80631ed7831c1461036257806320dee15f1461038057806321aeb18c1461038857600080fd5b80631475976611610309578063147597661461034a5780631b9641bf146103525780631e63d2b91461035a57600080fd5b80630a9254e4146103305780630b5ad28d1461033a5780631238212c14610342575b600080fd5b610338610511565b005b6103386110a6565b610338611259565b610338611625565b610338611946565b610338611abd565b61036a611ed7565b604051610377919061af52565b60405180910390f35b610338611f39565b610338612327565b610338612447565b6103a061263b565b604051610377919061afee565b61033861277d565b61036a6128e4565b61036a612944565b6103386129a4565b610338612af6565b610338612c29565b610338612ead565b6103386131ff565b61033861337c565b610338613542565b610338613767565b61040d6139e0565b604051610377919061b154565b610338613b62565b610338613e67565b610338614080565b61033861424e565b610442614332565b604051610377919061b1f2565b610457614402565b604051610377919061b269565b6103386144fd565b610457614716565b610338614811565b610442614910565b61048c6149e0565b6040519015158152602001610377565b610338614ab4565b610338614bca565b610338614d50565b610338614ec9565b61033861514d565b610338615499565b61033861553c565b61036a61597b565b6103386159db565b610338615e86565b610338616146565b601f5461048c9060ff1681565b610338616245565b6103386165d2565b602580547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602680549091166112341790556040516105579061ae61565b604051809103906000f080158015610573573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600f81527f476174657761795a45564d2e736f6c000000000000000000000000000000000060208201526025549151602481019390935292166044820152610657919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc95500000000000000000000000000000000000000000000000000000000179052616748565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b039384168102919091179182905560208054919092049092167fffffffffffffffffffffffff000000000000000000000000000000000000000090921682178155604080517f2722feee0000000000000000000000000000000000000000000000000000000081529051632722feee926004808401939192918290030181865afa158015610719573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073d919061b300565b602780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516107819061ae6f565b604051809103906000f08015801561079d573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161781556027546040517f06447d5600000000000000000000000000000000000000000000000000000000815292166004830152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d569101600060405180830381600087803b15801561083957600080fd5b505af115801561084d573d6000803e3d6000fd5b5050505060008060006040516108629061ae7d565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801561089e573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556020546040516012936001938493600093919216906108f49061ae8b565b6109039695949392919061b329565b604051809103906000f08015801561091f573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556023546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b1580156109b657600080fd5b505af11580156109ca573d6000803e3d6000fd5b50506023546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b158015610a3457600080fd5b505af1158015610a48573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610ac857600080fd5b505af1158015610adc573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610b3157600080fd5b505af1158015610b45573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610bb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bdd919061b41e565b506021546025546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116906347e7ef24906044016020604051808303816000875af1158015610c4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c72919061b41e565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610cd157600080fd5b505af1158015610ce5573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610d5b57600080fd5b505af1158015610d6f573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116925063095ea7b391506044016020604051808303816000875af1158015610de3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e07919061b41e565b50602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610e5957600080fd5b505af1158015610e6d573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610ee1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f05919061b41e565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610f6457600080fd5b505af1158015610f78573d6000803e3d6000fd5b50506040805160a08101825261032180825260016020808401918252838501928352845190810190945260008085526060840185905260808401528251602880549251151574010000000000000000000000000000000000000000027fffffffffffffffffffffff0000000000000000000000000000000000000000009093166001600160a01b0392831617929092178255915160298054919093167fffffffffffffffffffffffff000000000000000000000000000000000000000091909116179091559093509150602a9061104f908261b503565b50608091909101516003909101556040805180820190915260018082526020909101819052602c819055602d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b1790526000602c5551630618f58760e51b81527f60ee1247000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015b600060405180830381600087803b15801561117457600080fd5b505af1158015611188573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637b15118b91506034015b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168352611224926001916001600160a01b0316908790602c9060289060040161b6b1565b600060405180830381600087803b15801561123e57600080fd5b505af1158015611252573d6000803e3d6000fd5b5050505050565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa1580156112aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ce919061b723565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561134357600080fd5b505af1158015611357573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af11580156113c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ed919061b41e565b506026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905280517ff48448140000000000000000000000000000000000000000000000000000000081529051919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f48448149160048082019260009290919082900301818387803b1580156114b057600080fd5b505af11580156114c4573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637b15118b915060340160408051601f198184030181526021548383018352600184526000602085015291517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815261156e93919289926001600160a01b039091169188919060289060040161b73c565b600060405180830381600087803b15801561158857600080fd5b505af115801561159c573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156115ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611613919061b723565b905061161f8382616767565b50505050565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611676573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169a919061b723565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa1580156116ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611710919061b723565b6027546026546040516001600160a01b03918216602482015292935016319060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b179052602554602654925193945060019384936001600160a01b03928316937f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c936117d8939216910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602254611810926001600160a01b03909116908c9060009081908b90602c9060289061b790565b60405180910390a3604051630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561188457600080fd5b505af1158015611898573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250632810ae639150603401604051602081830303815290604052888486602c60286040518763ffffffff1660e01b815260040161190c9695949392919061b804565b600060405180830381600087803b15801561192657600080fd5b505af115801561193a573d6000803e3d6000fd5b50505050505050505050565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905251630618f58760e51b81527f5d67094f000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015611a0e57600080fd5b505af1158015611a22573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637b15118b915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168352611224926000916001600160a01b0316908790602c9060289060040161b6b1565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b32919061b723565b6026546040516001600160a01b03909116602482015290915060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b1790525490517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482018190526001600160a01b039092166084820152919250908190737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611c2457600080fd5b505af1158015611c38573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff19166020820152600093506001600160a01b0390911691507f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c9060340160408051601f198184030181528282526021547f4d8943bb000000000000000000000000000000000000000000000000000000008452915190926001600160a01b03909216918b9189918491634d8943bb916004808201926020929091908290030181865afa158015611d0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2e919061b723565b6040805180820182528a8152600160208201529051611d569695949392918d9160289061b835565b60405180910390a3602080546026546040516001600160a01b0392831693637b15118b93611d9e9316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815260215483830183528684526001602085015291517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b168152611e0a9391928b926001600160a01b03909116918a919060289060040161b73c565b600060405180830381600087803b158015611e2457600080fd5b505af1158015611e38573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611e8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eaf919061b723565b9050611ecf83611ebf888861b8c6565b611ec9919061b8c6565b82616767565b505050505050565b60606016805480602002602001604051908101604052809291908181526020018280548015611f2f57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611f11575b5050505050905090565b601f54604080518082018252601a81527f476174657761795a45564d55706772616465546573742e736f6c000000000000602080830191909152825190810190925260008252602554611f9e936001600160a01b0361010090910481169391166167e6565b601f546021546025546040516370a0823160e01b81526001600160a01b03918216600482015261010090930481169260019260009216906370a0823190602401602060405180830381865afa158015611ffb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201f919061b723565b6040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b0385166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156120ac57600080fd5b505af11580156120c0573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff19166020820152600093506001600160a01b0390911691507f5d7cd8ae449a6b25de63f10534ddd17d8dd3e79c7aa5f28964b7a7c760258d979060340160408051601f198184030181528282526021547f4d8943bb000000000000000000000000000000000000000000000000000000008452915190926001600160a01b039092169188916000918491634d8943bb916004808201926020929091908290030181865afa158015612193573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b7919061b723565b604080518082018252600081526001602082015290516121df9695949392919060289061b8d9565b60405180910390a360265460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b03841690637c0dcb5f9060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526122739287916001600160a01b03169060289060040161b95b565b600060405180830381600087803b15801561228d57600080fd5b505af11580156122a1573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156122f4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612318919061b723565b905061161f611ec9848461b8c6565b604051630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561239357600080fd5b505af11580156123a7573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b031692506397a1cef191506034015b6040516020818303038152906040526000600160286040518563ffffffff1660e01b8152600401612419949392919061b995565b600060405180830381600087803b15801561243357600080fd5b505af115801561161f573d6000803e3d6000fd5b60208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290516001600160a01b03909216926397d340f5926004808401938290030181865afa1580156124a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c9919061b723565b6124d490600161b9c6565b67ffffffffffffffff8111156124ec576124ec61b440565b6040519080825280601f01601f191660200182016040528015612516576020820181803683370190505b50602a90612524908261b503565b50604051630618f58760e51b81527f9507fb3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561259157600080fd5b505af11580156125a5573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637c0dcb5f915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168352612419926002916001600160a01b03169060289060040161b95b565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561277457600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561275d5783829060005260206000200180546126d09061b46f565b80601f01602080910402602001604051908101604052809291908181526020018280546126fc9061b46f565b80156127495780601f1061271e57610100808354040283529160200191612749565b820191906000526020600020905b81548152906001019060200180831161272c57829003601f168201915b5050505050815260200190600101906126b1565b50505050815250508152602001906001019061265f565b50505050905090565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905251630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561284557600080fd5b505af1158015612859573d6000803e3d6000fd5b5050602080546040516001600160a01b039091169350637b15118b9250015b60408051601f19818403018152602154838301835260018085526000602086015292517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b168152611224949293926001600160a01b0390921691889160289060040161b73c565b60606018805480602002602001604051908101604052809291908181526020018280548015611f2f576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611f11575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015611f2f576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611f11575050505050905090565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905251630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015612a6c57600080fd5b505af1158015612a80573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250632810ae6391506034016040516020818303038152906040526000600185602c60286040518763ffffffff1660e01b81526004016112249695949392919061b804565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905251630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015612bbe57600080fd5b505af1158015612bd2573d6000803e3d6000fd5b5050602080546040516001600160a01b039091169350632810ae639250015b60405160208183030381529060405260018085602c60286040518763ffffffff1660e01b81526004016112249695949392919061b804565b60208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290516000936002936001600160a01b0316926397d340f592600480830193928290030181865afa158015612c8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cb0919061b723565b612cba919061b9d9565b67ffffffffffffffff811115612cd257612cd261b440565b6040519080825280601f01601f191660200182016040528015612cfc576020820181803683370190505b5060208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290519394506002936001600160a01b03909216926397d340f5926004808401938290030181865afa158015612d61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d85919061b723565b612d8f919061b9d9565b612d9a90600161b9c6565b67ffffffffffffffff811115612db257612db261b440565b6040519080825280601f01601f191660200182016040528015612ddc576020820181803683370190505b50602a90612dea908261b503565b50604051630618f58760e51b81527f9507fb3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015612e5757600080fd5b505af1158015612e6b573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637b15118b9150603401612878565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015612efe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f22919061b723565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612f9757600080fd5b505af1158015612fab573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af115801561301d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613041919061b41e565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156130a057600080fd5b505af11580156130b4573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637c0dcb5f915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526131499287916001600160a01b03169060289060040161b95b565b600060405180830381600087803b15801561316357600080fd5b505af1158015613177573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156131ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131ee919061b723565b90506131fa8282616767565b505050565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b1790526000602c5551630618f58760e51b81527f60ee1247000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015b600060405180830381600087803b1580156132cd57600080fd5b505af11580156132e1573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b031692506306cb898391506034015b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168352611224926001600160a01b03909116908690602c9060289060040161ba14565b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b1790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561346657600080fd5b505af115801561347a573d6000803e3d6000fd5b505060215460255460265460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039283169450911691507f306ee13f48319a123b222c69908e44dcf91abffc20cacc502e3cf5a4ff23e0e49060340160408051601f19818403018152908290526134fa918690602c9060289061ba7e565b60405180910390a3602080546026546040516001600160a01b03928316936306cb89839361331f9316910160609190911b6bffffffffffffffffffffffff1916815260140190565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015613593573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135b7919061b723565b6022546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526101236004820152602481018390529192506001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015613624573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613648919061b41e565b506000600190507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156136ad57600080fd5b505af11580156136c1573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b031692506397a1cef19150603401604051602081830303815290604052858460286040518563ffffffff1660e01b8152600401613730949392919061b995565b600060405180830381600087803b15801561374a57600080fd5b505af115801561375e573d6000803e3d6000fd5b50505050505050565b6026546040516001600160a01b03909116602482015260019060009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905260255490517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561383c57600080fd5b505af1158015613850573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af11580156138c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138e6919061b41e565b506000602c55604051630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561395857600080fd5b505af115801561396c573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250632810ae639150603401604051602081830303815290604052858486602c60286040518763ffffffff1660e01b81526004016137309695949392919061b804565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156127745783829060005260206000209060020201604051806040016040529081600082018054613a379061b46f565b80601f0160208091040260200160405190810160405280929190818152602001828054613a639061b46f565b8015613ab05780601f10613a8557610100808354040283529160200191613ab0565b820191906000526020600020905b815481529060010190602001808311613a9357829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015613b4a57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411613af75790505b50505050508152505081526020019060010190613a04565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015613bb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bd7919061b723565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613c4c57600080fd5b505af1158015613c60573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015613cd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cf6919061b41e565b506026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905280517ff48448140000000000000000000000000000000000000000000000000000000081529051919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f48448149160048082019260009290919082900301818387803b158015613db957600080fd5b505af1158015613dcd573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637b15118b915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261156e9288916001600160a01b0316908790602c9060289060040161b6b1565b60208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290516000936002936001600160a01b0316926397d340f592600480830193928290030181865afa158015613eca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613eee919061b723565b613ef8919061b9d9565b67ffffffffffffffff811115613f1057613f1061b440565b6040519080825280601f01601f191660200182016040528015613f3a576020820181803683370190505b5060208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290519394506002936001600160a01b03909216926397d340f5926004808401938290030181865afa158015613f9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fc3919061b723565b613fcd919061b9d9565b613fd890600161b9c6565b67ffffffffffffffff811115613ff057613ff061b440565b6040519080825280601f01601f19166020018201604052801561401a576020820181803683370190505b50602a90614028908261b503565b50604051630618f58760e51b81527f9507fb3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024016132b3565b60208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290516001600160a01b03909216926397d340f5926004808401938290030181865afa1580156140de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614102919061b723565b61410d90600161b9c6565b67ffffffffffffffff8111156141255761412561b440565b6040519080825280601f01601f19166020018201604052801561414f576020820181803683370190505b50602a9061415d908261b503565b50604051630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156141ca57600080fd5b505af11580156141de573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b031692506397a1cef1915060340160405160208183030381529060405260018060286040518563ffffffff1660e01b8152600401612419949392919061b995565b604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156142ba57600080fd5b505af11580156142ce573d6000803e3d6000fd5b5050602080546040805160008152928301908190526021547f7c0dcb5f000000000000000000000000000000000000000000000000000000009091526001600160a01b039182169450637c0dcb5f935061241992916001911660286024840161b95b565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156127745783829060005260206000200180546143759061b46f565b80601f01602080910402602001604051908101604052809291908181526020018280546143a19061b46f565b80156143ee5780601f106143c3576101008083540402835291602001916143ee565b820191906000526020600020905b8154815290600101906020018083116143d157829003601f168201915b505050505081526020019060010190614356565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156127745760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156144e557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116144925790505b50505050508152505081526020019060010190614426565b60208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290516000936002936001600160a01b0316926397d340f592600480830193928290030181865afa158015614560573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614584919061b723565b61458e919061b9d9565b67ffffffffffffffff8111156145a6576145a661b440565b6040519080825280601f01601f1916602001820160405280156145d0576020820181803683370190505b5060208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290519394506002936001600160a01b03909216926397d340f5926004808401938290030181865afa158015614635573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614659919061b723565b614663919061b9d9565b61466e90600161b9c6565b67ffffffffffffffff8111156146865761468661b440565b6040519080825280601f01601f1916602001820160405280156146b0576020820181803683370190505b50602a906146be908261b503565b50604051630618f58760e51b81527f9507fb3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e09060240161115a565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156127745760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156147f957602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116147a65790505b5050505050815250508152602001906001019061473a565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905251630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156148d957600080fd5b505af11580156148ed573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911693506306cb898392500161331f565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156127745783829060005260206000200180546149539061b46f565b80601f016020809104026020016040519081016040528092919081815260200182805461497f9061b46f565b80156149cc5780601f106149a1576101008083540402835291602001916149cc565b820191906000526020600020905b8154815290600101906020018083116149af57829003601f168201915b505050505081526020019060010190614934565b60085460009060ff16156149f8575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015614a89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614aad919061b723565b1415905090565b604051630618f58760e51b81527f5d67094f000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015614b2057600080fd5b505af1158015614b34573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637c0dcb5f915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168352612419926000916001600160a01b03169060289060040161b95b565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905251630618f58760e51b81527f5d67094f000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015614c9257600080fd5b505af1158015614ca6573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637b15118b915060340160408051601f1981840301815260215483830183526001845260006020850181905292517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b168152611224949293926001600160a01b0390921691889160289060040161b73c565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905251630618f58760e51b81527f60ee1247000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015614e1857600080fd5b505af1158015614e2c573d6000803e3d6000fd5b5050602080546026546040805160609290921b6bffffffffffffffffffffffff1916938201939093528251808203601401815260215460748301855260006034840181815260549094015293517f7b15118b0000000000000000000000000000000000000000000000000000000081526001600160a01b039384169650637b15118b9550611224949193600193921691889160289060040161b73c565b60208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290516000936002936001600160a01b0316926397d340f592600480830193928290030181865afa158015614f2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614f50919061b723565b614f5a919061b9d9565b67ffffffffffffffff811115614f7257614f7261b440565b6040519080825280601f01601f191660200182016040528015614f9c576020820181803683370190505b5060208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290519394506002936001600160a01b03909216926397d340f5926004808401938290030181865afa158015615001573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615025919061b723565b61502f919061b9d9565b61503a90600161b9c6565b67ffffffffffffffff8111156150525761505261b440565b6040519080825280601f01601f19166020018201604052801561507c576020820181803683370190505b50602a9061508a908261b503565b50604051630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156150f757600080fd5b505af115801561510b573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250632810ae639150603401612bf1565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa15801561519e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906151c2919061b723565b6021546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526101236004820152602481018390529192506001600160a01b03169063a9059cbb906044016020604051808303816000875af115801561522f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615253919061b41e565b506027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156152c657600080fd5b505af11580156152da573d6000803e3d6000fd5b50506021546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a60048201526001600160a01b03909116925063f687d12a9150602401600060405180830381600087803b15801561533d57600080fd5b505af1158015615351573d6000803e3d6000fd5b5050604051630618f58760e51b81527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b1580156153c257600080fd5b505af11580156153d6573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637c0dcb5f915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261546b9287916001600160a01b03169060289060040161b95b565b600060405180830381600087803b15801561548557600080fd5b505af1158015611ecf573d6000803e3d6000fd5b604051630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561550557600080fd5b505af1158015615519573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911693506397a1cef19250016123e5565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa15801561558d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906155b1919061b723565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015615603573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615627919061b723565b6027546025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152929350163190600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156156a557600080fd5b505af11580156156b9573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af115801561572b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061574f919061b41e565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156157ae57600080fd5b505af11580156157c2573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b031692506397a1cef19150603401604051602081830303815290604052878460286040518563ffffffff1660e01b8152600401615831949392919061b995565b600060405180830381600087803b15801561584b57600080fd5b505af115801561585f573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156158b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906158d6919061b723565b90506158e28582616767565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015615933573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615957919061b723565b90506159638582616767565b60275461375e9085906001600160a01b031631616767565b60606015805480602002602001604051908101604052809291908181526020018280548015611f2f576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611f11575050505050905090565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015615a2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615a50919061b723565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015615aa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615ac6919061b723565b6027546026546040516001600160a01b03918216602482015292935016319060009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905260255490517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015615ba157600080fd5b505af1158015615bb5573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015615c27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615c4b919061b41e565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015615caa57600080fd5b505af1158015615cbe573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250632810ae639150603401604051602081830303815290604052888486602c60286040518763ffffffff1660e01b8152600401615d329695949392919061b804565b600060405180830381600087803b158015615d4c57600080fd5b505af1158015615d60573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015615db3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615dd7919061b723565b9050615de38682616767565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015615e34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615e58919061b723565b9050615e648682616767565b602754615e7c9086906001600160a01b031631616767565b5050505050505050565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015615ed7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615efb919061b723565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015615f4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615f71919061b723565b60275460255460265460405160609190911b6bffffffffffffffffffffffff191660208201529293506001600160a01b039182163192600192839216907f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c9060340160408051601f19818403018152602254838301835260008085526001602086015292516160169492936001600160a01b03909216928d929182919060289061b8d9565b60405180910390a3604051630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561608a57600080fd5b505af115801561609e573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b031692506397a1cef19150603401604051602081830303815290604052878460286040518563ffffffff1660e01b815260040161610d949392919061b995565b600060405180830381600087803b15801561612757600080fd5b505af115801561613b573d6000803e3d6000fd5b505050505050505050565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905251630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561620e57600080fd5b505af1158015616222573d6000803e3d6000fd5b5050602080546040516001600160a01b039091169350637b15118b9250016111c6565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015616296573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906162ba919061b723565b6020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561634b57600080fd5b505af115801561635f573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff19166020820152600093506001600160a01b0390911691507f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c9060340160408051601f198184030181528282526021547f4d8943bb000000000000000000000000000000000000000000000000000000008452915190926001600160a01b039092169188916000918491634d8943bb916004808201926020929091908290030181865afa158015616432573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616456919061b723565b6040805180820182526000815260016020820152905161647e9695949392919060289061b8d9565b60405180910390a3602080546026546040516001600160a01b0392831693637c0dcb5f936164c69316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261651e9287916001600160a01b03169060289060040161b95b565b600060405180830381600087803b15801561653857600080fd5b505af115801561654c573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa15801561659f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906165c3919061b723565b90506131fa611ec9848461b8c6565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260029260009216906370a0823190602401602060405180830381865afa158015616623573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616647919061b723565b6021549091506001600160a01b031663a9059cbb61012361666960018561b8c6565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156166cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906166f0919061b41e565b50604051630618f58760e51b81527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024016153a8565b600061675261ae99565b61675d8484836167fb565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b1580156167d257600080fd5b505afa158015611ecf573d6000803e3d6000fd5b6167ee61ae99565b6112528585858486616876565b6000806168088584616976565b905061686b6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f7879000000815250828660405160200161685692919061bacd565b60405160208183030381529060405285616982565b9150505b9392505050565b6040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201528190737109709ecfa91a80626ff3989d68f67f5b1dd12d9081906306447d5690602401600060405180830381600087803b1580156168e857600080fd5b505af19250505080156168f9575060015b61690e57616909878787876169b0565b61375e565b61691a878787876169b0565b806001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561695557600080fd5b505af1158015616969573d6000803e3d6000fd5b5050505050505050505050565b600061686f83836169c9565b60c081015151600090156169a65761699f84848460c001516169e4565b905061686f565b61699f8484616b8a565b60006169bc8483616c75565b9050611252858285616c81565b60006169d5838361704b565b61686f83836020015184616982565b6000806169ef61705b565b905060006169fd868361712e565b90506000616a1482606001518360200151856175d4565b90506000616a24838389896177e6565b90506000616a3182618663565b602081015181519192509060030b15616aa457898260400151604051602001616a5b92919061baef565b60408051601f19818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252616a9b9160040161bb70565b60405180910390fd5b6000616ae76040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001618832565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90616b3a90849060040161bb70565b602060405180830381865afa158015616b57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616b7b919061b300565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590616bdf90879060040161bb70565b600060405180830381865afa158015616bfc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616c24919081019061bc3c565b90506000616c528285604051602001616c3e92919061bc71565b604051602081830303815290604052618a32565b90506001600160a01b03811661675d578484604051602001616a5b92919061bca0565b60006169d58383618a45565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201527fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61036024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90600090829063667f9d7090604401602060405180830381865afa158015616d1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616d41919061b723565b905080616ee8576000616d5386618a51565b604080518082018252600581527f352e302e3000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150616dde905b60408051808201825260008082526020918201528151808301909252845182528085019082015290618b49565b80616dea575060008451115b15616e6d576040517f4f1ef2860000000000000000000000000000000000000000000000000000000081526001600160a01b03871690634f1ef28690616e36908890889060040161bacd565b600060405180830381600087803b158015616e5057600080fd5b505af1158015616e64573d6000803e3d6000fd5b50505050616ee2565b6040517f3659cfe60000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152871690633659cfe690602401600060405180830381600087803b158015616ec957600080fd5b505af1158015616edd573d6000803e3d6000fd5b505050505b50611252565b806000616ef482618a51565b604080518082018252600581527f352e302e3000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150616f5690616db1565b80616f62575060008551115b15616fe7576040517f9623609d0000000000000000000000000000000000000000000000000000000081526001600160a01b03831690639623609d90616fb0908a908a908a9060040161bd4b565b600060405180830381600087803b158015616fca57600080fd5b505af1158015616fde573d6000803e3d6000fd5b5050505061375e565b6040517f99a88ec40000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015287811660248301528316906399a88ec490604401600060405180830381600087803b15801561695557600080fd5b61705782826000618b5d565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c906170e290849060040161bd7c565b600060405180830381865afa1580156170ff573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617127919081019061bdc3565b9250505090565b6171606040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d90506171ab6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6171b485618c60565b602082015260006171c486619045565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015617206573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261722e919081019061bdc3565b86838560200151604051602001617248949392919061be0c565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb11906172a090859060040161bb70565b600060405180830381865afa1580156172bd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526172e5919081019061bdc3565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f69061732d90849060040161bf10565b602060405180830381865afa15801561734a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061736e919061b41e565b6173835781604051602001616a5b919061bf62565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906173c890849060040161bff4565b600060405180830381865afa1580156173e5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261740d919081019061bdc3565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f69061745490849060040161c046565b602060405180830381865afa158015617471573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190617495919061b41e565b1561752a576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906174df90849060040161c046565b600060405180830381865afa1580156174fc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617524919081019061bdc3565b60408501525b846001600160a01b03166349c4fac882866000015160405160200161754f919061c098565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161757b92919061c104565b600060405180830381865afa158015617598573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526175c0919081019061bdc3565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816175f05790505090506040518060400160405280600481526020017f6772657000000000000000000000000000000000000000000000000000000000815250816000815181106176505761765061c129565b60200260200101819052506040518060400160405280600381526020017f2d726c0000000000000000000000000000000000000000000000000000000000815250816001815181106176a4576176a461c129565b6020026020010181905250846040516020016176c0919061c158565b604051602081830303815290604052816002815181106176e2576176e261c129565b6020026020010181905250826040516020016176fe919061c1c4565b604051602081830303815290604052816003815181106177205761772061c129565b6020026020010181905250600061773682618663565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506177c790604080518082018252600080825260209182015281518083019092528451825280850190820152906192c8565b6177dc5785604051602001616a5b919061c205565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015617836565b511590565b6179aa578260200151156178f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401616a9b565b8260c00151156179aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401616a9b565b6040805160ff8082526120008201909252600091816020015b60608152602001906001900390816179c357905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280617a1e9061c296565b935060ff1681518110617a3357617a3361c129565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001617a84919061c2b5565b604051602081830303815290604052828280617a9f9061c296565b935060ff1681518110617ab457617ab461c129565b60200260200101819052506040518060400160405280600681526020017f6465706c6f790000000000000000000000000000000000000000000000000000815250828280617b019061c296565b935060ff1681518110617b1657617b1661c129565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d65000000000000000000000000000000000000815250828280617b639061c296565b935060ff1681518110617b7857617b7861c129565b60200260200101819052508760200151828280617b949061c296565b935060ff1681518110617ba957617ba961c129565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e747261637450617468000000000000000000000000000000000000815250828280617bf69061c296565b935060ff1681518110617c0b57617c0b61c129565b602090810291909101015287518282617c238161c296565b935060ff1681518110617c3857617c3861c129565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280617c859061c296565b935060ff1681518110617c9a57617c9a61c129565b6020026020010181905250617cae46619329565b8282617cb98161c296565b935060ff1681518110617cce57617cce61c129565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280617d1b9061c296565b935060ff1681518110617d3057617d3061c129565b602002602001018190525086828280617d489061c296565b935060ff1681518110617d5d57617d5d61c129565b6020908102919091010152855115617e845760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f6465000000000000000000000060208201528282617dae8161c296565b935060ff1681518110617dc357617dc361c129565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90617e1390899060040161bb70565b600060405180830381865afa158015617e30573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617e58919081019061bdc3565b8282617e638161c296565b935060ff1681518110617e7857617e7861c129565b60200260200101819052505b846020015115617f545760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282617ecd8161c296565b935060ff1681518110617ee257617ee261c129565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280617f2f9061c296565b935060ff1681518110617f4457617f4461c129565b602002602001018190525061811b565b617f8c6178318660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b61801f5760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282617fcf8161c296565b935060ff1681518110617fe457617fe461c129565b60200260200101819052508460a00151604051602001618004919061c158565b604051602081830303815290604052828280617f2f9061c296565b8460c0015115801561806257506040808901518151808301835260008082526020918201528251808401909352815183529081019082015261806090511590565b155b1561811b5760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826180a68161c296565b935060ff16815181106180bb576180bb61c129565b60200260200101819052506180cf886193c9565b6040516020016180df919061c158565b6040516020818303038152906040528282806180fa9061c296565b935060ff168151811061810f5761810f61c129565b60200260200101819052505b6040808601518151808301835260008082526020918201528251808401909352815183529081019082015261814f90511590565b6181e45760408051808201909152600b81527f2d2d72656c617965724964000000000000000000000000000000000000000000602082015282826181928161c296565b935060ff16815181106181a7576181a761c129565b602002602001018190525084604001518282806181c39061c296565b935060ff16815181106181d8576181d861c129565b60200260200101819052505b6060850151156183055760408051808201909152600681527f2d2d73616c7400000000000000000000000000000000000000000000000000006020820152828261822d8161c296565b935060ff16815181106182425761824261c129565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa1580156182b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526182d9919081019061bdc3565b82826182e48161c296565b935060ff16815181106182f9576182f961c129565b60200260200101819052505b60e085015151156183ac5760408051808201909152600a81527f2d2d6761734c696d6974000000000000000000000000000000000000000000006020820152828261834f8161c296565b935060ff16815181106183645761836461c129565b60200260200101819052506183808560e0015160000151619329565b828261838b8161c296565b935060ff16815181106183a0576183a061c129565b60200260200101819052505b60e085015160200151156184565760408051808201909152600a81527f2d2d676173507269636500000000000000000000000000000000000000000000602082015282826183f98161c296565b935060ff168151811061840e5761840e61c129565b602002602001018190525061842a8560e0015160200151619329565b82826184358161c296565b935060ff168151811061844a5761844a61c129565b60200260200101819052505b60e085015160400151156185005760408051808201909152600e81527f2d2d6d6178466565506572476173000000000000000000000000000000000000602082015282826184a38161c296565b935060ff16815181106184b8576184b861c129565b60200260200101819052506184d48560e0015160400151619329565b82826184df8161c296565b935060ff16815181106184f4576184f461c129565b60200260200101819052505b60e085015160600151156185aa5760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828261854d8161c296565b935060ff16815181106185625761856261c129565b602002602001018190525061857e8560e0015160600151619329565b82826185898161c296565b935060ff168151811061859e5761859e61c129565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156185c8576185c861b440565b6040519080825280602002602001820160405280156185fb57816020015b60608152602001906001900390816185e65790505b50905060005b8260ff168160ff16101561865457838160ff16815181106186245761862461c129565b6020026020010151828260ff16815181106186415761864161c129565b6020908102919091010152600101618601565b5093505050505b949350505050565b61868a6040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916187109186910161c320565b600060405180830381865afa15801561872d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052618755919081019061bdc3565b905060006187638683619eb8565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401618793919061b1f2565b6000604051808303816000875af11580156187b2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526187da919081019061c367565b805190915060030b158015906187f35750602081015151155b80156188025750604081015151155b156177dc578160008151811061881a5761881a61c129565b6020026020010151604051602001616a5b919061c41d565b606060006188678560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252865182528087019082015290915061889e9082905b9061a00d565b156189fb57600061891b826189158461890f6188e18a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b9061a034565b9061a096565b604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061897f90829061a00d565b156189e957604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526189e6905b829061a11b565b90505b6189f28161a141565b9250505061686f565b8215618a14578484604051602001616a5b92919061c609565b505060408051602081019091526000815261686f565b509392505050565b6000808251602084016000f09392505050565b61705782826001618b5d565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fad3cb1cc00000000000000000000000000000000000000000000000000000000179052905160609160009182916001600160a01b03861691618ac6919061c6b0565b600060405180830381855afa9150503d8060008114618b01576040519150601f19603f3d011682016040523d82523d6000602084013e618b06565b606091505b5091509150818015618b19575060208151115b15618b32578080602001905181019061865b919061bdc3565b505060408051602081019091526000815292915050565b6000618b55838361a1aa565b159392505050565b8160a0015115618b6c57505050565b6000618b7984848461a285565b90506000618b8682618663565b602081015181519192509060030b158015618c225750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618c2290604080518082018252600080825260209182015281518083019092528451825280850190820152618898565b15618c2f57505050505050565b60408201515115618c4f578160400151604051602001616a5b919061c6cc565b80604051602001616a5b919061c72a565b60606000618c958360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150618cfa905b82906192c8565b15618d6957604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261686f90618d6490839061a820565b61a141565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618dcb905b829061a8aa565b600103618e9857604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618e31906189df565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261686f90618d64905b839061a11b565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618ef790618cf3565b1561902e57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290618f5f90839061a944565b905060008160018351618f72919061b8c6565b81518110618f8257618f8261c129565b60200260200101519050619025618d64618ff86040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529061a820565b95945050505050565b82604051602001616a5b919061c795565b50919050565b6060600061907a8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506190dc90618cf3565b156190ea5761686f8161a141565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261914990618dc4565b6001036191b357604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261686f90618d6490618e91565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261921290618cf3565b1561902e57604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061927a90839061a944565b90506001815111156192b6578060028251619295919061b8c6565b815181106192a5576192a561c129565b602002602001015192505050919050565b5082604051602001616a5b919061c795565b8051825160009111156192dd57506000616761565b815183516020850151600092916192f39161b9c6565b6192fd919061b8c6565b905082602001518103619314576001915050616761565b82516020840151819020912014905092915050565b606060006193368361a9e9565b600101905060008167ffffffffffffffff8111156193565761935661b440565b6040519080825280601f01601f191660200182016040528015619380576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461938a57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091619455905b8290618b49565b1561949557505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e73650000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526194f49061944e565b1561953457505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d49540000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526195939061944e565b156195d357505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526196329061944e565b806196975750604080518082018252601081527f47504c2d322e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526196979061944e565b156196d757505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526197369061944e565b8061979b5750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261979b9061944e565b156197db57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261983a9061944e565b8061989f5750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261989f9061944e565b156198df57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261993e9061944e565b806199a35750604080518082018252601181527f4c47504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526199a39061944e565b156199e357505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152619a429061944e565b15619a8257505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152619ae19061944e565b15619b2157505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152619b809061944e565b15619bc057505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152619c1f9061944e565b15619c5f57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e300000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152619cbe9061944e565b15619cfe57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152619d5d9061944e565b80619dc25750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152619dc29061944e565b15619e0257505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e3100000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152619e619061944e565b15619ea157505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151616a5b929060200161c873565b60608060005b8451811015619f435781858281518110619eda57619eda61c129565b6020026020010151604051602001619ef392919061bc71565b604051602081830303815290604052915060018551619f12919061b8c6565b8114619f3b5781604051602001619f29919061c9dc565b60405160208183030381529060405291505b600101619ebe565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081619f5c5790505090508381600081518110619f8757619f8761c129565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110619fdb57619fdb61c129565b60200260200101819052508181600281518110619ffa57619ffa61c129565b6020908102919091010152949350505050565b602080830151835183519284015160009361a02b929184919061aacb565b14159392505050565b6040805180820190915260008082526020820152600061a066846000015185602001518560000151866020015161abdc565b905083602001518161a078919061b8c6565b8451859061a08790839061b8c6565b90525060208401525090919050565b604080518082019091526000808252602082015281518351101561a0bb575081616761565b602080830151908401516001911461a0e25750815160208481015190840151829020919020145b801561a1135782518451859061a0f990839061b8c6565b905250825160208501805161a10f90839061b9c6565b9052505b509192915050565b604080518082019091526000808252602082015261a13a83838361acfc565b5092915050565b60606000826000015167ffffffffffffffff81111561a1625761a16261b440565b6040519080825280601f01601f19166020018201604052801561a18c576020820181803683370190505b509050600060208201905061a13a818560200151866000015161ada7565b815181516000919081111561a1bd575081515b6020808501519084015160005b8381101561a276578251825180821461a24657600019602087101561a2255760018461a1f789602061b8c6565b61a201919061b9c6565b61a20c90600861ca1d565b61a21790600261cb1b565b61a221919061b8c6565b1990505b818116838216818103911461a2435797506167619650505050505050565b50505b61a25160208661b9c6565b945061a25e60208561b9c6565b9350505060208161a26f919061b9c6565b905061a1ca565b50845186516177dc919061cb27565b6060600061a29161705b565b6040805160ff808252612000820190925291925060009190816020015b606081526020019060019003908161a2ae57905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061a3099061c296565b935060ff168151811061a31e5761a31e61c129565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e330000000000000000000000000000000000000000000000000081525060405160200161a36f919061cb47565b60405160208183030381529060405282828061a38a9061c296565b935060ff168151811061a39f5761a39f61c129565b60200260200101819052506040518060400160405280600881526020017f76616c696461746500000000000000000000000000000000000000000000000081525082828061a3ec9061c296565b935060ff168151811061a4015761a40161c129565b60200260200101819052508260405160200161a41d919061c1c4565b60405160208183030381529060405282828061a4389061c296565b935060ff168151811061a44d5761a44d61c129565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e74726163740000000000000000000000000000000000000000000081525082828061a49a9061c296565b935060ff168151811061a4af5761a4af61c129565b602002602001018190525061a4c4878461ae21565b828261a4cf8161c296565b935060ff168151811061a4e45761a4e461c129565b60209081029190910101528551511561a5905760408051808201909152600b81527f2d2d7265666572656e63650000000000000000000000000000000000000000006020820152828261a5368161c296565b935060ff168151811061a54b5761a54b61c129565b602002602001018190525061a56486600001518461ae21565b828261a56f8161c296565b935060ff168151811061a5845761a58461c129565b60200260200101819052505b85608001511561a5fe5760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261a5d98161c296565b935060ff168151811061a5ee5761a5ee61c129565b602002602001018190525061a664565b841561a6645760408051808201909152601281527f2d2d726571756972655265666572656e636500000000000000000000000000006020820152828261a6438161c296565b935060ff168151811061a6585761a65861c129565b60200260200101819052505b6040860151511561a7005760408051808201909152600d81527f2d2d756e73616665416c6c6f77000000000000000000000000000000000000006020820152828261a6ae8161c296565b935060ff168151811061a6c35761a6c361c129565b6020026020010181905250856040015182828061a6df9061c296565b935060ff168151811061a6f45761a6f461c129565b60200260200101819052505b85606001511561a76a5760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261a7498161c296565b935060ff168151811061a75e5761a75e61c129565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561a7885761a78861b440565b60405190808252806020026020018201604052801561a7bb57816020015b606081526020019060019003908161a7a65790505b50905060005b8260ff168160ff16101561a81457838160ff168151811061a7e45761a7e461c129565b6020026020010151828260ff168151811061a8015761a80161c129565b602090810291909101015260010161a7c1565b50979650505050505050565b604080518082019091526000808252602082015281518351101561a845575081616761565b8151835160208501516000929161a85b9161b9c6565b61a865919061b8c6565b6020840151909150600190821461a886575082516020840151819020908220145b801561a8a15783518551869061a89d90839061b8c6565b9052505b50929392505050565b600080826000015161a8ce856000015186602001518660000151876020015161abdc565b61a8d8919061b9c6565b90505b8351602085015161a8ec919061b9c6565b811161a13a578161a8fc8161cb8c565b925050826000015161a93385602001518361a917919061b8c6565b865161a923919061b8c6565b838660000151876020015161abdc565b61a93d919061b9c6565b905061a8db565b6060600061a952848461a8aa565b61a95d90600161b9c6565b67ffffffffffffffff81111561a9755761a97561b440565b60405190808252806020026020018201604052801561a9a857816020015b606081526020019060019003908161a9935790505b50905060005b8151811015618a2a5761a9c4618d64868661a11b565b82828151811061a9d65761a9d661c129565b602090810291909101015260010161a9ae565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061aa32577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831061aa5e576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061aa7c57662386f26fc10000830492506010015b6305f5e100831061aa94576305f5e100830492506008015b612710831061aaa857612710830492506004015b6064831061aaba576064830492506002015b600a83106167615760010192915050565b60008085841161abd2576020841161ab7e576000841561ab1657600161aaf286602061b8c6565b61aafd90600861ca1d565b61ab0890600261cb1b565b61ab12919061b8c6565b1990505b835181168561ab25898961b9c6565b61ab2f919061b8c6565b805190935082165b81811461ab695787841161ab51578794505050505061865b565b8361ab5b8161cba6565b94505082845116905061ab37565b61ab73878561b9c6565b94505050505061865b565b83832061ab8b858861b8c6565b61ab95908761b9c6565b91505b85821061abd05784822080820361abbd5761abb3868461b9c6565b935050505061865b565b61abc860018461b8c6565b92505061ab98565b505b5092949350505050565b6000838186851161ace7576020851161ac96576000851561ac2857600161ac0487602061b8c6565b61ac0f90600861ca1d565b61ac1a90600261cb1b565b61ac24919061b8c6565b1990505b8451811660008761ac398b8b61b9c6565b61ac43919061b8c6565b855190915083165b82811461ac885781861061ac705761ac638b8b61b9c6565b965050505050505061865b565b8561ac7a8161cb8c565b96505083865116905061ac4b565b85965050505050505061865b565b508383206000905b61aca8868961b8c6565b821161ace55785832080820361acc4578394505050505061865b565b61accf60018561b9c6565b935050818061acdd9061cb8c565b92505061ac9e565b505b61acf1878761b9c6565b979650505050505050565b6040805180820190915260008082526020820152600061ad2e856000015186602001518660000151876020015161abdc565b60208087018051918601919091525190915061ad4a908261b8c6565b83528451602086015161ad5d919061b9c6565b810361ad6c576000855261ad9e565b8351835161ad7a919061b9c6565b8551869061ad8990839061b8c6565b905250835161ad98908261b9c6565b60208601525b50909392505050565b6020811061addf578151835261adbe60208461b9c6565b925061adcb60208361b9c6565b915061add860208261b8c6565b905061ada7565b600019811561ae0e57600161adf583602061b8c6565b61ae019061010061cb1b565b61ae0b919061b8c6565b90505b9151835183169219169190911790915250565b6060600061ae2f848461712e565b805160208083015160405193945061ae499390910161cbbd565b60405160208183030381529060405291505092915050565b610b67806200cc1683390190565b61063a806200d77d83390190565b61106f806200ddb783390190565b612072806200ee2683390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161aedc61aee1565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161aedc6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b8181101561af935783516001600160a01b031683526020938401939092019160010161af6c565b509095945050505050565b60005b8381101561afb957818101518382015260200161afa1565b50506000910152565b6000815180845261afda81602086016020860161af9e565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561b0ea577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b8181101561b0d0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261b0ba84865161afc2565b602095860195909450929092019160010161b080565b50919750505060209485019492909201915060010161b016565b50929695505050505050565b600081518084526020840193506020830160005b8281101561b14a5781517fffffffff000000000000000000000000000000000000000000000000000000001686526020958601959091019060010161b10a565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561b0ea577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516040875261b1c0604088018261afc2565b905060208201519150868103602088015261b1db818361b0f6565b96505050602093840193919091019060010161b17c565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561b0ea577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845261b25485835161afc2565b9450602093840193919091019060010161b21a565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561b0ea577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b038151168652602081015190506040602087015261b2ea604087018261b0f6565b955050602093840193919091019060010161b291565b60006020828403121561b31257600080fd5b81516001600160a01b038116811461686f57600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff881660408301528660608301526003861061b3e3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a083015261b40460c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b60006020828403121561b43057600080fd5b8151801515811461686f57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600181811c9082168061b48357607f821691505b60208210810361903f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b601f8211156131fa57806000526020600020601f840160051c8101602085101561b4e35750805b601f840160051c820191505b81811015611252576000815560010161b4ef565b815167ffffffffffffffff81111561b51d5761b51d61b440565b61b5318161b52b845461b46f565b8461b4bc565b6020601f82116001811461b565576000831561b54d5750848201515b600019600385901b1c1916600184901b178455611252565b600084815260208120601f198516915b8281101561b595578785015182556020948501946001909201910161b575565b508482101561b5b35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b600081546001600160a01b038116845260ff8160a01c1615156020850152506001600160a01b0360018301541660408401526002820160a060608501526000815461b60c8161b46f565b8060a0880152600182166000811461b62b576001811461b6655761b699565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831660c089015260c082151560051b890101935061b699565b84600052602060002060005b8381101561b6905781548a820160c0015260019091019060200161b671565b890160c0019450505b50505060038401546080860152809250505092915050565b60e08152600061b6c460e083018961afc2565b8760208401526001600160a01b0387166040840152828103606084015261b6eb818761afc2565b85546080850152600186015460ff16151560a085015290505b82810360c084015261b716818561b5c2565b9998505050505050505050565b60006020828403121561b73557600080fd5b5051919050565b60e08152600061b74f60e083018961afc2565b8760208401526001600160a01b0387166040840152828103606084015261b776818761afc2565b855160808501526020860151151560a0850152905061b704565b6101208152600061b7a561012083018b61afc2565b6001600160a01b038a16602084015288604084015287606084015286608084015282810360a084015261b7d8818761afc2565b855460c0850152600186015460ff16151560e085015290505b828103610100840152616b7b818561b5c2565b60e08152600061b81760e083018961afc2565b876020840152866040840152828103606084015261b6eb818761afc2565b6101208152600061b84a61012083018b61afc2565b6001600160a01b038a16602084015288604084015287606084015286608084015282810360a084015261b87d818761afc2565b855160c08501526020860151151560e0850152905061b7f1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156167615761676161b897565b6101208152600061b8ee61012083018a61afc2565b6001600160a01b03891660208401528760408401528660608401528560808401528281038060a08501526000825261b93560c0850187805182526020908101511515910152565b602081016101008501525061b94d602082018561b5c2565b9a9950505050505050505050565b60808152600061b96e608083018761afc2565b8560208401526001600160a01b0385166040840152828103606084015261acf1818561b5c2565b60808152600061b9a8608083018761afc2565b856020840152846040840152828103606084015261acf1818561b5c2565b808201808211156167615761676161b897565b60008261ba0f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60c08152600061ba2760c083018861afc2565b6001600160a01b0387166020840152828103604084015261ba48818761afc2565b85546060850152600186015460ff1615156080850152905082810360a084015261ba72818561b5c2565b98975050505050505050565b60a08152600061ba9160a083018761afc2565b828103602084015261baa3818761afc2565b85546040850152600186015460ff16151560608501529050828103608084015261acf1818561b5c2565b6001600160a01b038316815260406020820152600061865b604083018461afc2565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161bb2781601a85016020880161af9e565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161bb6481601c84016020880161af9e565b01601c01949350505050565b60208152600061686f602083018461afc2565b6040516060810167ffffffffffffffff8111828210171561bba65761bba661b440565b60405290565b60008067ffffffffffffffff84111561bbc75761bbc761b440565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561bbf65761bbf661b440565b60405283815290508082840185101561bc0e57600080fd5b618a2a84602083018561af9e565b600082601f83011261bc2d57600080fd5b61686f8383516020850161bbac565b60006020828403121561bc4e57600080fd5b815167ffffffffffffffff81111561bc6557600080fd5b61675d8482850161bc1c565b6000835161bc8381846020880161af9e565b83519083019061bc9781836020880161af9e565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161bcd881601a85016020880161af9e565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161bd1581603384016020880161af9e565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b6001600160a01b03841681526001600160a01b0383166020820152606060408201526000619025606083018461afc2565b60408152600b60408201527f464f554e4452595f4f5554000000000000000000000000000000000000000000606082015260806020820152600061686f608083018461afc2565b60006020828403121561bdd557600080fd5b815167ffffffffffffffff81111561bdec57600080fd5b8201601f8101841361bdfd57600080fd5b61675d8482516020840161bbac565b6000855161be1e818460208a0161af9e565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161be58816001840160208a0161af9e565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161be9681600284016020890161af9e565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161bed881600284016020880161af9e565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061bf23604083018461afc2565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161bf9a81601f85016020870161af9e565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061c007604083018461afc2565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061c059604083018461afc2565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161c0d081601485016020870161af9e565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061c117604083018561afc2565b828103602084015261686b818561afc2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161c19081600185016020870161af9e565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161c1d681846020870161af9e565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161c28981604b85016020870161af9e565b91909101604b0192915050565b600060ff821660ff810361c2ac5761c2ac61b897565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161c31381602985016020870161af9e565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061686f608083018461afc2565b60006020828403121561c37957600080fd5b815167ffffffffffffffff81111561c39057600080fd5b82016060818503121561c3a257600080fd5b61c3aa61bb83565b81518060030b811461c3bb57600080fd5b8152602082015167ffffffffffffffff81111561c3d757600080fd5b61c3e38682850161bc1c565b602083015250604082015167ffffffffffffffff81111561c40357600080fd5b61c40f8682850161bc1c565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161c47b81602185016020870161af9e565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161c66781602185016020880161af9e565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161c6a481602e84016020880161af9e565b01602e01949350505050565b6000825161c6c281846020870161af9e565b9190910192915050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161c31381602985016020870161af9e565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161c78881602285016020870161af9e565b9190910160220192915050565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161c7cd81600e85016020870161af9e565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161c8ab81601885016020880161af9e565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161c8e881601c84016020880161af9e565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161c9ee81846020870161af9e565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b80820281158282048414176167615761676161b897565b6001815b600184111561ca6f5780850481111561ca535761ca5361b897565b600184161561ca6157908102905b60019390931c92800261ca38565b935093915050565b60008261ca8657506001616761565b8161ca9357506000616761565b816001811461caa9576002811461cab35761cacf565b6001915050616761565b60ff84111561cac45761cac461b897565b50506001821b616761565b5060208310610133831016604e8410600b841016171561caf2575081810a616761565b61caff600019848461ca34565b806000190482111561cb135761cb1361b897565b029392505050565b600061686f838361ca77565b818103600083128015838313168383128216171561a13a5761a13a61b897565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161cb7f81601c85016020870161af9e565b91909101601c0192915050565b6000600019820361cb9f5761cb9f61b897565b5060010190565b60008161cbb55761cbb561b897565b506000190190565b6000835161cbcf81846020880161af9e565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161cc0981600184016020880161af9e565b0160010194935050505056fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea2646970667358221220c069e4cb3e16bcddc5b07d6ba4019a062fbae92d695877ad19f66fc9ac6047fd64736f6c634300081a00336080604052348015600f57600080fd5b5061061b8061001f6000396000f3fe60806040526004361061002a5760003560e01c80635bcfd61614610033578063c9028a361461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e366004610151565b610073565b34801561005f57600080fd5b5061003161006e36600461020e565b6100ee565b6060811561008a576100878284018461027f565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610375565b6100c560408a0160208b016103e1565b896040013533866040516100de96959493929190610445565b60405180910390a1505050505050565b7fd75bb509c8f32a725aac99ac5c4541060dbfb889a3aca8314d6f00395618c4c48160405161011d9190610507565b60405180910390a150565b803573ffffffffffffffffffffffffffffffffffffffff8116811461014c57600080fd5b919050565b60008060008060006080868803121561016957600080fd5b853567ffffffffffffffff81111561018057600080fd5b86016060818903121561019257600080fd5b94506101a060208701610128565b935060408601359250606086013567ffffffffffffffff8111156101c357600080fd5b8601601f810188136101d457600080fd5b803567ffffffffffffffff8111156101eb57600080fd5b8860208284010111156101fd57600080fd5b959894975092955050506020019190565b60006020828403121561022057600080fd5b813567ffffffffffffffff81111561023757600080fd5b82016080818503121561024957600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561029157600080fd5b813567ffffffffffffffff8111156102a857600080fd5b8201601f810184136102b957600080fd5b803567ffffffffffffffff8111156102d3576102d3610250565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033f5761033f610250565b60405281815282820160200186101561035757600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126103aa57600080fd5b83018035915067ffffffffffffffff8211156103c557600080fd5b6020019150368190038213156103da57600080fd5b9250929050565b6000602082840312156103f357600080fd5b61024982610128565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60a08152600061045960a08301888a6103fc565b73ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff851660608401528281036080840152835180825260005b818110156104c3576020818701810151848301820152016104a7565b5060006020828401015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011683010192505050979650505050505050565b6020815273ffffffffffffffffffffffffffffffffffffffff61052983610128565b16602082015273ffffffffffffffffffffffffffffffffffffffff61055060208401610128565b166040820152600080604084013590508060608401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261059c57600080fd5b830160208101903567ffffffffffffffff8111156105b957600080fd5b8036038213156105c857600080fd5b6080808501526105dc60a0850182846103fc565b9594505050505056fea264697066735822122097b135946b5f8ffb91b019442462dc27864bb547c0a533c3cc3e01dd4abecc7964736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea2646970667358221220eaa287ea22d82335c1d97ef661cb17f1296902daa41cca34de107966248e954364736f6c634300081a003360c060405234801561001057600080fd5b5060405161207238038061207283398101604081905261002f916101f0565b6001600160a01b038216158061004c57506001600160a01b038116155b1561006a5760405163d92e233d60e01b815260040160405180910390fd5b60066100768982610342565b5060076100838882610342565b506008805460ff191660ff881617905560808590528360028111156100aa576100aa610400565b60a08160028111156100be576100be610400565b905250600192909255600080546001600160a01b039283166001600160a01b0319909116179055600880549190921661010002610100600160a81b0319909116179055506104169350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261013357600080fd5b81516001600160401b0381111561014c5761014c61010c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561017a5761017a61010c565b60405281815283820160200185101561019257600080fd5b60005b828110156101b157602081860181015183830182015201610195565b506000918101602001919091529392505050565b8051600381106101d457600080fd5b919050565b80516001600160a01b03811681146101d457600080fd5b600080600080600080600080610100898b03121561020d57600080fd5b88516001600160401b0381111561022357600080fd5b61022f8b828c01610122565b60208b015190995090506001600160401b0381111561024d57600080fd5b6102598b828c01610122565b975050604089015160ff8116811461027057600080fd5b60608a0151909650945061028660808a016101c5565b60a08a0151909450925061029c60c08a016101d9565b91506102aa60e08a016101d9565b90509295985092959890939650565b600181811c908216806102cd57607f821691505b6020821081036102ed57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561033d57806000526020600020601f840160051c8101602085101561031a5750805b601f840160051c820191505b8181101561033a5760008155600101610326565b50505b505050565b81516001600160401b0381111561035b5761035b61010c565b61036f8161036984546102b9565b846102f3565b6020601f8211600181146103a3576000831561038b5750848201515b600019600385901b1c1916600184901b17845561033a565b600084815260208120601f198516915b828110156103d357878501518255602094850194600190920191016103b3565b50848210156103f15786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a051611c1b61045760003960006103440152600081816102f001528181610bdc01528181610ce201528181610efe01526110040152611c1b6000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c806395d89b41116100f9578063ccc7759911610097578063eddeb12311610071578063eddeb12314610461578063f2441b3214610474578063f687d12a14610494578063fc5fecd5146104a757600080fd5b8063ccc77599146103d4578063d9eeebed146103e7578063dd62ed3e1461041b57600080fd5b8063b84c8246116100d3578063b84c824614610386578063c47f00271461039b578063c7012626146103ae578063c835d7cc146103c157600080fd5b806395d89b4114610337578063a3413d031461033f578063a9059cbb1461037357600080fd5b80633ce4a5bc116101665780634d8943bb116101405780634d8943bb146102ac57806370a08231146102b557806385e1f4d0146102eb5780638b851b951461031257600080fd5b80633ce4a5bc1461024657806342966c681461028657806347e7ef241461029957600080fd5b806318160ddd1161019757806318160ddd1461021657806323b872dd1461021e578063313ce5671461023157600080fd5b806306fdde03146101be578063091d2788146101dc578063095ea7b3146101f3575b600080fd5b6101c66104ba565b6040516101d39190611648565b60405180910390f35b6101e560015481565b6040519081526020016101d3565b610206610201366004611687565b61054c565b60405190151581526020016101d3565b6005546101e5565b61020661022c3660046116b3565b610563565b60085460405160ff90911681526020016101d3565b61026173735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d3565b6102066102943660046116f4565b6105fa565b6102066102a7366004611687565b61060e565b6101e560025481565b6101e56102c336600461170d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6101e57f000000000000000000000000000000000000000000000000000000000000000081565b60085461026190610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6101c6610767565b6103667f000000000000000000000000000000000000000000000000000000000000000081565b6040516101d3919061172a565b610206610381366004611687565b610776565b610399610394366004611832565b610783565b005b6103996103a9366004611832565b6107e0565b6102066103bc366004611883565b610839565b6103996103cf36600461170d565b610988565b6103996103e236600461170d565b610a9c565b6103ef610bb0565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101d3565b6101e56104293660046118dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205490565b61039961046f3660046116f4565b610dce565b6000546102619073ffffffffffffffffffffffffffffffffffffffff1681565b6103996104a23660046116f4565b610e50565b6103ef6104b53660046116f4565b610ed2565b6060600680546104c990611915565b80601f01602080910402602001604051908101604052809291908181526020018280546104f590611915565b80156105425780601f1061051757610100808354040283529160200191610542565b820191906000526020600020905b81548152906001019060200180831161052557829003601f168201915b5050505050905090565b60006105593384846110ee565b5060015b92915050565b60006105708484846111f7565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460209081526040808320338452909152902054828110156105db576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105ef85336105ea8685611997565b6110ee565b506001949350505050565b600061060633836113b2565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab1480159061064c575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156106755750600854610100900473ffffffffffffffffffffffffffffffffffffffff163314155b156106ac576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106b683836114f4565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526107569186906119aa565b60405180910390a250600192915050565b6060600780546104c990611915565b60006105593384846111f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab146107d0576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60076107dc8282611a1b565b5050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461082d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60066107dc8282611a1b565b6000806000610846610bb0565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156108d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fc9190611b34565b610932576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61093c33856113b2565b60025460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161097591899189918791611b56565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146109d5576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a22576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610ae9576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610b36576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c679190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610cb6576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d699190611ba2565b905080600003610da5576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060025460015483610db89190611bbb565b610dc29190611bd2565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e1b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610a91565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e9d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610f65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f899190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610fd8576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015611067573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108b9190611ba2565b9050806000036110c7576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000906110d78784611bbb565b6110e19190611bd2565b9296929550919350505050565b73ffffffffffffffffffffffffffffffffffffffff831661113b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611188576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611244576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611291576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040902054818110156112f1576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112fb8282611997565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260036020526040808220939093559085168152908120805484929061133e908490611bd2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113a491815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff82166113ff576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260409020548181101561145f576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114698282611997565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260036020526040812091909155600580548492906114a4908490611997565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016111ea565b73ffffffffffffffffffffffffffffffffffffffff8216611541576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008282546115539190611bd2565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805483929061158d908490611bd2565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561160a576020818501810151868301820152016115ee565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061165b60208301846115e4565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461168457600080fd5b50565b6000806040838503121561169a57600080fd5b82356116a581611662565b946020939093013593505050565b6000806000606084860312156116c857600080fd5b83356116d381611662565b925060208401356116e381611662565b929592945050506040919091013590565b60006020828403121561170657600080fd5b5035919050565b60006020828403121561171f57600080fd5b813561165b81611662565b6020810160038310611765577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff8411156117b5576117b561176b565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff821117156118025761180261176b565b60405283815290508082840185101561181a57600080fd5b83836020830137600060208583010152509392505050565b60006020828403121561184457600080fd5b813567ffffffffffffffff81111561185b57600080fd5b8201601f8101841361186c57600080fd5b61187b8482356020840161179a565b949350505050565b6000806040838503121561189657600080fd5b823567ffffffffffffffff8111156118ad57600080fd5b8301601f810185136118be57600080fd5b6118cd8582356020840161179a565b95602094909401359450505050565b600080604083850312156118ef57600080fd5b82356118fa81611662565b9150602083013561190a81611662565b809150509250929050565b600181811c9082168061192957607f821691505b602082108103611962577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561055d5761055d611968565b6040815260006119bd60408301856115e4565b90508260208301529392505050565b601f821115611a1657806000526020600020601f840160051c810160208510156119f35750805b601f840160051c820191505b81811015611a1357600081556001016119ff565b50505b505050565b815167ffffffffffffffff811115611a3557611a3561176b565b611a4981611a438454611915565b846119cc565b6020601f821160018114611a9b5760008315611a655750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611a13565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015611ae95787850151825560209485019460019092019101611ac9565b5084821015611b2557868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b600060208284031215611b4657600080fd5b8151801515811461165b57600080fd5b608081526000611b6960808301876115e4565b6020830195909552506040810192909252606090910152919050565b600060208284031215611b9757600080fd5b815161165b81611662565b600060208284031215611bb457600080fd5b5051919050565b808202811582820484141761055d5761055d611968565b8082018082111561055d5761055d61196856fea26469706673582212202a06c5d72036d88c206ff2bfdd016b3ce8555bc0090e8bb5487bc61ea043732b64736f6c634300081a0033a2646970667358221220759187a9352323eef52661be8f596a25017703a86918c420ebb0d92ff577afa764736f6c634300081a0033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5062010bd9806200003e6000396000f3fe608060405234801561001057600080fd5b506004361061032b5760003560e01c80636dfcbc50116101b2578063bed3e813116100f9578063e51c6388116100a2578063eb7a2fac1161007c578063eb7a2fac146104ec578063fa7626d4146104f4578063fbc611c814610501578063fdad0ad01461050957600080fd5b8063e51c6388146104dc578063e804a4061461035a578063ea37902f146104e457600080fd5b8063dc749dd7116100d3578063dc749dd7146104c4578063dde7e967146104cc578063e20c9f71146104d457600080fd5b8063bed3e813146104ac578063c946d7c0146104b4578063ceccfab3146104bc57600080fd5b8063b0464fdc1161015b578063ba414fa611610135578063ba414fa614610484578063ba800c911461049c578063ba9adeef146104a457600080fd5b8063b0464fdc1461046c578063b51ac07114610474578063b5508aa91461047c57600080fd5b806385226c811161018c57806385226c811461043a578063916a17c61461044f578063a721b2d31461046457600080fd5b80636dfcbc50146104225780637ae697301461042a57806383ababa91461043257600080fd5b80633e5e3c23116102765780635efe72a91161021f57806364002a1f116101f957806364002a1f146103fd57806366d9a9a0146104055780636d6ce0d01461041a57600080fd5b80635efe72a9146103e55780636198fb19146103ed5780636221b509146103f557600080fd5b8063431814371161025057806343181437146103cd5780634ffab9de146103d55780635d72228f146103dd57600080fd5b80633e5e3c23146103b55780633f7286f4146103bd57806342752d41146103c557600080fd5b80631ed7831c116102d8578063264b524c116102b2578063264b524c146103905780632ade38801461039857806336431b3f146103ad57600080fd5b80631ed7831c1461036257806320dee15f1461038057806321aeb18c1461038857600080fd5b80631475976611610309578063147597661461034a5780631b9641bf146103525780631e63d2b91461035a57600080fd5b80630a9254e4146103305780630b5ad28d1461033a5780631238212c14610342575b600080fd5b610338610511565b005b6103386110a6565b610338611259565b610338611625565b610338611853565b6103386119ca565b61036a611de4565b604051610377919061ac5e565b60405180910390f35b610338611e46565b610338612234565b610338612354565b6103a0612548565b604051610377919061acfa565b61033861268a565b61036a6127f1565b61036a612851565b6103386128b1565b610338612a03565b610338612b36565b610338612dba565b61033861310c565b610338613289565b61033861344f565b61033861363d565b61040d613819565b604051610377919061ae60565b61033861399b565b610338613ca0565b610338613eb9565b610338614087565b61044261416b565b604051610377919061aefe565b61045761423b565b604051610377919061af75565b610338614336565b61045761454f565b61033861464a565b610442614749565b61048c614819565b6040519015158152602001610377565b6103386148ed565b610338614a03565b610338614b89565b610338614d02565b610338614f86565b6103386152d2565b610338615375565b61036a6157b4565b610338615814565b610338615cbf565b610338615e52565b601f5461048c9060ff1681565b610338615f51565b6103386162de565b602580547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602680549091166112341790556040516105579061ab6d565b604051809103906000f080158015610573573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600f81527f476174657761795a45564d2e736f6c000000000000000000000000000000000060208201526025549151602481019390935292166044820152610657919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc95500000000000000000000000000000000000000000000000000000000179052616454565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b039384168102919091179182905560208054919092049092167fffffffffffffffffffffffff000000000000000000000000000000000000000090921682178155604080517f2722feee0000000000000000000000000000000000000000000000000000000081529051632722feee926004808401939192918290030181865afa158015610719573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073d919061b00c565b602780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516107819061ab7b565b604051809103906000f08015801561079d573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161781556027546040517f06447d5600000000000000000000000000000000000000000000000000000000815292166004830152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d569101600060405180830381600087803b15801561083957600080fd5b505af115801561084d573d6000803e3d6000fd5b5050505060008060006040516108629061ab89565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801561089e573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556020546040516012936001938493600093919216906108f49061ab97565b6109039695949392919061b035565b604051809103906000f08015801561091f573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556023546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b1580156109b657600080fd5b505af11580156109ca573d6000803e3d6000fd5b50506023546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b158015610a3457600080fd5b505af1158015610a48573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610ac857600080fd5b505af1158015610adc573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610b3157600080fd5b505af1158015610b45573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610bb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bdd919061b12a565b506021546025546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116906347e7ef24906044016020604051808303816000875af1158015610c4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c72919061b12a565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610cd157600080fd5b505af1158015610ce5573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610d5b57600080fd5b505af1158015610d6f573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116925063095ea7b391506044016020604051808303816000875af1158015610de3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e07919061b12a565b50602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610e5957600080fd5b505af1158015610e6d573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610ee1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f05919061b12a565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610f6457600080fd5b505af1158015610f78573d6000803e3d6000fd5b50506040805160a08101825261032180825260016020808401918252838501928352845190810190945260008085526060840185905260808401528251602880549251151574010000000000000000000000000000000000000000027fffffffffffffffffffffff0000000000000000000000000000000000000000009093166001600160a01b0392831617929092178255915160298054919093167fffffffffffffffffffffffff000000000000000000000000000000000000000091909116179091559093509150602a9061104f908261b20f565b50608091909101516003909101556040805180820190915260018082526020909101819052602c819055602d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b1790526000602c5551630618f58760e51b81527f60ee1247000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015b600060405180830381600087803b15801561117457600080fd5b505af1158015611188573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637b15118b91506034015b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168352611224926001916001600160a01b0316908790602c9060289060040161b3bd565b600060405180830381600087803b15801561123e57600080fd5b505af1158015611252573d6000803e3d6000fd5b5050505050565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa1580156112aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ce919061b42f565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561134357600080fd5b505af1158015611357573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af11580156113c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ed919061b12a565b506026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905280517ff48448140000000000000000000000000000000000000000000000000000000081529051919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f48448149160048082019260009290919082900301818387803b1580156114b057600080fd5b505af11580156114c4573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637b15118b915060340160408051601f198184030181526021548383018352600184526000602085015291517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815261156e93919289926001600160a01b039091169188919060289060040161b448565b600060405180830381600087803b15801561158857600080fd5b505af115801561159c573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156115ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611613919061b42f565b905061161f8382616473565b50505050565b6026546040516001600160a01b03909116602482015260019060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b179052602554602654925193945060019384936001600160a01b03928316937f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c936116e7939216910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f198184030181529082905260225461171f926001600160a01b0390911690899060009081908b90602c9060289061b49c565b60405180910390a3604051630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015b600060405180830381600087803b15801561179457600080fd5b505af11580156117a8573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250632810ae639150603401604051602081830303815290604052858486602c60286040518763ffffffff1660e01b815260040161181c9695949392919061b510565b600060405180830381600087803b15801561183657600080fd5b505af115801561184a573d6000803e3d6000fd5b50505050505050565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905251630618f58760e51b81527f5d67094f000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561191b57600080fd5b505af115801561192f573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637b15118b915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168352611224926000916001600160a01b0316908790602c9060289060040161b3bd565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611a1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3f919061b42f565b6026546040516001600160a01b03909116602482015290915060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b1790525490517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482018190526001600160a01b039092166084820152919250908190737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611b3157600080fd5b505af1158015611b45573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff19166020820152600093506001600160a01b0390911691507f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c9060340160408051601f198184030181528282526021547f4d8943bb000000000000000000000000000000000000000000000000000000008452915190926001600160a01b03909216918b9189918491634d8943bb916004808201926020929091908290030181865afa158015611c17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c3b919061b42f565b6040805180820182528a8152600160208201529051611c639695949392918d9160289061b541565b60405180910390a3602080546026546040516001600160a01b0392831693637b15118b93611cab9316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815260215483830183528684526001602085015291517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b168152611d179391928b926001600160a01b03909116918a919060289060040161b448565b600060405180830381600087803b158015611d3157600080fd5b505af1158015611d45573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611d98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbc919061b42f565b9050611ddc83611dcc888861b5d2565b611dd6919061b5d2565b82616473565b505050505050565b60606016805480602002602001604051908101604052809291908181526020018280548015611e3c57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611e1e575b5050505050905090565b601f54604080518082018252601a81527f476174657761795a45564d55706772616465546573742e736f6c000000000000602080830191909152825190810190925260008252602554611eab936001600160a01b0361010090910481169391166164f2565b601f546021546025546040516370a0823160e01b81526001600160a01b03918216600482015261010090930481169260019260009216906370a0823190602401602060405180830381865afa158015611f08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f2c919061b42f565b6040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b0385166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611fb957600080fd5b505af1158015611fcd573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff19166020820152600093506001600160a01b0390911691507f5d7cd8ae449a6b25de63f10534ddd17d8dd3e79c7aa5f28964b7a7c760258d979060340160408051601f198184030181528282526021547f4d8943bb000000000000000000000000000000000000000000000000000000008452915190926001600160a01b039092169188916000918491634d8943bb916004808201926020929091908290030181865afa1580156120a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c4919061b42f565b604080518082018252600081526001602082015290516120ec9695949392919060289061b5e5565b60405180910390a360265460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b03841690637c0dcb5f9060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526121809287916001600160a01b03169060289060040161b667565b600060405180830381600087803b15801561219a57600080fd5b505af11580156121ae573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015612201573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612225919061b42f565b905061161f611dd6848461b5d2565b604051630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156122a057600080fd5b505af11580156122b4573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b031692506397a1cef191506034015b6040516020818303038152906040526000600160286040518563ffffffff1660e01b8152600401612326949392919061b6a1565b600060405180830381600087803b15801561234057600080fd5b505af115801561161f573d6000803e3d6000fd5b60208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290516001600160a01b03909216926397d340f5926004808401938290030181865afa1580156123b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d6919061b42f565b6123e190600161b6d2565b67ffffffffffffffff8111156123f9576123f961b14c565b6040519080825280601f01601f191660200182016040528015612423576020820181803683370190505b50602a90612431908261b20f565b50604051630618f58760e51b81527f9507fb3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561249e57600080fd5b505af11580156124b2573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637c0dcb5f915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168352612326926002916001600160a01b03169060289060040161b667565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561268157600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561266a5783829060005260206000200180546125dd9061b17b565b80601f01602080910402602001604051908101604052809291908181526020018280546126099061b17b565b80156126565780601f1061262b57610100808354040283529160200191612656565b820191906000526020600020905b81548152906001019060200180831161263957829003601f168201915b5050505050815260200190600101906125be565b50505050815250508152602001906001019061256c565b50505050905090565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905251630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561275257600080fd5b505af1158015612766573d6000803e3d6000fd5b5050602080546040516001600160a01b039091169350637b15118b9250015b60408051601f19818403018152602154838301835260018085526000602086015292517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b168152611224949293926001600160a01b0390921691889160289060040161b448565b60606018805480602002602001604051908101604052809291908181526020018280548015611e3c576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611e1e575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015611e3c576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611e1e575050505050905090565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905251630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561297957600080fd5b505af115801561298d573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250632810ae6391506034016040516020818303038152906040526000600185602c60286040518763ffffffff1660e01b81526004016112249695949392919061b510565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905251630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015612acb57600080fd5b505af1158015612adf573d6000803e3d6000fd5b5050602080546040516001600160a01b039091169350632810ae639250015b60405160208183030381529060405260018085602c60286040518763ffffffff1660e01b81526004016112249695949392919061b510565b60208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290516000936002936001600160a01b0316926397d340f592600480830193928290030181865afa158015612b99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bbd919061b42f565b612bc7919061b6e5565b67ffffffffffffffff811115612bdf57612bdf61b14c565b6040519080825280601f01601f191660200182016040528015612c09576020820181803683370190505b5060208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290519394506002936001600160a01b03909216926397d340f5926004808401938290030181865afa158015612c6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c92919061b42f565b612c9c919061b6e5565b612ca790600161b6d2565b67ffffffffffffffff811115612cbf57612cbf61b14c565b6040519080825280601f01601f191660200182016040528015612ce9576020820181803683370190505b50602a90612cf7908261b20f565b50604051630618f58760e51b81527f9507fb3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015612d6457600080fd5b505af1158015612d78573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637b15118b9150603401612785565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015612e0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e2f919061b42f565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612ea457600080fd5b505af1158015612eb8573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015612f2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f4e919061b12a565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612fad57600080fd5b505af1158015612fc1573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637c0dcb5f915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526130569287916001600160a01b03169060289060040161b667565b600060405180830381600087803b15801561307057600080fd5b505af1158015613084573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156130d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130fb919061b42f565b90506131078282616473565b505050565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b1790526000602c5551630618f58760e51b81527f60ee1247000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015b600060405180830381600087803b1580156131da57600080fd5b505af11580156131ee573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b031692506306cb898391506034015b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168352611224926001600160a01b03909116908690602c9060289060040161b720565b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b1790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561337357600080fd5b505af1158015613387573d6000803e3d6000fd5b505060215460255460265460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039283169450911691507f306ee13f48319a123b222c69908e44dcf91abffc20cacc502e3cf5a4ff23e0e49060340160408051601f1981840301815290829052613407918690602c9060289061b78a565b60405180910390a3602080546026546040516001600160a01b03928316936306cb89839361322c9316910160609190911b6bffffffffffffffffffffffff1916815260140190565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa1580156134a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134c4919061b42f565b6022546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526101236004820152602481018390529192506001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015613531573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613555919061b12a565b506000600190507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156135ba57600080fd5b505af11580156135ce573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b031692506397a1cef19150603401604051602081830303815290604052858460286040518563ffffffff1660e01b815260040161181c949392919061b6a1565b6026546040516001600160a01b03909116602482015260019060009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905260255490517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561371257600080fd5b505af1158015613726573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015613798573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137bc919061b12a565b506000602c55604051630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e09060240161177a565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561268157838290600052602060002090600202016040518060400160405290816000820180546138709061b17b565b80601f016020809104026020016040519081016040528092919081815260200182805461389c9061b17b565b80156138e95780601f106138be576101008083540402835291602001916138e9565b820191906000526020600020905b8154815290600101906020018083116138cc57829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561398357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116139305790505b5050505050815250508152602001906001019061383d565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa1580156139ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a10919061b42f565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613a8557600080fd5b505af1158015613a99573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015613b0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b2f919061b12a565b506026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905280517ff48448140000000000000000000000000000000000000000000000000000000081529051919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f48448149160048082019260009290919082900301818387803b158015613bf257600080fd5b505af1158015613c06573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637b15118b915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261156e9288916001600160a01b0316908790602c9060289060040161b3bd565b60208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290516000936002936001600160a01b0316926397d340f592600480830193928290030181865afa158015613d03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d27919061b42f565b613d31919061b6e5565b67ffffffffffffffff811115613d4957613d4961b14c565b6040519080825280601f01601f191660200182016040528015613d73576020820181803683370190505b5060208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290519394506002936001600160a01b03909216926397d340f5926004808401938290030181865afa158015613dd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dfc919061b42f565b613e06919061b6e5565b613e1190600161b6d2565b67ffffffffffffffff811115613e2957613e2961b14c565b6040519080825280601f01601f191660200182016040528015613e53576020820181803683370190505b50602a90613e61908261b20f565b50604051630618f58760e51b81527f9507fb3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024016131c0565b60208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290516001600160a01b03909216926397d340f5926004808401938290030181865afa158015613f17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f3b919061b42f565b613f4690600161b6d2565b67ffffffffffffffff811115613f5e57613f5e61b14c565b6040519080825280601f01601f191660200182016040528015613f88576020820181803683370190505b50602a90613f96908261b20f565b50604051630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561400357600080fd5b505af1158015614017573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b031692506397a1cef1915060340160405160208183030381529060405260018060286040518563ffffffff1660e01b8152600401612326949392919061b6a1565b604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156140f357600080fd5b505af1158015614107573d6000803e3d6000fd5b5050602080546040805160008152928301908190526021547f7c0dcb5f000000000000000000000000000000000000000000000000000000009091526001600160a01b039182169450637c0dcb5f935061232692916001911660286024840161b667565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156126815783829060005260206000200180546141ae9061b17b565b80601f01602080910402602001604051908101604052809291908181526020018280546141da9061b17b565b80156142275780601f106141fc57610100808354040283529160200191614227565b820191906000526020600020905b81548152906001019060200180831161420a57829003601f168201915b50505050508152602001906001019061418f565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156126815760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561431e57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116142cb5790505b5050505050815250508152602001906001019061425f565b60208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290516000936002936001600160a01b0316926397d340f592600480830193928290030181865afa158015614399573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143bd919061b42f565b6143c7919061b6e5565b67ffffffffffffffff8111156143df576143df61b14c565b6040519080825280601f01601f191660200182016040528015614409576020820181803683370190505b5060208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290519394506002936001600160a01b03909216926397d340f5926004808401938290030181865afa15801561446e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614492919061b42f565b61449c919061b6e5565b6144a790600161b6d2565b67ffffffffffffffff8111156144bf576144bf61b14c565b6040519080825280601f01601f1916602001820160405280156144e9576020820181803683370190505b50602a906144f7908261b20f565b50604051630618f58760e51b81527f9507fb3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e09060240161115a565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156126815760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561463257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116145df5790505b50505050508152505081526020019060010190614573565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905251630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561471257600080fd5b505af1158015614726573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911693506306cb898392500161322c565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101561268157838290600052602060002001805461478c9061b17b565b80601f01602080910402602001604051908101604052809291908181526020018280546147b89061b17b565b80156148055780601f106147da57610100808354040283529160200191614805565b820191906000526020600020905b8154815290600101906020018083116147e857829003601f168201915b50505050508152602001906001019061476d565b60085460009060ff1615614831575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa1580156148c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148e6919061b42f565b1415905090565b604051630618f58760e51b81527f5d67094f000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561495957600080fd5b505af115801561496d573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637c0dcb5f915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168352612326926000916001600160a01b03169060289060040161b667565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905251630618f58760e51b81527f5d67094f000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015614acb57600080fd5b505af1158015614adf573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637b15118b915060340160408051601f1981840301815260215483830183526001845260006020850181905292517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b168152611224949293926001600160a01b0390921691889160289060040161b448565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905251630618f58760e51b81527f60ee1247000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015614c5157600080fd5b505af1158015614c65573d6000803e3d6000fd5b5050602080546026546040805160609290921b6bffffffffffffffffffffffff1916938201939093528251808203601401815260215460748301855260006034840181815260549094015293517f7b15118b0000000000000000000000000000000000000000000000000000000081526001600160a01b039384169650637b15118b9550611224949193600193921691889160289060040161b448565b60208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290516000936002936001600160a01b0316926397d340f592600480830193928290030181865afa158015614d65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614d89919061b42f565b614d93919061b6e5565b67ffffffffffffffff811115614dab57614dab61b14c565b6040519080825280601f01601f191660200182016040528015614dd5576020820181803683370190505b5060208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290519394506002936001600160a01b03909216926397d340f5926004808401938290030181865afa158015614e3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614e5e919061b42f565b614e68919061b6e5565b614e7390600161b6d2565b67ffffffffffffffff811115614e8b57614e8b61b14c565b6040519080825280601f01601f191660200182016040528015614eb5576020820181803683370190505b50602a90614ec3908261b20f565b50604051630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015614f3057600080fd5b505af1158015614f44573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250632810ae639150603401612afe565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015614fd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614ffb919061b42f565b6021546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526101236004820152602481018390529192506001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015615068573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061508c919061b12a565b506027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156150ff57600080fd5b505af1158015615113573d6000803e3d6000fd5b50506021546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a60048201526001600160a01b03909116925063f687d12a9150602401600060405180830381600087803b15801561517657600080fd5b505af115801561518a573d6000803e3d6000fd5b5050604051630618f58760e51b81527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b1580156151fb57600080fd5b505af115801561520f573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637c0dcb5f915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526152a49287916001600160a01b03169060289060040161b667565b600060405180830381600087803b1580156152be57600080fd5b505af1158015611ddc573d6000803e3d6000fd5b604051630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561533e57600080fd5b505af1158015615352573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911693506397a1cef19250016122f2565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa1580156153c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906153ea919061b42f565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa15801561543c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615460919061b42f565b6027546025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152929350163190600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156154de57600080fd5b505af11580156154f2573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015615564573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615588919061b12a565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156155e757600080fd5b505af11580156155fb573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b031692506397a1cef19150603401604051602081830303815290604052878460286040518563ffffffff1660e01b815260040161566a949392919061b6a1565b600060405180830381600087803b15801561568457600080fd5b505af1158015615698573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156156eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061570f919061b42f565b905061571b8582616473565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801561576c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615790919061b42f565b905061579c8582616473565b60275461184a9085906001600160a01b031631616473565b60606015805480602002602001604051908101604052809291908181526020018280548015611e3c576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611e1e575050505050905090565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015615865573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615889919061b42f565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa1580156158db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906158ff919061b42f565b6027546026546040516001600160a01b03918216602482015292935016319060009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905260255490517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156159da57600080fd5b505af11580156159ee573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015615a60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615a84919061b12a565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015615ae357600080fd5b505af1158015615af7573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250632810ae639150603401604051602081830303815290604052888486602c60286040518763ffffffff1660e01b8152600401615b6b9695949392919061b510565b600060405180830381600087803b158015615b8557600080fd5b505af1158015615b99573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015615bec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615c10919061b42f565b9050615c1c8682616473565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015615c6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615c91919061b42f565b9050615c9d8682616473565b602754615cb59086906001600160a01b031631616473565b5050505050505050565b60255460265460405160609190911b6bffffffffffffffffffffffff19166020820152600191829182916001600160a01b0316907f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c9060340160408051601f1981840301815260225483830183526000808552600160208601529251615d5b9492936001600160a01b03909216928a929182919060289061b5e5565b60405180910390a3604051630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015615dcf57600080fd5b505af1158015615de3573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b031692506397a1cef19150603401604051602081830303815290604052848460286040518563ffffffff1660e01b81526004016152a4949392919061b6a1565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905251630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015615f1a57600080fd5b505af1158015615f2e573d6000803e3d6000fd5b5050602080546040516001600160a01b039091169350637b15118b9250016111c6565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015615fa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615fc6919061b42f565b6020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561605757600080fd5b505af115801561606b573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff19166020820152600093506001600160a01b0390911691507f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c9060340160408051601f198184030181528282526021547f4d8943bb000000000000000000000000000000000000000000000000000000008452915190926001600160a01b039092169188916000918491634d8943bb916004808201926020929091908290030181865afa15801561613e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616162919061b42f565b6040805180820182526000815260016020820152905161618a9695949392919060289061b5e5565b60405180910390a3602080546026546040516001600160a01b0392831693637c0dcb5f936161d29316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261622a9287916001600160a01b03169060289060040161b667565b600060405180830381600087803b15801561624457600080fd5b505af1158015616258573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156162ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906162cf919061b42f565b9050613107611dd6848461b5d2565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260029260009216906370a0823190602401602060405180830381865afa15801561632f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616353919061b42f565b6021549091506001600160a01b031663a9059cbb61012361637560018561b5d2565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156163d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906163fc919061b12a565b50604051630618f58760e51b81527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024016151e1565b600061645e61aba5565b616469848483616507565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b1580156164de57600080fd5b505afa158015611ddc573d6000803e3d6000fd5b6164fa61aba5565b6112528585858486616582565b6000806165148584616682565b90506165776040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f7879000000815250828660405160200161656292919061b7d9565b6040516020818303038152906040528561668e565b9150505b9392505050565b6040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201528190737109709ecfa91a80626ff3989d68f67f5b1dd12d9081906306447d5690602401600060405180830381600087803b1580156165f457600080fd5b505af1925050508015616605575060015b61661a57616615878787876166bc565b61184a565b616626878787876166bc565b806001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561666157600080fd5b505af1158015616675573d6000803e3d6000fd5b5050505050505050505050565b600061657b83836166d5565b60c081015151600090156166b2576166ab84848460c001516166f0565b905061657b565b6166ab8484616896565b60006166c88483616981565b905061125285828561698d565b60006166e18383616d57565b61657b8383602001518461668e565b6000806166fb616d67565b905060006167098683616e3a565b9050600061672082606001518360200151856172e0565b90506000616730838389896174f2565b9050600061673d8261836f565b602081015181519192509060030b156167b05789826040015160405160200161676792919061b7fb565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526167a79160040161b87c565b60405180910390fd5b60006167f36040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a20000000000000000000000081525083600161853e565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d9061684690849060040161b87c565b602060405180830381865afa158015616863573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616887919061b00c565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc925906168eb90879060040161b87c565b600060405180830381865afa158015616908573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616930919081019061b948565b9050600061695e828560405160200161694a92919061b97d565b60405160208183030381529060405261873e565b90506001600160a01b03811661646957848460405160200161676792919061b9ac565b60006166e18383618751565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201527fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61036024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90600090829063667f9d7090604401602060405180830381865afa158015616a29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616a4d919061b42f565b905080616bf4576000616a5f8661875d565b604080518082018252600581527f352e302e3000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150616aea905b60408051808201825260008082526020918201528151808301909252845182528085019082015290618855565b80616af6575060008451115b15616b79576040517f4f1ef2860000000000000000000000000000000000000000000000000000000081526001600160a01b03871690634f1ef28690616b42908890889060040161b7d9565b600060405180830381600087803b158015616b5c57600080fd5b505af1158015616b70573d6000803e3d6000fd5b50505050616bee565b6040517f3659cfe60000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152871690633659cfe690602401600060405180830381600087803b158015616bd557600080fd5b505af1158015616be9573d6000803e3d6000fd5b505050505b50611252565b806000616c008261875d565b604080518082018252600581527f352e302e3000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150616c6290616abd565b80616c6e575060008551115b15616cf3576040517f9623609d0000000000000000000000000000000000000000000000000000000081526001600160a01b03831690639623609d90616cbc908a908a908a9060040161ba57565b600060405180830381600087803b158015616cd657600080fd5b505af1158015616cea573d6000803e3d6000fd5b5050505061184a565b6040517f99a88ec40000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015287811660248301528316906399a88ec490604401600060405180830381600087803b15801561666157600080fd5b616d6382826000618869565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90616dee90849060040161ba88565b600060405180830381865afa158015616e0b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616e33919081019061bacf565b9250505090565b616e6c6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050616eb76040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b616ec08561896c565b60208201526000616ed086618d51565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015616f12573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616f3a919081019061bacf565b86838560200151604051602001616f54949392919061bb18565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190616fac90859060040161b87c565b600060405180830381865afa158015616fc9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616ff1919081019061bacf565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f69061703990849060040161bc1c565b602060405180830381865afa158015617056573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061707a919061b12a565b61708f5781604051602001616767919061bc6e565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906170d490849060040161bd00565b600060405180830381865afa1580156170f1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617119919081019061bacf565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f69061716090849060040161bd52565b602060405180830381865afa15801561717d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906171a1919061b12a565b15617236576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906171eb90849060040161bd52565b600060405180830381865afa158015617208573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617230919081019061bacf565b60408501525b846001600160a01b03166349c4fac882866000015160405160200161725b919061bda4565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161728792919061be10565b600060405180830381865afa1580156172a4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526172cc919081019061bacf565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816172fc5790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061735c5761735c61be35565b60200260200101819052506040518060400160405280600381526020017f2d726c0000000000000000000000000000000000000000000000000000000000815250816001815181106173b0576173b061be35565b6020026020010181905250846040516020016173cc919061be64565b604051602081830303815290604052816002815181106173ee576173ee61be35565b60200260200101819052508260405160200161740a919061bed0565b6040516020818303038152906040528160038151811061742c5761742c61be35565b602002602001018190525060006174428261836f565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506174d39060408051808201825260008082526020918201528151808301909252845182528085019082015290618fd4565b6174e85785604051602001616767919061bf11565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015617542565b511590565b6176b6578260200151156175fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a4016167a7565b8260c00151156176b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a4016167a7565b6040805160ff8082526120008201909252600091816020015b60608152602001906001900390816176cf57905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061772a9061bfa2565b935060ff168151811061773f5761773f61be35565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001617790919061bfc1565b6040516020818303038152906040528282806177ab9061bfa2565b935060ff16815181106177c0576177c061be35565b60200260200101819052506040518060400160405280600681526020017f6465706c6f79000000000000000000000000000000000000000000000000000081525082828061780d9061bfa2565b935060ff16815181106178225761782261be35565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d6500000000000000000000000000000000000081525082828061786f9061bfa2565b935060ff16815181106178845761788461be35565b602002602001018190525087602001518282806178a09061bfa2565b935060ff16815181106178b5576178b561be35565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806179029061bfa2565b935060ff16815181106179175761791761be35565b60209081029190910101528751828261792f8161bfa2565b935060ff16815181106179445761794461be35565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806179919061bfa2565b935060ff16815181106179a6576179a661be35565b60200260200101819052506179ba46619035565b82826179c58161bfa2565b935060ff16815181106179da576179da61be35565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280617a279061bfa2565b935060ff1681518110617a3c57617a3c61be35565b602002602001018190525086828280617a549061bfa2565b935060ff1681518110617a6957617a6961be35565b6020908102919091010152855115617b905760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f6465000000000000000000000060208201528282617aba8161bfa2565b935060ff1681518110617acf57617acf61be35565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90617b1f90899060040161b87c565b600060405180830381865afa158015617b3c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617b64919081019061bacf565b8282617b6f8161bfa2565b935060ff1681518110617b8457617b8461be35565b60200260200101819052505b846020015115617c605760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282617bd98161bfa2565b935060ff1681518110617bee57617bee61be35565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280617c3b9061bfa2565b935060ff1681518110617c5057617c5061be35565b6020026020010181905250617e27565b617c9861753d8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b617d2b5760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282617cdb8161bfa2565b935060ff1681518110617cf057617cf061be35565b60200260200101819052508460a00151604051602001617d10919061be64565b604051602081830303815290604052828280617c3b9061bfa2565b8460c00151158015617d6e575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152617d6c90511590565b155b15617e275760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282617db28161bfa2565b935060ff1681518110617dc757617dc761be35565b6020026020010181905250617ddb886190d5565b604051602001617deb919061be64565b604051602081830303815290604052828280617e069061bfa2565b935060ff1681518110617e1b57617e1b61be35565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152617e5b90511590565b617ef05760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282617e9e8161bfa2565b935060ff1681518110617eb357617eb361be35565b60200260200101819052508460400151828280617ecf9061bfa2565b935060ff1681518110617ee457617ee461be35565b60200260200101819052505b6060850151156180115760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282617f398161bfa2565b935060ff1681518110617f4e57617f4e61be35565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015617fbd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617fe5919081019061bacf565b8282617ff08161bfa2565b935060ff16815181106180055761800561be35565b60200260200101819052505b60e085015151156180b85760408051808201909152600a81527f2d2d6761734c696d6974000000000000000000000000000000000000000000006020820152828261805b8161bfa2565b935060ff16815181106180705761807061be35565b602002602001018190525061808c8560e0015160000151619035565b82826180978161bfa2565b935060ff16815181106180ac576180ac61be35565b60200260200101819052505b60e085015160200151156181625760408051808201909152600a81527f2d2d676173507269636500000000000000000000000000000000000000000000602082015282826181058161bfa2565b935060ff168151811061811a5761811a61be35565b60200260200101819052506181368560e0015160200151619035565b82826181418161bfa2565b935060ff16815181106181565761815661be35565b60200260200101819052505b60e0850151604001511561820c5760408051808201909152600e81527f2d2d6d6178466565506572476173000000000000000000000000000000000000602082015282826181af8161bfa2565b935060ff16815181106181c4576181c461be35565b60200260200101819052506181e08560e0015160400151619035565b82826181eb8161bfa2565b935060ff16815181106182005761820061be35565b60200260200101819052505b60e085015160600151156182b65760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826182598161bfa2565b935060ff168151811061826e5761826e61be35565b602002602001018190525061828a8560e0015160600151619035565b82826182958161bfa2565b935060ff16815181106182aa576182aa61be35565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156182d4576182d461b14c565b60405190808252806020026020018201604052801561830757816020015b60608152602001906001900390816182f25790505b50905060005b8260ff168160ff16101561836057838160ff16815181106183305761833061be35565b6020026020010151828260ff168151811061834d5761834d61be35565b602090810291909101015260010161830d565b5093505050505b949350505050565b6183966040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c9161841c9186910161c02c565b600060405180830381865afa158015618439573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052618461919081019061bacf565b9050600061846f8683619bc4565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161849f919061aefe565b6000604051808303816000875af11580156184be573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526184e6919081019061c073565b805190915060030b158015906184ff5750602081015151155b801561850e5750604081015151155b156174e857816000815181106185265761852661be35565b6020026020010151604051602001616767919061c129565b606060006185738560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506185aa9082905b90619d19565b15618707576000618627826186218461861b6185ed8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90619d40565b90619da2565b604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061868b908290619d19565b156186f557604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526186f2905b8290619e27565b90505b6186fe81619e4d565b9250505061657b565b821561872057848460405160200161676792919061c315565b505060408051602081019091526000815261657b565b509392505050565b6000808251602084016000f09392505050565b616d6382826001618869565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fad3cb1cc00000000000000000000000000000000000000000000000000000000179052905160609160009182916001600160a01b038616916187d2919061c3bc565b600060405180830381855afa9150503d806000811461880d576040519150601f19603f3d011682016040523d82523d6000602084013e618812565b606091505b5091509150818015618825575060208151115b1561883e5780806020019051810190618367919061bacf565b505060408051602081019091526000815292915050565b60006188618383619eb6565b159392505050565b8160a001511561887857505050565b6000618885848484619f91565b905060006188928261836f565b602081015181519192509060030b15801561892e5750604080518082018252600781527f53554343455353000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261892e906040805180820182526000808252602091820152815180830190925284518252808501908201526185a4565b1561893b57505050505050565b6040820151511561895b578160400151604051602001616767919061c3d8565b80604051602001616767919061c436565b606060006189a18360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150618a06905b8290618fd4565b15618a7557604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261657b90618a7090839061a52c565b619e4d565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618ad7905b829061a5b6565b600103618ba457604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618b3d906186eb565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261657b90618a70905b8390619e27565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618c03906189ff565b15618d3a57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290618c6b90839061a650565b905060008160018351618c7e919061b5d2565b81518110618c8e57618c8e61be35565b60200260200101519050618d31618a70618d046040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529061a52c565b95945050505050565b82604051602001616767919061c4a1565b50919050565b60606000618d868360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150618de8906189ff565b15618df65761657b81619e4d565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618e5590618ad0565b600103618ebf57604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261657b90618a7090618b9d565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618f1e906189ff565b15618d3a57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290618f8690839061a650565b9050600181511115618fc2578060028251618fa1919061b5d2565b81518110618fb157618fb161be35565b602002602001015192505050919050565b5082604051602001616767919061c4a1565b805182516000911115618fe95750600061646d565b81518351602085015160009291618fff9161b6d2565b619009919061b5d2565b90508260200151810361902057600191505061646d565b82516020840151819020912014905092915050565b606060006190428361a6f5565b600101905060008167ffffffffffffffff8111156190625761906261b14c565b6040519080825280601f01601f19166020018201604052801561908c576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461909657509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091619161905b8290618855565b156191a157505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e73650000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526192009061915a565b1561924057505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d495400000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261929f9061915a565b156192df57505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261933e9061915a565b806193a35750604080518082018252601081527f47504c2d322e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526193a39061915a565b156193e357505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526194429061915a565b806194a75750604080518082018252601081527f47504c2d332e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526194a79061915a565b156194e757505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526195469061915a565b806195ab5750604080518082018252601181527f4c47504c2d322e312d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526195ab9061915a565b156195eb57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261964a9061915a565b806196af5750604080518082018252601181527f4c47504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526196af9061915a565b156196ef57505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261974e9061915a565b1561978e57505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526197ed9061915a565b1561982d57505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261988c9061915a565b156198cc57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261992b9061915a565b1561996b57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e3000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526199ca9061915a565b15619a0a57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152619a699061915a565b80619ace5750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152619ace9061915a565b15619b0e57505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e3100000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152619b6d9061915a565b15619bad57505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151616767929060200161c57f565b60608060005b8451811015619c4f5781858281518110619be657619be661be35565b6020026020010151604051602001619bff92919061b97d565b604051602081830303815290604052915060018551619c1e919061b5d2565b8114619c475781604051602001619c35919061c6e8565b60405160208183030381529060405291505b600101619bca565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081619c685790505090508381600081518110619c9357619c9361be35565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110619ce757619ce761be35565b60200260200101819052508181600281518110619d0657619d0661be35565b6020908102919091010152949350505050565b6020808301518351835192840151600093619d37929184919061a7d7565b14159392505050565b60408051808201909152600080825260208201526000619d72846000015185602001518560000151866020015161a8e8565b9050836020015181619d84919061b5d2565b84518590619d9390839061b5d2565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015619dc757508161646d565b6020808301519084015160019114619dee5750815160208481015190840151829020919020145b8015619e1f57825184518590619e0590839061b5d2565b9052508251602085018051619e1b90839061b6d2565b9052505b509192915050565b6040805180820190915260008082526020820152619e4683838361aa08565b5092915050565b60606000826000015167ffffffffffffffff811115619e6e57619e6e61b14c565b6040519080825280601f01601f191660200182016040528015619e98576020820181803683370190505b5090506000602082019050619e46818560200151866000015161aab3565b8151815160009190811115619ec9575081515b6020808501519084015160005b83811015619f825782518251808214619f52576000196020871015619f3157600184619f0389602061b5d2565b619f0d919061b6d2565b619f1890600861c729565b619f2390600261c827565b619f2d919061b5d2565b1990505b8181168382168181039114619f4f57975061646d9650505050505050565b50505b619f5d60208661b6d2565b9450619f6a60208561b6d2565b93505050602081619f7b919061b6d2565b9050619ed6565b50845186516174e8919061c833565b60606000619f9d616d67565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081619fba57905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061a0159061bfa2565b935060ff168151811061a02a5761a02a61be35565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e330000000000000000000000000000000000000000000000000081525060405160200161a07b919061c853565b60405160208183030381529060405282828061a0969061bfa2565b935060ff168151811061a0ab5761a0ab61be35565b60200260200101819052506040518060400160405280600881526020017f76616c696461746500000000000000000000000000000000000000000000000081525082828061a0f89061bfa2565b935060ff168151811061a10d5761a10d61be35565b60200260200101819052508260405160200161a129919061bed0565b60405160208183030381529060405282828061a1449061bfa2565b935060ff168151811061a1595761a15961be35565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e74726163740000000000000000000000000000000000000000000081525082828061a1a69061bfa2565b935060ff168151811061a1bb5761a1bb61be35565b602002602001018190525061a1d0878461ab2d565b828261a1db8161bfa2565b935060ff168151811061a1f05761a1f061be35565b60209081029190910101528551511561a29c5760408051808201909152600b81527f2d2d7265666572656e63650000000000000000000000000000000000000000006020820152828261a2428161bfa2565b935060ff168151811061a2575761a25761be35565b602002602001018190525061a27086600001518461ab2d565b828261a27b8161bfa2565b935060ff168151811061a2905761a29061be35565b60200260200101819052505b85608001511561a30a5760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261a2e58161bfa2565b935060ff168151811061a2fa5761a2fa61be35565b602002602001018190525061a370565b841561a3705760408051808201909152601281527f2d2d726571756972655265666572656e636500000000000000000000000000006020820152828261a34f8161bfa2565b935060ff168151811061a3645761a36461be35565b60200260200101819052505b6040860151511561a40c5760408051808201909152600d81527f2d2d756e73616665416c6c6f77000000000000000000000000000000000000006020820152828261a3ba8161bfa2565b935060ff168151811061a3cf5761a3cf61be35565b6020026020010181905250856040015182828061a3eb9061bfa2565b935060ff168151811061a4005761a40061be35565b60200260200101819052505b85606001511561a4765760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261a4558161bfa2565b935060ff168151811061a46a5761a46a61be35565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561a4945761a49461b14c565b60405190808252806020026020018201604052801561a4c757816020015b606081526020019060019003908161a4b25790505b50905060005b8260ff168160ff16101561a52057838160ff168151811061a4f05761a4f061be35565b6020026020010151828260ff168151811061a50d5761a50d61be35565b602090810291909101015260010161a4cd565b50979650505050505050565b604080518082019091526000808252602082015281518351101561a55157508161646d565b8151835160208501516000929161a5679161b6d2565b61a571919061b5d2565b6020840151909150600190821461a592575082516020840151819020908220145b801561a5ad5783518551869061a5a990839061b5d2565b9052505b50929392505050565b600080826000015161a5da856000015186602001518660000151876020015161a8e8565b61a5e4919061b6d2565b90505b8351602085015161a5f8919061b6d2565b8111619e46578161a6088161c898565b925050826000015161a63f85602001518361a623919061b5d2565b865161a62f919061b5d2565b838660000151876020015161a8e8565b61a649919061b6d2565b905061a5e7565b6060600061a65e848461a5b6565b61a66990600161b6d2565b67ffffffffffffffff81111561a6815761a68161b14c565b60405190808252806020026020018201604052801561a6b457816020015b606081526020019060019003908161a69f5790505b50905060005b81518110156187365761a6d0618a708686619e27565b82828151811061a6e25761a6e261be35565b602090810291909101015260010161a6ba565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061a73e577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831061a76a576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061a78857662386f26fc10000830492506010015b6305f5e100831061a7a0576305f5e100830492506008015b612710831061a7b457612710830492506004015b6064831061a7c6576064830492506002015b600a831061646d5760010192915050565b60008085841161a8de576020841161a88a576000841561a82257600161a7fe86602061b5d2565b61a80990600861c729565b61a81490600261c827565b61a81e919061b5d2565b1990505b835181168561a831898961b6d2565b61a83b919061b5d2565b805190935082165b81811461a8755787841161a85d5787945050505050618367565b8361a8678161c8b2565b94505082845116905061a843565b61a87f878561b6d2565b945050505050618367565b83832061a897858861b5d2565b61a8a1908761b6d2565b91505b85821061a8dc5784822080820361a8c95761a8bf868461b6d2565b9350505050618367565b61a8d460018461b5d2565b92505061a8a4565b505b5092949350505050565b6000838186851161a9f3576020851161a9a2576000851561a93457600161a91087602061b5d2565b61a91b90600861c729565b61a92690600261c827565b61a930919061b5d2565b1990505b8451811660008761a9458b8b61b6d2565b61a94f919061b5d2565b855190915083165b82811461a9945781861061a97c5761a96f8b8b61b6d2565b9650505050505050618367565b8561a9868161c898565b96505083865116905061a957565b859650505050505050618367565b508383206000905b61a9b4868961b5d2565b821161a9f15785832080820361a9d05783945050505050618367565b61a9db60018561b6d2565b935050818061a9e99061c898565b92505061a9aa565b505b61a9fd878761b6d2565b979650505050505050565b6040805180820190915260008082526020820152600061aa3a856000015186602001518660000151876020015161a8e8565b60208087018051918601919091525190915061aa56908261b5d2565b83528451602086015161aa69919061b6d2565b810361aa78576000855261aaaa565b8351835161aa86919061b6d2565b8551869061aa9590839061b5d2565b905250835161aaa4908261b6d2565b60208601525b50909392505050565b6020811061aaeb578151835261aaca60208461b6d2565b925061aad760208361b6d2565b915061aae460208261b5d2565b905061aab3565b600019811561ab1a57600161ab0183602061b5d2565b61ab0d9061010061c827565b61ab17919061b5d2565b90505b9151835183169219169190911790915250565b6060600061ab3b8484616e3a565b805160208083015160405193945061ab559390910161c8c9565b60405160208183030381529060405291505092915050565b610b67806200c92283390190565b61063a806200d48983390190565b61106f806200dac383390190565b612072806200eb3283390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161abe861abed565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161abe86040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b8181101561ac9f5783516001600160a01b031683526020938401939092019160010161ac78565b509095945050505050565b60005b8381101561acc557818101518382015260200161acad565b50506000910152565b6000815180845261ace681602086016020860161acaa565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561adf6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b8181101561addc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261adc684865161acce565b602095860195909450929092019160010161ad8c565b50919750505060209485019492909201915060010161ad22565b50929695505050505050565b600081518084526020840193506020830160005b8281101561ae565781517fffffffff000000000000000000000000000000000000000000000000000000001686526020958601959091019060010161ae16565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561adf6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516040875261aecc604088018261acce565b905060208201519150868103602088015261aee7818361ae02565b96505050602093840193919091019060010161ae88565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561adf6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845261af6085835161acce565b9450602093840193919091019060010161af26565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561adf6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b038151168652602081015190506040602087015261aff6604087018261ae02565b955050602093840193919091019060010161af9d565b60006020828403121561b01e57600080fd5b81516001600160a01b038116811461657b57600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff881660408301528660608301526003861061b0ef577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a083015261b11060c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b60006020828403121561b13c57600080fd5b8151801515811461657b57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600181811c9082168061b18f57607f821691505b602082108103618d4b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b601f82111561310757806000526020600020601f840160051c8101602085101561b1ef5750805b601f840160051c820191505b81811015611252576000815560010161b1fb565b815167ffffffffffffffff81111561b2295761b22961b14c565b61b23d8161b237845461b17b565b8461b1c8565b6020601f82116001811461b271576000831561b2595750848201515b600019600385901b1c1916600184901b178455611252565b600084815260208120601f198516915b8281101561b2a1578785015182556020948501946001909201910161b281565b508482101561b2bf5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b600081546001600160a01b038116845260ff8160a01c1615156020850152506001600160a01b0360018301541660408401526002820160a060608501526000815461b3188161b17b565b8060a0880152600182166000811461b337576001811461b3715761b3a5565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831660c089015260c082151560051b890101935061b3a5565b84600052602060002060005b8381101561b39c5781548a820160c0015260019091019060200161b37d565b890160c0019450505b50505060038401546080860152809250505092915050565b60e08152600061b3d060e083018961acce565b8760208401526001600160a01b0387166040840152828103606084015261b3f7818761acce565b85546080850152600186015460ff16151560a085015290505b82810360c084015261b422818561b2ce565b9998505050505050505050565b60006020828403121561b44157600080fd5b5051919050565b60e08152600061b45b60e083018961acce565b8760208401526001600160a01b0387166040840152828103606084015261b482818761acce565b855160808501526020860151151560a0850152905061b410565b6101208152600061b4b161012083018b61acce565b6001600160a01b038a16602084015288604084015287606084015286608084015282810360a084015261b4e4818761acce565b855460c0850152600186015460ff16151560e085015290505b828103610100840152616887818561b2ce565b60e08152600061b52360e083018961acce565b876020840152866040840152828103606084015261b3f7818761acce565b6101208152600061b55661012083018b61acce565b6001600160a01b038a16602084015288604084015287606084015286608084015282810360a084015261b589818761acce565b855160c08501526020860151151560e0850152905061b4fd565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561646d5761646d61b5a3565b6101208152600061b5fa61012083018a61acce565b6001600160a01b03891660208401528760408401528660608401528560808401528281038060a08501526000825261b64160c0850187805182526020908101511515910152565b602081016101008501525061b659602082018561b2ce565b9a9950505050505050505050565b60808152600061b67a608083018761acce565b8560208401526001600160a01b0385166040840152828103606084015261a9fd818561b2ce565b60808152600061b6b4608083018761acce565b856020840152846040840152828103606084015261a9fd818561b2ce565b8082018082111561646d5761646d61b5a3565b60008261b71b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60c08152600061b73360c083018861acce565b6001600160a01b0387166020840152828103604084015261b754818761acce565b85546060850152600186015460ff1615156080850152905082810360a084015261b77e818561b2ce565b98975050505050505050565b60a08152600061b79d60a083018761acce565b828103602084015261b7af818761acce565b85546040850152600186015460ff16151560608501529050828103608084015261a9fd818561b2ce565b6001600160a01b0383168152604060208201526000618367604083018461acce565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161b83381601a85016020880161acaa565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161b87081601c84016020880161acaa565b01601c01949350505050565b60208152600061657b602083018461acce565b6040516060810167ffffffffffffffff8111828210171561b8b25761b8b261b14c565b60405290565b60008067ffffffffffffffff84111561b8d35761b8d361b14c565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561b9025761b90261b14c565b60405283815290508082840185101561b91a57600080fd5b61873684602083018561acaa565b600082601f83011261b93957600080fd5b61657b8383516020850161b8b8565b60006020828403121561b95a57600080fd5b815167ffffffffffffffff81111561b97157600080fd5b6164698482850161b928565b6000835161b98f81846020880161acaa565b83519083019061b9a381836020880161acaa565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161b9e481601a85016020880161acaa565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161ba2181603384016020880161acaa565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b6001600160a01b03841681526001600160a01b0383166020820152606060408201526000618d31606083018461acce565b60408152600b60408201527f464f554e4452595f4f5554000000000000000000000000000000000000000000606082015260806020820152600061657b608083018461acce565b60006020828403121561bae157600080fd5b815167ffffffffffffffff81111561baf857600080fd5b8201601f8101841361bb0957600080fd5b6164698482516020840161b8b8565b6000855161bb2a818460208a0161acaa565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161bb64816001840160208a0161acaa565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161bba281600284016020890161acaa565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161bbe481600284016020880161acaa565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061bc2f604083018461acce565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161bca681601f85016020870161acaa565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061bd13604083018461acce565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061bd65604083018461acce565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161bddc81601485016020870161acaa565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061be23604083018561acce565b8281036020840152616577818561acce565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161be9c81600185016020870161acaa565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161bee281846020870161acaa565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161bf9581604b85016020870161acaa565b91909101604b0192915050565b600060ff821660ff810361bfb85761bfb861b5a3565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161c01f81602985016020870161acaa565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061657b608083018461acce565b60006020828403121561c08557600080fd5b815167ffffffffffffffff81111561c09c57600080fd5b82016060818503121561c0ae57600080fd5b61c0b661b88f565b81518060030b811461c0c757600080fd5b8152602082015167ffffffffffffffff81111561c0e357600080fd5b61c0ef8682850161b928565b602083015250604082015167ffffffffffffffff81111561c10f57600080fd5b61c11b8682850161b928565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161c18781602185016020870161acaa565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161c37381602185016020880161acaa565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161c3b081602e84016020880161acaa565b01602e01949350505050565b6000825161c3ce81846020870161acaa565b9190910192915050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161c01f81602985016020870161acaa565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161c49481602285016020870161acaa565b9190910160220192915050565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161c4d981600e85016020870161acaa565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161c5b781601885016020880161acaa565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161c5f481601c84016020880161acaa565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161c6fa81846020870161acaa565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b808202811582820484141761646d5761646d61b5a3565b6001815b600184111561c77b5780850481111561c75f5761c75f61b5a3565b600184161561c76d57908102905b60019390931c92800261c744565b935093915050565b60008261c7925750600161646d565b8161c79f5750600061646d565b816001811461c7b5576002811461c7bf5761c7db565b600191505061646d565b60ff84111561c7d05761c7d061b5a3565b50506001821b61646d565b5060208310610133831016604e8410600b841016171561c7fe575081810a61646d565b61c80b600019848461c740565b806000190482111561c81f5761c81f61b5a3565b029392505050565b600061657b838361c783565b8181036000831280158383131683831282161715619e4657619e4661b5a3565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161c88b81601c85016020870161acaa565b91909101601c0192915050565b6000600019820361c8ab5761c8ab61b5a3565b5060010190565b60008161c8c15761c8c161b5a3565b506000190190565b6000835161c8db81846020880161acaa565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161c91581600184016020880161acaa565b0160010194935050505056fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea2646970667358221220c069e4cb3e16bcddc5b07d6ba4019a062fbae92d695877ad19f66fc9ac6047fd64736f6c634300081a00336080604052348015600f57600080fd5b5061061b8061001f6000396000f3fe60806040526004361061002a5760003560e01c80635bcfd61614610033578063c9028a361461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e366004610151565b610073565b34801561005f57600080fd5b5061003161006e36600461020e565b6100ee565b6060811561008a576100878284018461027f565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610375565b6100c560408a0160208b016103e1565b896040013533866040516100de96959493929190610445565b60405180910390a1505050505050565b7fd75bb509c8f32a725aac99ac5c4541060dbfb889a3aca8314d6f00395618c4c48160405161011d9190610507565b60405180910390a150565b803573ffffffffffffffffffffffffffffffffffffffff8116811461014c57600080fd5b919050565b60008060008060006080868803121561016957600080fd5b853567ffffffffffffffff81111561018057600080fd5b86016060818903121561019257600080fd5b94506101a060208701610128565b935060408601359250606086013567ffffffffffffffff8111156101c357600080fd5b8601601f810188136101d457600080fd5b803567ffffffffffffffff8111156101eb57600080fd5b8860208284010111156101fd57600080fd5b959894975092955050506020019190565b60006020828403121561022057600080fd5b813567ffffffffffffffff81111561023757600080fd5b82016080818503121561024957600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561029157600080fd5b813567ffffffffffffffff8111156102a857600080fd5b8201601f810184136102b957600080fd5b803567ffffffffffffffff8111156102d3576102d3610250565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033f5761033f610250565b60405281815282820160200186101561035757600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126103aa57600080fd5b83018035915067ffffffffffffffff8211156103c557600080fd5b6020019150368190038213156103da57600080fd5b9250929050565b6000602082840312156103f357600080fd5b61024982610128565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60a08152600061045960a08301888a6103fc565b73ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff851660608401528281036080840152835180825260005b818110156104c3576020818701810151848301820152016104a7565b5060006020828401015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011683010192505050979650505050505050565b6020815273ffffffffffffffffffffffffffffffffffffffff61052983610128565b16602082015273ffffffffffffffffffffffffffffffffffffffff61055060208401610128565b166040820152600080604084013590508060608401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261059c57600080fd5b830160208101903567ffffffffffffffff8111156105b957600080fd5b8036038213156105c857600080fd5b6080808501526105dc60a0850182846103fc565b9594505050505056fea264697066735822122097b135946b5f8ffb91b019442462dc27864bb547c0a533c3cc3e01dd4abecc7964736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea2646970667358221220eaa287ea22d82335c1d97ef661cb17f1296902daa41cca34de107966248e954364736f6c634300081a003360c060405234801561001057600080fd5b5060405161207238038061207283398101604081905261002f916101f0565b6001600160a01b038216158061004c57506001600160a01b038116155b1561006a5760405163d92e233d60e01b815260040160405180910390fd5b60066100768982610342565b5060076100838882610342565b506008805460ff191660ff881617905560808590528360028111156100aa576100aa610400565b60a08160028111156100be576100be610400565b905250600192909255600080546001600160a01b039283166001600160a01b0319909116179055600880549190921661010002610100600160a81b0319909116179055506104169350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261013357600080fd5b81516001600160401b0381111561014c5761014c61010c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561017a5761017a61010c565b60405281815283820160200185101561019257600080fd5b60005b828110156101b157602081860181015183830182015201610195565b506000918101602001919091529392505050565b8051600381106101d457600080fd5b919050565b80516001600160a01b03811681146101d457600080fd5b600080600080600080600080610100898b03121561020d57600080fd5b88516001600160401b0381111561022357600080fd5b61022f8b828c01610122565b60208b015190995090506001600160401b0381111561024d57600080fd5b6102598b828c01610122565b975050604089015160ff8116811461027057600080fd5b60608a0151909650945061028660808a016101c5565b60a08a0151909450925061029c60c08a016101d9565b91506102aa60e08a016101d9565b90509295985092959890939650565b600181811c908216806102cd57607f821691505b6020821081036102ed57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561033d57806000526020600020601f840160051c8101602085101561031a5750805b601f840160051c820191505b8181101561033a5760008155600101610326565b50505b505050565b81516001600160401b0381111561035b5761035b61010c565b61036f8161036984546102b9565b846102f3565b6020601f8211600181146103a3576000831561038b5750848201515b600019600385901b1c1916600184901b17845561033a565b600084815260208120601f198516915b828110156103d357878501518255602094850194600190920191016103b3565b50848210156103f15786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a051611c1b61045760003960006103440152600081816102f001528181610bdc01528181610ce201528181610efe01526110040152611c1b6000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c806395d89b41116100f9578063ccc7759911610097578063eddeb12311610071578063eddeb12314610461578063f2441b3214610474578063f687d12a14610494578063fc5fecd5146104a757600080fd5b8063ccc77599146103d4578063d9eeebed146103e7578063dd62ed3e1461041b57600080fd5b8063b84c8246116100d3578063b84c824614610386578063c47f00271461039b578063c7012626146103ae578063c835d7cc146103c157600080fd5b806395d89b4114610337578063a3413d031461033f578063a9059cbb1461037357600080fd5b80633ce4a5bc116101665780634d8943bb116101405780634d8943bb146102ac57806370a08231146102b557806385e1f4d0146102eb5780638b851b951461031257600080fd5b80633ce4a5bc1461024657806342966c681461028657806347e7ef241461029957600080fd5b806318160ddd1161019757806318160ddd1461021657806323b872dd1461021e578063313ce5671461023157600080fd5b806306fdde03146101be578063091d2788146101dc578063095ea7b3146101f3575b600080fd5b6101c66104ba565b6040516101d39190611648565b60405180910390f35b6101e560015481565b6040519081526020016101d3565b610206610201366004611687565b61054c565b60405190151581526020016101d3565b6005546101e5565b61020661022c3660046116b3565b610563565b60085460405160ff90911681526020016101d3565b61026173735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d3565b6102066102943660046116f4565b6105fa565b6102066102a7366004611687565b61060e565b6101e560025481565b6101e56102c336600461170d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6101e57f000000000000000000000000000000000000000000000000000000000000000081565b60085461026190610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6101c6610767565b6103667f000000000000000000000000000000000000000000000000000000000000000081565b6040516101d3919061172a565b610206610381366004611687565b610776565b610399610394366004611832565b610783565b005b6103996103a9366004611832565b6107e0565b6102066103bc366004611883565b610839565b6103996103cf36600461170d565b610988565b6103996103e236600461170d565b610a9c565b6103ef610bb0565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101d3565b6101e56104293660046118dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205490565b61039961046f3660046116f4565b610dce565b6000546102619073ffffffffffffffffffffffffffffffffffffffff1681565b6103996104a23660046116f4565b610e50565b6103ef6104b53660046116f4565b610ed2565b6060600680546104c990611915565b80601f01602080910402602001604051908101604052809291908181526020018280546104f590611915565b80156105425780601f1061051757610100808354040283529160200191610542565b820191906000526020600020905b81548152906001019060200180831161052557829003601f168201915b5050505050905090565b60006105593384846110ee565b5060015b92915050565b60006105708484846111f7565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460209081526040808320338452909152902054828110156105db576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105ef85336105ea8685611997565b6110ee565b506001949350505050565b600061060633836113b2565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab1480159061064c575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156106755750600854610100900473ffffffffffffffffffffffffffffffffffffffff163314155b156106ac576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106b683836114f4565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526107569186906119aa565b60405180910390a250600192915050565b6060600780546104c990611915565b60006105593384846111f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab146107d0576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60076107dc8282611a1b565b5050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461082d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60066107dc8282611a1b565b6000806000610846610bb0565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156108d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fc9190611b34565b610932576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61093c33856113b2565b60025460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161097591899189918791611b56565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146109d5576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a22576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610ae9576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610b36576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c679190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610cb6576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d699190611ba2565b905080600003610da5576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060025460015483610db89190611bbb565b610dc29190611bd2565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e1b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610a91565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e9d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610f65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f899190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610fd8576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015611067573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108b9190611ba2565b9050806000036110c7576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000906110d78784611bbb565b6110e19190611bd2565b9296929550919350505050565b73ffffffffffffffffffffffffffffffffffffffff831661113b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611188576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611244576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611291576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040902054818110156112f1576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112fb8282611997565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260036020526040808220939093559085168152908120805484929061133e908490611bd2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113a491815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff82166113ff576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260409020548181101561145f576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114698282611997565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260036020526040812091909155600580548492906114a4908490611997565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016111ea565b73ffffffffffffffffffffffffffffffffffffffff8216611541576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008282546115539190611bd2565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805483929061158d908490611bd2565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561160a576020818501810151868301820152016115ee565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061165b60208301846115e4565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461168457600080fd5b50565b6000806040838503121561169a57600080fd5b82356116a581611662565b946020939093013593505050565b6000806000606084860312156116c857600080fd5b83356116d381611662565b925060208401356116e381611662565b929592945050506040919091013590565b60006020828403121561170657600080fd5b5035919050565b60006020828403121561171f57600080fd5b813561165b81611662565b6020810160038310611765577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff8411156117b5576117b561176b565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff821117156118025761180261176b565b60405283815290508082840185101561181a57600080fd5b83836020830137600060208583010152509392505050565b60006020828403121561184457600080fd5b813567ffffffffffffffff81111561185b57600080fd5b8201601f8101841361186c57600080fd5b61187b8482356020840161179a565b949350505050565b6000806040838503121561189657600080fd5b823567ffffffffffffffff8111156118ad57600080fd5b8301601f810185136118be57600080fd5b6118cd8582356020840161179a565b95602094909401359450505050565b600080604083850312156118ef57600080fd5b82356118fa81611662565b9150602083013561190a81611662565b809150509250929050565b600181811c9082168061192957607f821691505b602082108103611962577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561055d5761055d611968565b6040815260006119bd60408301856115e4565b90508260208301529392505050565b601f821115611a1657806000526020600020601f840160051c810160208510156119f35750805b601f840160051c820191505b81811015611a1357600081556001016119ff565b50505b505050565b815167ffffffffffffffff811115611a3557611a3561176b565b611a4981611a438454611915565b846119cc565b6020601f821160018114611a9b5760008315611a655750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611a13565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015611ae95787850151825560209485019460019092019101611ac9565b5084821015611b2557868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b600060208284031215611b4657600080fd5b8151801515811461165b57600080fd5b608081526000611b6960808301876115e4565b6020830195909552506040810192909252606090910152919050565b600060208284031215611b9757600080fd5b815161165b81611662565b600060208284031215611bb457600080fd5b5051919050565b808202811582820484141761055d5761055d611968565b8082018082111561055d5761055d61196856fea26469706673582212202a06c5d72036d88c206ff2bfdd016b3ce8555bc0090e8bb5487bc61ea043732b64736f6c634300081a0033a26469706673582212201d7c626a54787a1048f359859cd423bf772a64bc36419be67c1ddcdd4cf3e71764736f6c634300081a0033", } // 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 4c001b096..55a97256c 100644 --- a/v2/pkg/gatewayzevm.t.sol/gatewayzevmoutboundtest.go +++ b/v2/pkg/gatewayzevm.t.sol/gatewayzevmoutboundtest.go @@ -73,7 +73,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\":\"testDepositAndRevertZRC20AndCallUniversalContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallUniversalContractFailsITargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallUniversalContractFailsITargetIsProtocol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallUniversalContractFailsIfAmountIsZero\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallUniversalContractFailsIfSenderIsNotProtocol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallUniversalContractFailsIfTargetIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallUniversalContractFailsIfZRC20IsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfSenderNotProtocol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfTargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfTargetIsProtocol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfTargetIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfZRC20IsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositTogglePause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallUniversal\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallUniversalContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallUniversalContractFailsIfSenderIsNotProtocol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallUniversalContractFailsIfTargetIsAmountIsZero\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallUniversalContractFailsIfTargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallUniversalContractFailsIfTargetIsProtocol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallUniversalContractFailsIfTargetIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallUniversalContractFailsIfZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallUniversalContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallUniversalContractFailsIfAmountIsZero\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallUniversalContractFailsIfSenderIsNotProtocol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallUniversalContractFailsIfTargetIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallUniversalContractFailsIfZRC20IsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallUniversalContractIfTargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallUniversalContractIfTargetIsProtocol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteFailsIfTargetIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteFailsIfZRC20IsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteRevertUniversalContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteRevertUniversalContractFailsIfTargetIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteRevertUniversalContractIfSenderIsNotProtocol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteUniversalContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteUniversalContractFailsIfSenderIsNotProtocol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteUniversalContractFailsIfZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Called\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"callOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structCallOptions\",\"components\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"isArbitraryCall\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawn\",\"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\"},{\"name\":\"callOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structCallOptions\",\"components\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"isArbitraryCall\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\":\"CallerIsNotProtocol\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedZetaSent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientGasLimit\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZetaAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"MessageSizeExceeded\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrProtocol\",\"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: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061fc598061003c6000396000f3fe608060405234801561001057600080fd5b506004361061034c5760003560e01c806385226c81116101bd578063c8814d2e116100f9578063eab7674e116100a2578063ef2b53941161007c578063ef2b539414610542578063f1d98f1b1461054a578063fa7626d414610552578063fb339a1c1461055f57600080fd5b8063eab7674e1461052a578063eb78bd7d14610532578063ec294d9f1461053a57600080fd5b8063e09bc659116100d3578063e09bc659146104e5578063e20c9f71146104ed578063e63ab1e9146104f557600080fd5b8063c8814d2e146104cd578063ca26929c146104d5578063cf2c3d1d146104dd57600080fd5b8063996b767511610166578063b5508aa911610140578063b5508aa9146104a5578063b936be8c14610443578063ba414fa6146104ad578063c35cb5e4146104c557600080fd5b8063996b76751461048d5780639c9acd5d14610495578063b0464fdc1461049d57600080fd5b8063916a17c611610197578063916a17c61461047057806396d9d8761461048557806397f7661f1461044357600080fd5b806385226c811461044b578063884660a314610460578063890a2d671461046857600080fd5b80633e5e3c231161028c5780635cec7db5116102355780636efa04b51161020f5780636efa04b51461042b5780637cec29b0146104335780637f924c4e1461043b578063828d267c1461044357600080fd5b80635cec7db5146104065780636163f8ef1461040e57806366d9a9a01461041657600080fd5b806351336fb01161026657806351336fb0146103f657806358c9987f146103fe5780635b4c90e1146103a157600080fd5b80633e5e3c23146103de5780633f7286f4146103e657806348f4fd07146103ee57600080fd5b806327820625116102f95780632ade3880116102d35780632ade3880146103b1578063339bd828146103c65780633626c616146103ce5780633ab5b199146103d657600080fd5b806327820625146103995780632948df41146103a15780632acb21b4146103a957600080fd5b80631c785a141161032a5780631c785a141461036b5780631ed7831c146103735780632468bc0f1461039157600080fd5b8063084fafab146103515780630a9254e41461035b57806314b7a6da14610363575b600080fd5b610359610567565b005b61035961073d565b610359611241565b610359611391565b61037b611ca8565b6040516103889190619f02565b60405180910390f35b610359611d0a565b6103596121d5565b61035961229d565b610359612486565b6103b9612645565b6040516103889190619f9e565b610359612787565b6103596128d3565b610359612a5b565b61037b612c0c565b61037b612c6c565b610359612ccc565b610359612e17565b610359612f62565b610359613117565b610359613305565b61041e613453565b604051610388919061a104565b6103596135d5565b610359613979565b610359613b64565b610359613b9d565b610453613d49565b604051610388919061a1a2565b610359613e19565b6103596140f8565b6104786142b3565b604051610388919061a219565b6103596143ae565b610359614501565b610359614655565b6104786147a5565b6104536148a0565b6104b5614970565b6040519015158152602001610388565b610359614a44565b610359614bff565b610359614d41565b610359614fc4565b610359615182565b61037b61533b565b61051c7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b604051908152602001610388565b61035961539b565b6103596154e9565b6103596156a7565b610359615856565b610359615a07565b601f546104b59060ff1681565b610359615b55565b602480546040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190529281018390526044810183905260648101929092526001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156105f657600080fd5b505af115801561060a573d6000803e3d6000fd5b505050507fd75bb509c8f32a725aac99ac5c4541060dbfb889a3aca8314d6f00395618c4c4602c60405161063e919061a3da565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b1580156106a057600080fd5b505af11580156106b4573d6000803e3d6000fd5b50506020546024546040517f184b07930000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063184b079393506107099290911690602c9060040161a3ed565b600060405180830381600087803b15801561072357600080fd5b505af1158015610737573d6000803e3d6000fd5b50505050565b602580547fffffffffffffffffffffffff000000000000000000000000000000000000000090811630179091556026805490911661123417905560405161078390619e15565b604051809103906000f08015801561079f573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600f81527f476174657761795a45564d2e736f6c000000000000000000000000000000000060208201526025549151602481019390935292166044820152610883919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc95500000000000000000000000000000000000000000000000000000000179052615d08565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b039384168102919091179182905560208054919092049092167fffffffffffffffffffffffff000000000000000000000000000000000000000090921682178155604080517f2722feee0000000000000000000000000000000000000000000000000000000081529051632722feee926004808401939192918290030181865afa158015610945573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610969919061a40f565b602780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516109ad90619e22565b604051809103906000f0801580156109c9573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161781556027546040517f06447d5600000000000000000000000000000000000000000000000000000000815292166004830152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d569101600060405180830381600087803b158015610a6557600080fd5b505af1158015610a79573d6000803e3d6000fd5b505050506000806000604051610a8e90619e2f565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610aca573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602054604051601293600193849360009391921690610b2090619e3c565b610b2f9695949392919061a438565b604051809103906000f080158015610b4b573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556023546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b158015610be257600080fd5b505af1158015610bf6573d6000803e3d6000fd5b50506023546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b158015610c6057600080fd5b505af1158015610c74573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610cf457600080fd5b505af1158015610d08573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610d5d57600080fd5b505af1158015610d71573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610de5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e09919061a52d565b506021546025546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116906347e7ef24906044016020604051808303816000875af1158015610e7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9e919061a52d565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610efd57600080fd5b505af1158015610f11573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610f8757600080fd5b505af1158015610f9b573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116925063095ea7b391506044016020604051808303816000875af115801561100f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611033919061a52d565b50602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b15801561108557600080fd5b505af1158015611099573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af115801561110d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611131919061a52d565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561119057600080fd5b505af11580156111a4573d6000803e3d6000fd5b5050604080516080810182526025546001600160a01b0390811682526000602080840182815260018587019081528651928301909652918152606084018190528351602c80549185167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161781559251602d8054919095169116179092559251602e55909350909150602f9061123c908261a5c5565b505050565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561129a57600080fd5b505af11580156112ae573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561131e57600080fd5b505af1158015611332573d6000803e3d6000fd5b50506020546021546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260016024820152600060448201529116925063f45346dc9150606401610709565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156113ea57600080fd5b505af11580156113fe573d6000803e3d6000fd5b5050602754604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506114e9919060040161a684565b600060405180830381600087803b15801561150357600080fd5b505af1158015611517573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561156b57600080fd5b505af115801561157f573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156115dc57600080fd5b505af11580156115f0573d6000803e3d6000fd5b5050602754604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506116db919060040161a684565b600060405180830381600087803b1580156116f557600080fd5b505af1158015611709573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561175d57600080fd5b505af1158015611771573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156117ce57600080fd5b505af11580156117e2573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561183657600080fd5b505af115801561184a573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd93c066500000000000000000000000000000000000000000000000000000000600482015260019250737109709ecfa91a80626ff3989d68f67f5b1dd12d915063c31eb0e090602401600060405180830381600087803b1580156118bd57600080fd5b505af11580156118d1573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561192e57600080fd5b505af1158015611942573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810187905290821660448201529116925063f45346dc9150606401600060405180830381600087803b1580156119ba57600080fd5b505af11580156119ce573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015611a2b57600080fd5b505af1158015611a3f573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611a9357600080fd5b505af1158015611aa7573d6000803e3d6000fd5b50506021546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a08231906024015b602060405180830381865afa158015611afb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b1f919061a697565b9050611b2c600082615d27565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611b8557600080fd5b505af1158015611b99573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810188905290821660448201529116925063f45346dc9150606401600060405180830381600087803b158015611c1157600080fd5b505af1158015611c25573d6000803e3d6000fd5b50506021546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611c78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9c919061a697565b905061123c8382615d27565b60606016805480602002602001604051908101604052809291908181526020018280548015611d0057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611ce2575b5050505050905090565b6022546027546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611d5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d7f919061a697565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015611dd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df5919061a697565b6024546040519192506001600160a01b03163190600090611e189060200161a6b0565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611f0657600080fd5b505af1158015611f1a573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e9450611f7593506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054611fa5936001600160a01b03928316928c92169061a6ed565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561200657600080fd5b505af115801561201a573d6000803e3d6000fd5b50506020546024546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a9593506120719286928c92911690889060040161a79e565b600060405180830381600087803b15801561208b57600080fd5b505af115801561209f573d6000803e3d6000fd5b50506022546027546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156120f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612116919061a697565b905061212b612125888861a807565b82615d27565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801561217c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121a0919061a697565b90506121ac8682615d27565b6121cb6121b9898761a81a565b6024546001600160a01b031631615d27565b5050505050505050565b604051630618f58760e51b81527f42c0407e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561224157600080fd5b505af1158015612255573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401610686565b60006040516020016122ae9061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b15801561235c57600080fd5b505af1158015612370573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156123e057600080fd5b505af11580156123f4573d6000803e3d6000fd5b50506020546024546040517fbcf7f32b0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063bcf7f32b935061245092869260009260019290911690899060040161a82d565b600060405180830381600087803b15801561246a57600080fd5b505af115801561247e573d6000803e3d6000fd5b505050505050565b60006040516020016124979061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f42c0407e0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561256157600080fd5b505af1158015612575573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015b600060405180830381600087803b1580156125d357600080fd5b505af11580156125e7573d6000803e3d6000fd5b50506020546021546024546040517fbcf7f32b0000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063bcf7f32b9450612450938793811692600192911690899060040161a82d565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561277e57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156127675783829060005260206000200180546126da9061a2b0565b80601f01602080910402602001604051908101604052809291908181526020018280546127069061a2b0565b80156127535780601f1061272857610100808354040283529160200191612753565b820191906000526020600020905b81548152906001019060200180831161273657829003601f168201915b5050505050815260200190600101906126bb565b505050508152505081526020019060010190612669565b50505050905090565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156127e057600080fd5b505af11580156127f4573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561286457600080fd5b505af1158015612878573d6000803e3d6000fd5b50506020546021546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450639d4ba46593506107099290911690600190600090602c9060040161a882565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561292f57600080fd5b505af1158015612943573d6000803e3d6000fd5b5050604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156129b357600080fd5b505af11580156129c7573d6000803e3d6000fd5b50506020546021546027546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810187905290821660448201529116925063f45346dc91506064015b600060405180830381600087803b158015612a4057600080fd5b505af1158015612a54573d6000803e3d6000fd5b5050505050565b6000604051602001612a6c9061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b158015612b1a57600080fd5b505af1158015612b2e573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015612b9e57600080fd5b505af1158015612bb2573d6000803e3d6000fd5b50506020546021546040517fbcf7f32b0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063bcf7f32b93506124509286921690600190600090899060040161a82d565b60606018805480602002602001604051908101604052809291908181526020018280548015611d00576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611ce2575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015611d00576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611ce2575050505050905090565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612d2557600080fd5b505af1158015612d39573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015612da957600080fd5b505af1158015612dbd573d6000803e3d6000fd5b50506020546024546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450639d4ba465935061070992600092600192911690602c9060040161a882565b604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015612e8357600080fd5b505af1158015612e97573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015612ef457600080fd5b505af1158015612f08573d6000803e3d6000fd5b50506020546021546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450639d4ba465935061070992909116906001908590602c9060040161a882565b6000604051602001612f739061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b15801561302157600080fd5b505af1158015613035573d6000803e3d6000fd5b5050604051630618f58760e51b81527f5d67094f000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156130a557600080fd5b505af11580156130b9573d6000803e3d6000fd5b50506020546021546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca379450612450938793811692600092911690899060040161a82d565b60405160019060009061312c9060200161a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156131f657600080fd5b505af115801561320a573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561326757600080fd5b505af115801561327b573d6000803e3d6000fd5b50506020546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0390911692506321501a9591506132ce90849087908590889060040161a79e565b600060405180830381600087803b1580156132e857600080fd5b505af11580156132fc573d6000803e3d6000fd5b50505050505050565b604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561337157600080fd5b505af1158015613385573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156133e257600080fd5b505af11580156133f6573d6000803e3d6000fd5b50506020546021546027546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550639d4ba465945061070993928316926001921690602c9060040161a882565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561277e57838290600052602060002090600202016040518060400160405290816000820180546134aa9061a2b0565b80601f01602080910402602001604051908101604052809291908181526020018280546134d69061a2b0565b80156135235780601f106134f857610100808354040283529160200191613523565b820191906000526020600020905b81548152906001019060200180831161350657829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156135bd57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161356a5790505b50505050508152505081526020019060010190613477565b602154602480546040516370a0823160e01b81526001600160a01b03918216600482015260009391909116916370a082319101602060405180830381865afa158015613625573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613649919061a697565b9050613656600082615d27565b60006040516020016136679061a6b0565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561375557600080fd5b505af1158015613769573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e94506137c493506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526027546020546137f5936001600160a01b0392831692600192169061a6ed565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561385657600080fd5b505af115801561386a573d6000803e3d6000fd5b50506020546021546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca3794506138c8938793811692600192911690899060040161a82d565b600060405180830381600087803b1580156138e257600080fd5b505af11580156138f6573d6000803e3d6000fd5b5050602154602480546040516370a0823160e01b81526001600160a01b03918216600482015260009550921692506370a082319101602060405180830381865afa158015613948573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061396c919061a697565b9050610737600182615d27565b600060405160200161398a9061a6b0565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015613a7857600080fd5b505af1158015613a8c573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e9450613ae793506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054613b18936001600160a01b0392831692600192169061a6ed565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024016125b9565b6021546026546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401611ade565b6000604051602001613bae9061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b158015613c5c57600080fd5b505af1158015613c70573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015613ce057600080fd5b505af1158015613cf4573d6000803e3d6000fd5b50506020546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0390911692506321501a959150612450908490600190600090889060040161a79e565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101561277e578382906000526020600020018054613d8c9061a2b0565b80601f0160208091040260200160405190810160405280929190818152602001828054613db89061a2b0565b8015613e055780601f10613dda57610100808354040283529160200191613e05565b820191906000526020600020905b815481529060010190602001808311613de857829003601f168201915b505050505081526020019060010190613d6d565b602154602480546040516370a0823160e01b81526001600160a01b03918216600482015260009391909116916370a082319101602060405180830381865afa158015613e69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e8d919061a697565b9050613e9a600082615d27565b602480546040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190529281018390526044810183905260648101929092526001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015613f2957600080fd5b505af1158015613f3d573d6000803e3d6000fd5b505050507fd75bb509c8f32a725aac99ac5c4541060dbfb889a3aca8314d6f00395618c4c4602c604051613f71919061a3da565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613fd257600080fd5b505af1158015613fe6573d6000803e3d6000fd5b50506020546021546024546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550639d4ba465945061404393928316926001921690602c9060040161a882565b600060405180830381600087803b15801561405d57600080fd5b505af1158015614071573d6000803e3d6000fd5b5050602154602480546040516370a0823160e01b81526001600160a01b03918216600482015260009550921692506370a082319101602060405180830381865afa1580156140c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140e7919061a697565b90506140f4600182615d27565b5050565b60405160019060009061410d9060200161a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156141d757600080fd5b505af11580156141eb573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561424857600080fd5b505af115801561425c573d6000803e3d6000fd5b50506020546027546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a9593506132ce9286928992911690889060040161a79e565b6060601d805480602002602001604051908101604052809291908181526020016000905b8282101561277e5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561439657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116143435790505b505050505081525050815260200190600101906142d7565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561440a57600080fd5b505af115801561441e573d6000803e3d6000fd5b5050604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561448e57600080fd5b505af11580156144a2573d6000803e3d6000fd5b50506020546021546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101869052911660448201819052925063f45346dc9150606401612a26565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561455a57600080fd5b505af115801561456e573d6000803e3d6000fd5b5050604051630618f58760e51b81527f5d67094f000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156145de57600080fd5b505af11580156145f2573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526000602482015290821660448201529116925063f45346dc9150606401610709565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156146ae57600080fd5b505af11580156146c2573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561473257600080fd5b505af1158015614746573d6000803e3d6000fd5b50506020546026546040517ff45346dc00000000000000000000000000000000000000000000000000000000815260006004820152600160248201526001600160a01b0391821660448201529116925063f45346dc9150606401610709565b6060601c805480602002602001604051908101604052809291908181526020016000905b8282101561277e5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561488857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116148355790505b505050505081525050815260200190600101906147c9565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101561277e5783829060005260206000200180546148e39061a2b0565b80601f016020809104026020016040519081016040528092919081815260200182805461490f9061a2b0565b801561495c5780601f106149315761010080835404028352916020019161495c565b820191906000526020600020905b81548152906001019060200180831161493f57829003601f168201915b5050505050815260200190600101906148c4565b60085460009060ff1615614988575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015614a19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a3d919061a697565b1415905090565b604051600190600090614a599060200161a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f42c0407e0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b158015614b2357600080fd5b505af1158015614b37573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015614b9457600080fd5b505af1158015614ba8573d6000803e3d6000fd5b50506020546024546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a9593506132ce9286928992911690889060040161a79e565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614c5857600080fd5b505af1158015614c6c573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015614cdc57600080fd5b505af1158015614cf0573d6000803e3d6000fd5b50506020546040517f184b07930000000000000000000000000000000000000000000000000000000081526001600160a01b03909116925063184b0793915061070990600090602c9060040161a3ed565b6021546026546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015614d92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614db6919061a697565b9050614dc3600082615d27565b60255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614e1c57600080fd5b505af1158015614e30573d6000803e3d6000fd5b5050604051630618f58760e51b81527f42c0407e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015614ea057600080fd5b505af1158015614eb4573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810188905290821660448201529116925063f45346dc9150606401600060405180830381600087803b158015614f2c57600080fd5b505af1158015614f40573d6000803e3d6000fd5b50506021546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015614f93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614fb7919061a697565b905061123c600082615d27565b6000604051602001614fd59061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f42c0407e0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561509f57600080fd5b505af11580156150b3573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561511057600080fd5b505af1158015615124573d6000803e3d6000fd5b50506020546021546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca379450612450938793811692600192911690899060040161a82d565b60006040516020016151939061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561525d57600080fd5b505af1158015615271573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156152ce57600080fd5b505af11580156152e2573d6000803e3d6000fd5b50506020546021546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063c39aca37935061245092869216906001908690899060040161a82d565b60606015805480602002602001604051908101604052809291908181526020018280548015611d00576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611ce2575050505050905090565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156153f457600080fd5b505af1158015615408573d6000803e3d6000fd5b5050604051630618f58760e51b81527f5d67094f000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561547857600080fd5b505af115801561548c573d6000803e3d6000fd5b50506020546021546024546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550639d4ba465945061070993928316926000921690602c9060040161a882565b60006040516020016154fa9061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156155c457600080fd5b505af11580156155d8573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561563557600080fd5b505af1158015615649573d6000803e3d6000fd5b50506020546021546027546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca379450612450938793811692600192911690899060040161a82d565b60006040516020016156b89061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b15801561576657600080fd5b505af115801561577a573d6000803e3d6000fd5b5050604051630618f58760e51b81527f19c08f49000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156157ea57600080fd5b505af11580156157fe573d6000803e3d6000fd5b50506020546021546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a959350612450928692600092911690889060040161a79e565b60006040516020016158679061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b15801561591557600080fd5b505af1158015615929573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561599957600080fd5b505af11580156159ad573d6000803e3d6000fd5b50506020546021546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063c39aca3793506124509286921690600190600090899060040161a82d565b604051630618f58760e51b81527f42c0407e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015615a7357600080fd5b505af1158015615a87573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015615ae457600080fd5b505af1158015615af8573d6000803e3d6000fd5b50506020546021546024546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550639d4ba465945061070993928316926001921690602c9060040161a882565b6000604051602001615b669061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b158015615c1457600080fd5b505af1158015615c28573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015615c9857600080fd5b505af1158015615cac573d6000803e3d6000fd5b50506020546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063c39aca37935061245092869260009260019290911690899060040161a82d565b6000615d12619e49565b615d1d848483615da6565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b158015615d9257600080fd5b505afa15801561247e573d6000803e3d6000fd5b600080615db38584615e21565b9050615e166040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001615e0192919061a8b9565b60405160208183030381529060405285615e2d565b9150505b9392505050565b6000615e1a8383615e5b565b60c08101515160009015615e5157615e4a84848460c00151615e76565b9050615e1a565b615e4a848461601c565b6000615e678383616107565b615e1a83836020015184615e2d565b600080615e81616113565b90506000615e8f86836161e6565b90506000615ea6826060015183602001518561668c565b90506000615eb68383898961689e565b90506000615ec38261771b565b602081015181519192509060030b15615f3657898260400151604051602001615eed92919061a8db565b60408051601f19818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252615f2d9160040161a684565b60405180910390fd5b6000615f796040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a2000000000000000000000008152508360016178ea565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90615fcc90849060040161a684565b602060405180830381865afa158015615fe9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061600d919061a40f565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc9259061607190879060040161a684565b600060405180830381865afa15801561608e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526160b6919081019061aa15565b905060006160e482856040516020016160d092919061aa4a565b604051602081830303815290604052617aea565b90506001600160a01b038116615d1d578484604051602001615eed92919061aa79565b6140f482826000617afd565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c9061619a90849060040161ab24565b600060405180830381865afa1580156161b7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526161df919081019061ab6b565b9250505090565b6162186040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d90506162636040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b61626c85617c00565b6020820152600061627c86617fe5565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa1580156162be573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526162e6919081019061ab6b565b86838560200151604051602001616300949392919061abb4565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb119061635890859060040161a684565b600060405180830381865afa158015616375573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261639d919081019061ab6b565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f6906163e590849060040161acb8565b602060405180830381865afa158015616402573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616426919061a52d565b61643b5781604051602001615eed919061ad0a565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061648090849060040161ad9c565b600060405180830381865afa15801561649d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526164c5919081019061ab6b565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f69061650c90849060040161adee565b602060405180830381865afa158015616529573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061654d919061a52d565b156165e2576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061659790849060040161adee565b600060405180830381865afa1580156165b4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526165dc919081019061ab6b565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001616607919061ae40565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161663392919061aeac565b600060405180830381865afa158015616650573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616678919081019061ab6b565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816166a85790505090506040518060400160405280600481526020017f6772657000000000000000000000000000000000000000000000000000000000815250816000815181106167085761670861aed1565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061675c5761675c61aed1565b602002602001018190525084604051602001616778919061af00565b6040516020818303038152906040528160028151811061679a5761679a61aed1565b6020026020010181905250826040516020016167b6919061af6c565b604051602081830303815290604052816003815181106167d8576167d861aed1565b602002602001018190525060006167ee8261771b565b602080820151604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000818501908152825180840184526000808252908601528251808401909352905182529281019290925291925061687f9060408051808201825260008082526020918201528151808301909252845182528085019082015290618268565b6168945785604051602001615eed919061afad565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d90156168ee565b511590565b616a62578260200151156169aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401615f2d565b8260c0015115616a62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401615f2d565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081616a7b57905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616ad69061b03e565b935060ff1681518110616aeb57616aeb61aed1565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001616b3c919061b05d565b604051602081830303815290604052828280616b579061b03e565b935060ff1681518110616b6c57616b6c61aed1565b60200260200101819052506040518060400160405280600681526020017f6465706c6f790000000000000000000000000000000000000000000000000000815250828280616bb99061b03e565b935060ff1681518110616bce57616bce61aed1565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d65000000000000000000000000000000000000815250828280616c1b9061b03e565b935060ff1681518110616c3057616c3061aed1565b60200260200101819052508760200151828280616c4c9061b03e565b935060ff1681518110616c6157616c6161aed1565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e747261637450617468000000000000000000000000000000000000815250828280616cae9061b03e565b935060ff1681518110616cc357616cc361aed1565b602090810291909101015287518282616cdb8161b03e565b935060ff1681518110616cf057616cf061aed1565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280616d3d9061b03e565b935060ff1681518110616d5257616d5261aed1565b6020026020010181905250616d66466182c9565b8282616d718161b03e565b935060ff1681518110616d8657616d8661aed1565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280616dd39061b03e565b935060ff1681518110616de857616de861aed1565b602002602001018190525086828280616e009061b03e565b935060ff1681518110616e1557616e1561aed1565b6020908102919091010152855115616f3c5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f6465000000000000000000000060208201528282616e668161b03e565b935060ff1681518110616e7b57616e7b61aed1565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90616ecb90899060040161a684565b600060405180830381865afa158015616ee8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616f10919081019061ab6b565b8282616f1b8161b03e565b935060ff1681518110616f3057616f3061aed1565b60200260200101819052505b84602001511561700c5760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282616f858161b03e565b935060ff1681518110616f9a57616f9a61aed1565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280616fe79061b03e565b935060ff1681518110616ffc57616ffc61aed1565b60200260200101819052506171d3565b6170446168e98660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6170d75760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826170878161b03e565b935060ff168151811061709c5761709c61aed1565b60200260200101819052508460a001516040516020016170bc919061af00565b604051602081830303815290604052828280616fe79061b03e565b8460c0015115801561711a57506040808901518151808301835260008082526020918201528251808401909352815183529081019082015261711890511590565b155b156171d35760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828261715e8161b03e565b935060ff16815181106171735761717361aed1565b602002602001018190525061718788618369565b604051602001617197919061af00565b6040516020818303038152906040528282806171b29061b03e565b935060ff16815181106171c7576171c761aed1565b60200260200101819052505b6040808601518151808301835260008082526020918201528251808401909352815183529081019082015261720790511590565b61729c5760408051808201909152600b81527f2d2d72656c6179657249640000000000000000000000000000000000000000006020820152828261724a8161b03e565b935060ff168151811061725f5761725f61aed1565b6020026020010181905250846040015182828061727b9061b03e565b935060ff16815181106172905761729061aed1565b60200260200101819052505b6060850151156173bd5760408051808201909152600681527f2d2d73616c740000000000000000000000000000000000000000000000000000602082015282826172e58161b03e565b935060ff16815181106172fa576172fa61aed1565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015617369573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617391919081019061ab6b565b828261739c8161b03e565b935060ff16815181106173b1576173b161aed1565b60200260200101819052505b60e085015151156174645760408051808201909152600a81527f2d2d6761734c696d697400000000000000000000000000000000000000000000602082015282826174078161b03e565b935060ff168151811061741c5761741c61aed1565b60200260200101819052506174388560e00151600001516182c9565b82826174438161b03e565b935060ff16815181106174585761745861aed1565b60200260200101819052505b60e0850151602001511561750e5760408051808201909152600a81527f2d2d676173507269636500000000000000000000000000000000000000000000602082015282826174b18161b03e565b935060ff16815181106174c6576174c661aed1565b60200260200101819052506174e28560e00151602001516182c9565b82826174ed8161b03e565b935060ff16815181106175025761750261aed1565b60200260200101819052505b60e085015160400151156175b85760408051808201909152600e81527f2d2d6d61784665655065724761730000000000000000000000000000000000006020820152828261755b8161b03e565b935060ff16815181106175705761757061aed1565b602002602001018190525061758c8560e00151604001516182c9565b82826175978161b03e565b935060ff16815181106175ac576175ac61aed1565b60200260200101819052505b60e085015160600151156176625760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826176058161b03e565b935060ff168151811061761a5761761a61aed1565b60200260200101819052506176368560e00151606001516182c9565b82826176418161b03e565b935060ff16815181106176565761765661aed1565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156176805761768061a54f565b6040519080825280602002602001820160405280156176b357816020015b606081526020019060019003908161769e5790505b50905060005b8260ff168160ff16101561770c57838160ff16815181106176dc576176dc61aed1565b6020026020010151828260ff16815181106176f9576176f961aed1565b60209081029190910101526001016176b9565b5093505050505b949350505050565b6177426040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916177c89186910161b0c8565b600060405180830381865afa1580156177e5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261780d919081019061ab6b565b9050600061781b8683618e58565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161784b919061a1a2565b6000604051808303816000875af115801561786a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617892919081019061b10f565b805190915060030b158015906178ab5750602081015151155b80156178ba5750604081015151155b1561689457816000815181106178d2576178d261aed1565b6020026020010151604051602001615eed919061b1c5565b6060600061791f8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506179569082905b90618fad565b15617ab35760006179d3826179cd846179c76179998a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90618fd4565b90619036565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150617a37908290618fad565b15617aa157604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617a9e905b82906190bb565b90505b617aaa816190e1565b92505050615e1a565b8215617acc578484604051602001615eed92919061b3b1565b5050604080516020810190915260008152615e1a565b509392505050565b6000808251602084016000f09392505050565b8160a0015115617b0c57505050565b6000617b1984848461914a565b90506000617b268261771b565b602081015181519192509060030b158015617bc25750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617bc290604080518082018252600080825260209182015281518083019092528451825280850190820152617950565b15617bcf57505050505050565b60408201515115617bef578160400151604051602001615eed919061b458565b80604051602001615eed919061b4b6565b60606000617c358360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150617c9a905b8290618268565b15617d0957604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615e1a90617d049083906196e5565b6190e1565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617d6b905b829061976f565b600103617e3857604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617dd190617a97565b50604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615e1a90617d04905b83906190bb565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617e9790617c93565b15617fce57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290617eff908390619809565b905060008160018351617f12919061a807565b81518110617f2257617f2261aed1565b60200260200101519050617fc5617d04617f986040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528551825280860190820152906196e5565b95945050505050565b82604051602001615eed919061b521565b50919050565b6060600061801a8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061807c90617c93565b1561808a57615e1a816190e1565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526180e990617d64565b60010361815357604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615e1a90617d0490617e31565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526181b290617c93565b15617fce57604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061821a908390619809565b9050600181511115618256578060028251618235919061a807565b815181106182455761824561aed1565b602002602001015192505050919050565b5082604051602001615eed919061b521565b80518251600091111561827d57506000615d21565b815183516020850151600092916182939161a81a565b61829d919061a807565b9050826020015181036182b4576001915050615d21565b82516020840151819020912014905092915050565b606060006182d6836198ae565b600101905060008167ffffffffffffffff8111156182f6576182f661a54f565b6040519080825280601f01601f191660200182016040528015618320576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461832a57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e53454400000000000000000000000000000000000000000000818401908152855180870187528381528401929092528451808601909552518452908301526060916183f5905b8290619990565b1561843557505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618494906183ee565b156184d457505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618533906183ee565b1561857357505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526185d2906183ee565b806186375750604080518082018252601081527f47504c2d322e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618637906183ee565b1561867757505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526186d6906183ee565b8061873b5750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261873b906183ee565b1561877b57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526187da906183ee565b8061883f5750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261883f906183ee565b1561887f57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526188de906183ee565b806189435750604080518082018252601181527f4c47504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618943906183ee565b1561898357505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526189e2906183ee565b15618a2257505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618a81906183ee565b15618ac157505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618b20906183ee565b15618b6057505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618bbf906183ee565b15618bff57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e300000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618c5e906183ee565b15618c9e57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618cfd906183ee565b80618d625750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618d62906183ee565b15618da257505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e3100000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618e01906183ee565b15618e4157505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151615eed929060200161b5ff565b60608060005b8451811015618ee35781858281518110618e7a57618e7a61aed1565b6020026020010151604051602001618e9392919061aa4a565b604051602081830303815290604052915060018551618eb2919061a807565b8114618edb5781604051602001618ec9919061b768565b60405160208183030381529060405291505b600101618e5e565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081618efc5790505090508381600081518110618f2757618f2761aed1565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110618f7b57618f7b61aed1565b60200260200101819052508181600281518110618f9a57618f9a61aed1565b6020908102919091010152949350505050565b6020808301518351835192840151600093618fcb92918491906199a4565b14159392505050565b604080518082019091526000808252602082015260006190068460000151856020015185600001518660200151619ab5565b9050836020015181619018919061a807565b8451859061902790839061a807565b90525060208401525090919050565b604080518082019091526000808252602082015281518351101561905b575081615d21565b60208083015190840151600191146190825750815160208481015190840151829020919020145b80156190b35782518451859061909990839061a807565b90525082516020850180516190af90839061a81a565b9052505b509192915050565b60408051808201909152600080825260208201526190da838383619bd5565b5092915050565b60606000826000015167ffffffffffffffff8111156191025761910261a54f565b6040519080825280601f01601f19166020018201604052801561912c576020820181803683370190505b50905060006020820190506190da8185602001518660000151619c80565b60606000619156616113565b6040805160ff808252612000820190925291925060009190816020015b606081526020019060019003908161917357905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806191ce9061b03e565b935060ff16815181106191e3576191e361aed1565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001619234919061b7a9565b60405160208183030381529060405282828061924f9061b03e565b935060ff16815181106192645761926461aed1565b60200260200101819052506040518060400160405280600881526020017f76616c69646174650000000000000000000000000000000000000000000000008152508282806192b19061b03e565b935060ff16815181106192c6576192c661aed1565b6020026020010181905250826040516020016192e2919061af6c565b6040516020818303038152906040528282806192fd9061b03e565b935060ff16815181106193125761931261aed1565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e74726163740000000000000000000000000000000000000000000081525082828061935f9061b03e565b935060ff16815181106193745761937461aed1565b60200260200101819052506193898784619cfa565b82826193948161b03e565b935060ff16815181106193a9576193a961aed1565b6020908102919091010152855151156194555760408051808201909152600b81527f2d2d7265666572656e6365000000000000000000000000000000000000000000602082015282826193fb8161b03e565b935060ff16815181106194105761941061aed1565b6020026020010181905250619429866000015184619cfa565b82826194348161b03e565b935060ff16815181106194495761944961aed1565b60200260200101819052505b8560800151156194c35760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261949e8161b03e565b935060ff16815181106194b3576194b361aed1565b6020026020010181905250619529565b84156195295760408051808201909152601281527f2d2d726571756972655265666572656e63650000000000000000000000000000602082015282826195088161b03e565b935060ff168151811061951d5761951d61aed1565b60200260200101819052505b604086015151156195c55760408051808201909152600d81527f2d2d756e73616665416c6c6f7700000000000000000000000000000000000000602082015282826195738161b03e565b935060ff16815181106195885761958861aed1565b602002602001018190525085604001518282806195a49061b03e565b935060ff16815181106195b9576195b961aed1565b60200260200101819052505b85606001511561962f5760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261960e8161b03e565b935060ff16815181106196235761962361aed1565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561964d5761964d61a54f565b60405190808252806020026020018201604052801561968057816020015b606081526020019060019003908161966b5790505b50905060005b8260ff168160ff1610156196d957838160ff16815181106196a9576196a961aed1565b6020026020010151828260ff16815181106196c6576196c661aed1565b6020908102919091010152600101619686565b50979650505050505050565b604080518082019091526000808252602082015281518351101561970a575081615d21565b815183516020850151600092916197209161a81a565b61972a919061a807565b6020840151909150600190821461974b575082516020840151819020908220145b80156197665783518551869061976290839061a807565b9052505b50929392505050565b60008082600001516197938560000151866020015186600001518760200151619ab5565b61979d919061a81a565b90505b835160208501516197b1919061a81a565b81116190da57816197c18161b7ee565b92505082600001516197f88560200151836197dc919061a807565b86516197e8919061a807565b8386600001518760200151619ab5565b619802919061a81a565b90506197a0565b60606000619817848461976f565b61982290600161a81a565b67ffffffffffffffff81111561983a5761983a61a54f565b60405190808252806020026020018201604052801561986d57816020015b60608152602001906001900390816198585790505b50905060005b8151811015617ae257619889617d0486866190bb565b82828151811061989b5761989b61aed1565b6020908102919091010152600101619873565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106198f7577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310619923576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061994157662386f26fc10000830492506010015b6305f5e1008310619959576305f5e100830492506008015b612710831061996d57612710830492506004015b6064831061997f576064830492506002015b600a8310615d215760010192915050565b600061999c8383619d3a565b159392505050565b600080858411619aab5760208411619a5757600084156199ef5760016199cb86602061a807565b6199d690600861b808565b6199e190600261b906565b6199eb919061a807565b1990505b83518116856199fe898961a81a565b619a08919061a807565b805190935082165b818114619a4257878411619a2a5787945050505050617713565b83619a348161b912565b945050828451169050619a10565b619a4c878561a81a565b945050505050617713565b838320619a64858861a807565b619a6e908761a81a565b91505b858210619aa957848220808203619a9657619a8c868461a81a565b9350505050617713565b619aa160018461a807565b925050619a71565b505b5092949350505050565b60008381868511619bc05760208511619b6f5760008515619b01576001619add87602061a807565b619ae890600861b808565b619af390600261b906565b619afd919061a807565b1990505b84518116600087619b128b8b61a81a565b619b1c919061a807565b855190915083165b828114619b6157818610619b4957619b3c8b8b61a81a565b9650505050505050617713565b85619b538161b7ee565b965050838651169050619b24565b859650505050505050617713565b508383206000905b619b81868961a807565b8211619bbe57858320808203619b9d5783945050505050617713565b619ba860018561a81a565b9350508180619bb69061b7ee565b925050619b77565b505b619bca878761a81a565b979650505050505050565b60408051808201909152600080825260208201526000619c078560000151866020015186600001518760200151619ab5565b602080870180519186019190915251909150619c23908261a807565b835284516020860151619c36919061a81a565b8103619c455760008552619c77565b83518351619c53919061a81a565b85518690619c6290839061a807565b9052508351619c71908261a81a565b60208601525b50909392505050565b60208110619cb85781518352619c9760208461a81a565b9250619ca460208361a81a565b9150619cb160208261a807565b9050619c80565b6000198115619ce7576001619cce83602061a807565b619cda9061010061b906565b619ce4919061a807565b90505b9151835183169219169190911790915250565b60606000619d0884846161e6565b8051602080830151604051939450619d229390910161b929565b60405160208183030381529060405291505092915050565b8151815160009190811115619d4d575081515b6020808501519084015160005b83811015619e065782518251808214619dd6576000196020871015619db557600184619d8789602061a807565b619d91919061a81a565b619d9c90600861b808565b619da790600261b906565b619db1919061a807565b1990505b8181168382168181039114619dd3579750615d219650505050505050565b50505b619de160208661a81a565b9450619dee60208561a81a565b93505050602081619dff919061a81a565b9050619d5a565b5084518651616894919061b981565b610b678061b9a283390190565b61063a8061c50983390190565b61106f8061cb4383390190565b6120728061dbb283390190565b6040518060e00160405280606081526020016060815260200160608152602001600015158152602001600015158152602001600015158152602001619e8c619e91565b905290565b60405180610100016040528060001515815260200160001515815260200160608152602001600080191681526020016060815260200160608152602001600015158152602001619e8c6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b81811015619f435783516001600160a01b0316835260209384019390920191600101619f1c565b509095945050505050565b60005b83811015619f69578181015183820152602001619f51565b50506000910152565b60008151808452619f8a816020860160208601619f4e565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a09a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b8181101561a080577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261a06a848651619f72565b602095860195909450929092019160010161a030565b509197505050602094850194929092019150600101619fc6565b50929695505050505050565b600081518084526020840193506020830160005b8281101561a0fa5781517fffffffff000000000000000000000000000000000000000000000000000000001686526020958601959091019060010161a0ba565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a09a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516040875261a1706040880182619f72565b905060208201519150868103602088015261a18b818361a0a6565b96505050602093840193919091019060010161a12c565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a09a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845261a204858351619f72565b9450602093840193919091019060010161a1ca565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a09a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b038151168652602081015190506040602087015261a29a604087018261a0a6565b955050602093840193919091019060010161a241565b600181811c9082168061a2c457607f821691505b602082108103617fdf577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6001600160a01b0381541682526001600160a01b03600182015416602083015260028101546040830152600060038201608060608501526000815461a3418161a2b0565b806080880152600182166000811461a360576001811461a39a5761a3ce565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831660a089015260a082151560051b890101935061a3ce565b84600052602060002060005b8381101561a3c55781548a820160a0015260019091019060200161a3a6565b890160a0019450505b50919695505050505050565b602081526000615e1a602083018461a2fd565b6001600160a01b0383168152604060208201526000617713604083018461a2fd565b60006020828403121561a42157600080fd5b81516001600160a01b0381168114615e1a57600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff881660408301528660608301526003861061a4f2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a083015261a51360c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b60006020828403121561a53f57600080fd5b81518015158114615e1a57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b601f82111561123c57806000526020600020601f840160051c8101602085101561a5a55750805b601f840160051c820191505b81811015612a54576000815560010161a5b1565b815167ffffffffffffffff81111561a5df5761a5df61a54f565b61a5f38161a5ed845461a2b0565b8461a57e565b6020601f82116001811461a627576000831561a60f5750848201515b600019600385901b1c1916600184901b178455612a54565b600084815260208120601f198516915b8281101561a657578785015182556020948501946001909201910161a637565b508482101561a6755786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b602081526000615e1a6020830184619f72565b60006020828403121561a6a957600080fd5b5051919050565b602081526000615d2160208301600581527f68656c6c6f000000000000000000000000000000000000000000000000000000602082015260400190565b60a08152600061a70060a0830187619f72565b6001600160a01b03861660208401528460408401526001600160a01b03841660608401528281036080840152619bca81600581527f68656c6c6f000000000000000000000000000000000000000000000000000000602082015260400190565b600081516060845261a7756060850182619f72565b90506001600160a01b036020840151166020850152604083015160408501528091505092915050565b60808152600061a7b1608083018761a760565b8560208401526001600160a01b03851660408401528281036060840152619bca8185619f72565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115615d2157615d2161a7d8565b80820180821115615d2157615d2161a7d8565b60a08152600061a84060a083018861a760565b6001600160a01b03871660208401528560408401526001600160a01b0385166060840152828103608084015261a8768185619f72565b98975050505050505050565b6001600160a01b03851681528360208201526001600160a01b0383166040820152608060608201526000616894608083018461a2fd565b6001600160a01b03831681526040602082015260006177136040830184619f72565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161a91381601a850160208801619f4e565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161a95081601c840160208801619f4e565b01601c01949350505050565b6040516060810167ffffffffffffffff8111828210171561a97f5761a97f61a54f565b60405290565b60008067ffffffffffffffff84111561a9a05761a9a061a54f565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561a9cf5761a9cf61a54f565b60405283815290508082840185101561a9e757600080fd5b617ae2846020830185619f4e565b600082601f83011261aa0657600080fd5b615e1a8383516020850161a985565b60006020828403121561aa2757600080fd5b815167ffffffffffffffff81111561aa3e57600080fd5b615d1d8482850161a9f5565b6000835161aa5c818460208801619f4e565b83519083019061aa70818360208801619f4e565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161aab181601a850160208801619f4e565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161aaee816033840160208801619f4e565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000615e1a6080830184619f72565b60006020828403121561ab7d57600080fd5b815167ffffffffffffffff81111561ab9457600080fd5b8201601f8101841361aba557600080fd5b615d1d8482516020840161a985565b6000855161abc6818460208a01619f4e565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161ac00816001840160208a01619f4e565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161ac3e816002840160208901619f4e565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161ac80816002840160208801619f4e565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061accb6040830184619f72565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161ad4281601f850160208701619f4e565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061adaf6040830184619f72565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061ae016040830184619f72565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161ae78816014850160208701619f4e565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061aebf6040830185619f72565b8281036020840152615e168185619f72565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161af38816001850160208701619f4e565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161af7e818460208701619f4e565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161b03181604b850160208701619f4e565b91909101604b0192915050565b600060ff821660ff810361b0545761b05461a7d8565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161b0bb816029850160208701619f4e565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000615e1a6080830184619f72565b60006020828403121561b12157600080fd5b815167ffffffffffffffff81111561b13857600080fd5b82016060818503121561b14a57600080fd5b61b15261a95c565b81518060030b811461b16357600080fd5b8152602082015167ffffffffffffffff81111561b17f57600080fd5b61b18b8682850161a9f5565b602083015250604082015167ffffffffffffffff81111561b1ab57600080fd5b61b1b78682850161a9f5565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161b223816021850160208701619f4e565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161b40f816021850160208801619f4e565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161b44c81602e840160208801619f4e565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161b0bb816029850160208701619f4e565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161b514816022850160208701619f4e565b9190910160220192915050565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161b55981600e850160208701619f4e565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161b637816018850160208801619f4e565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161b67481601c840160208801619f4e565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161b77a818460208701619f4e565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161b7e181601c850160208701619f4e565b91909101601c0192915050565b6000600019820361b8015761b80161a7d8565b5060010190565b8082028115828204841417615d2157615d2161a7d8565b6001815b600184111561b85a5780850481111561b83e5761b83e61a7d8565b600184161561b84c57908102905b60019390931c92800261b823565b935093915050565b60008261b87157506001615d21565b8161b87e57506000615d21565b816001811461b894576002811461b89e5761b8ba565b6001915050615d21565b60ff84111561b8af5761b8af61a7d8565b50506001821b615d21565b5060208310610133831016604e8410600b841016171561b8dd575081810a615d21565b61b8ea600019848461b81f565b806000190482111561b8fe5761b8fe61a7d8565b029392505050565b6000615e1a838361b862565b60008161b9215761b92161a7d8565b506000190190565b6000835161b93b818460208801619f4e565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161b975816001840160208801619f4e565b01600101949350505050565b81810360008312801583831316838312821617156190da576190da61a7d856fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea2646970667358221220c069e4cb3e16bcddc5b07d6ba4019a062fbae92d695877ad19f66fc9ac6047fd64736f6c634300081a00336080604052348015600f57600080fd5b5061061b8061001f6000396000f3fe60806040526004361061002a5760003560e01c80635bcfd61614610033578063c9028a361461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e366004610151565b610073565b34801561005f57600080fd5b5061003161006e36600461020e565b6100ee565b6060811561008a576100878284018461027f565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610375565b6100c560408a0160208b016103e1565b896040013533866040516100de96959493929190610445565b60405180910390a1505050505050565b7fd75bb509c8f32a725aac99ac5c4541060dbfb889a3aca8314d6f00395618c4c48160405161011d9190610507565b60405180910390a150565b803573ffffffffffffffffffffffffffffffffffffffff8116811461014c57600080fd5b919050565b60008060008060006080868803121561016957600080fd5b853567ffffffffffffffff81111561018057600080fd5b86016060818903121561019257600080fd5b94506101a060208701610128565b935060408601359250606086013567ffffffffffffffff8111156101c357600080fd5b8601601f810188136101d457600080fd5b803567ffffffffffffffff8111156101eb57600080fd5b8860208284010111156101fd57600080fd5b959894975092955050506020019190565b60006020828403121561022057600080fd5b813567ffffffffffffffff81111561023757600080fd5b82016080818503121561024957600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561029157600080fd5b813567ffffffffffffffff8111156102a857600080fd5b8201601f810184136102b957600080fd5b803567ffffffffffffffff8111156102d3576102d3610250565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033f5761033f610250565b60405281815282820160200186101561035757600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126103aa57600080fd5b83018035915067ffffffffffffffff8211156103c557600080fd5b6020019150368190038213156103da57600080fd5b9250929050565b6000602082840312156103f357600080fd5b61024982610128565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60a08152600061045960a08301888a6103fc565b73ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff851660608401528281036080840152835180825260005b818110156104c3576020818701810151848301820152016104a7565b5060006020828401015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011683010192505050979650505050505050565b6020815273ffffffffffffffffffffffffffffffffffffffff61052983610128565b16602082015273ffffffffffffffffffffffffffffffffffffffff61055060208401610128565b166040820152600080604084013590508060608401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261059c57600080fd5b830160208101903567ffffffffffffffff8111156105b957600080fd5b8036038213156105c857600080fd5b6080808501526105dc60a0850182846103fc565b9594505050505056fea264697066735822122097b135946b5f8ffb91b019442462dc27864bb547c0a533c3cc3e01dd4abecc7964736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea2646970667358221220eaa287ea22d82335c1d97ef661cb17f1296902daa41cca34de107966248e954364736f6c634300081a003360c060405234801561001057600080fd5b5060405161207238038061207283398101604081905261002f916101f0565b6001600160a01b038216158061004c57506001600160a01b038116155b1561006a5760405163d92e233d60e01b815260040160405180910390fd5b60066100768982610342565b5060076100838882610342565b506008805460ff191660ff881617905560808590528360028111156100aa576100aa610400565b60a08160028111156100be576100be610400565b905250600192909255600080546001600160a01b039283166001600160a01b0319909116179055600880549190921661010002610100600160a81b0319909116179055506104169350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261013357600080fd5b81516001600160401b0381111561014c5761014c61010c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561017a5761017a61010c565b60405281815283820160200185101561019257600080fd5b60005b828110156101b157602081860181015183830182015201610195565b506000918101602001919091529392505050565b8051600381106101d457600080fd5b919050565b80516001600160a01b03811681146101d457600080fd5b600080600080600080600080610100898b03121561020d57600080fd5b88516001600160401b0381111561022357600080fd5b61022f8b828c01610122565b60208b015190995090506001600160401b0381111561024d57600080fd5b6102598b828c01610122565b975050604089015160ff8116811461027057600080fd5b60608a0151909650945061028660808a016101c5565b60a08a0151909450925061029c60c08a016101d9565b91506102aa60e08a016101d9565b90509295985092959890939650565b600181811c908216806102cd57607f821691505b6020821081036102ed57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561033d57806000526020600020601f840160051c8101602085101561031a5750805b601f840160051c820191505b8181101561033a5760008155600101610326565b50505b505050565b81516001600160401b0381111561035b5761035b61010c565b61036f8161036984546102b9565b846102f3565b6020601f8211600181146103a3576000831561038b5750848201515b600019600385901b1c1916600184901b17845561033a565b600084815260208120601f198516915b828110156103d357878501518255602094850194600190920191016103b3565b50848210156103f15786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a051611c1b61045760003960006103440152600081816102f001528181610bdc01528181610ce201528181610efe01526110040152611c1b6000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c806395d89b41116100f9578063ccc7759911610097578063eddeb12311610071578063eddeb12314610461578063f2441b3214610474578063f687d12a14610494578063fc5fecd5146104a757600080fd5b8063ccc77599146103d4578063d9eeebed146103e7578063dd62ed3e1461041b57600080fd5b8063b84c8246116100d3578063b84c824614610386578063c47f00271461039b578063c7012626146103ae578063c835d7cc146103c157600080fd5b806395d89b4114610337578063a3413d031461033f578063a9059cbb1461037357600080fd5b80633ce4a5bc116101665780634d8943bb116101405780634d8943bb146102ac57806370a08231146102b557806385e1f4d0146102eb5780638b851b951461031257600080fd5b80633ce4a5bc1461024657806342966c681461028657806347e7ef241461029957600080fd5b806318160ddd1161019757806318160ddd1461021657806323b872dd1461021e578063313ce5671461023157600080fd5b806306fdde03146101be578063091d2788146101dc578063095ea7b3146101f3575b600080fd5b6101c66104ba565b6040516101d39190611648565b60405180910390f35b6101e560015481565b6040519081526020016101d3565b610206610201366004611687565b61054c565b60405190151581526020016101d3565b6005546101e5565b61020661022c3660046116b3565b610563565b60085460405160ff90911681526020016101d3565b61026173735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d3565b6102066102943660046116f4565b6105fa565b6102066102a7366004611687565b61060e565b6101e560025481565b6101e56102c336600461170d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6101e57f000000000000000000000000000000000000000000000000000000000000000081565b60085461026190610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6101c6610767565b6103667f000000000000000000000000000000000000000000000000000000000000000081565b6040516101d3919061172a565b610206610381366004611687565b610776565b610399610394366004611832565b610783565b005b6103996103a9366004611832565b6107e0565b6102066103bc366004611883565b610839565b6103996103cf36600461170d565b610988565b6103996103e236600461170d565b610a9c565b6103ef610bb0565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101d3565b6101e56104293660046118dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205490565b61039961046f3660046116f4565b610dce565b6000546102619073ffffffffffffffffffffffffffffffffffffffff1681565b6103996104a23660046116f4565b610e50565b6103ef6104b53660046116f4565b610ed2565b6060600680546104c990611915565b80601f01602080910402602001604051908101604052809291908181526020018280546104f590611915565b80156105425780601f1061051757610100808354040283529160200191610542565b820191906000526020600020905b81548152906001019060200180831161052557829003601f168201915b5050505050905090565b60006105593384846110ee565b5060015b92915050565b60006105708484846111f7565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460209081526040808320338452909152902054828110156105db576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105ef85336105ea8685611997565b6110ee565b506001949350505050565b600061060633836113b2565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab1480159061064c575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156106755750600854610100900473ffffffffffffffffffffffffffffffffffffffff163314155b156106ac576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106b683836114f4565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526107569186906119aa565b60405180910390a250600192915050565b6060600780546104c990611915565b60006105593384846111f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab146107d0576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60076107dc8282611a1b565b5050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461082d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60066107dc8282611a1b565b6000806000610846610bb0565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156108d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fc9190611b34565b610932576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61093c33856113b2565b60025460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161097591899189918791611b56565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146109d5576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a22576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610ae9576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610b36576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c679190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610cb6576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d699190611ba2565b905080600003610da5576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060025460015483610db89190611bbb565b610dc29190611bd2565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e1b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610a91565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e9d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610f65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f899190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610fd8576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015611067573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108b9190611ba2565b9050806000036110c7576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000906110d78784611bbb565b6110e19190611bd2565b9296929550919350505050565b73ffffffffffffffffffffffffffffffffffffffff831661113b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611188576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611244576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611291576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040902054818110156112f1576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112fb8282611997565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260036020526040808220939093559085168152908120805484929061133e908490611bd2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113a491815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff82166113ff576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260409020548181101561145f576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114698282611997565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260036020526040812091909155600580548492906114a4908490611997565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016111ea565b73ffffffffffffffffffffffffffffffffffffffff8216611541576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008282546115539190611bd2565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805483929061158d908490611bd2565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561160a576020818501810151868301820152016115ee565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061165b60208301846115e4565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461168457600080fd5b50565b6000806040838503121561169a57600080fd5b82356116a581611662565b946020939093013593505050565b6000806000606084860312156116c857600080fd5b83356116d381611662565b925060208401356116e381611662565b929592945050506040919091013590565b60006020828403121561170657600080fd5b5035919050565b60006020828403121561171f57600080fd5b813561165b81611662565b6020810160038310611765577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff8411156117b5576117b561176b565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff821117156118025761180261176b565b60405283815290508082840185101561181a57600080fd5b83836020830137600060208583010152509392505050565b60006020828403121561184457600080fd5b813567ffffffffffffffff81111561185b57600080fd5b8201601f8101841361186c57600080fd5b61187b8482356020840161179a565b949350505050565b6000806040838503121561189657600080fd5b823567ffffffffffffffff8111156118ad57600080fd5b8301601f810185136118be57600080fd5b6118cd8582356020840161179a565b95602094909401359450505050565b600080604083850312156118ef57600080fd5b82356118fa81611662565b9150602083013561190a81611662565b809150509250929050565b600181811c9082168061192957607f821691505b602082108103611962577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561055d5761055d611968565b6040815260006119bd60408301856115e4565b90508260208301529392505050565b601f821115611a1657806000526020600020601f840160051c810160208510156119f35750805b601f840160051c820191505b81811015611a1357600081556001016119ff565b50505b505050565b815167ffffffffffffffff811115611a3557611a3561176b565b611a4981611a438454611915565b846119cc565b6020601f821160018114611a9b5760008315611a655750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611a13565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015611ae95787850151825560209485019460019092019101611ac9565b5084821015611b2557868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b600060208284031215611b4657600080fd5b8151801515811461165b57600080fd5b608081526000611b6960808301876115e4565b6020830195909552506040810192909252606090910152919050565b600060208284031215611b9757600080fd5b815161165b81611662565b600060208284031215611bb457600080fd5b5051919050565b808202811582820484141761055d5761055d611968565b8082018082111561055d5761055d61196856fea26469706673582212202a06c5d72036d88c206ff2bfdd016b3ce8555bc0090e8bb5487bc61ea043732b64736f6c634300081a0033a2646970667358221220bc22d0c462392f03ff5c595915473cbfd4e3d730515865aa96dde288dd9bd0be64736f6c634300081a0033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061fc598061003c6000396000f3fe608060405234801561001057600080fd5b506004361061034c5760003560e01c806385226c81116101bd578063c8814d2e116100f9578063eab7674e116100a2578063ef2b53941161007c578063ef2b539414610542578063f1d98f1b1461054a578063fa7626d414610552578063fb339a1c1461055f57600080fd5b8063eab7674e1461052a578063eb78bd7d14610532578063ec294d9f1461053a57600080fd5b8063e09bc659116100d3578063e09bc659146104e5578063e20c9f71146104ed578063e63ab1e9146104f557600080fd5b8063c8814d2e146104cd578063ca26929c146104d5578063cf2c3d1d146104dd57600080fd5b8063996b767511610166578063b5508aa911610140578063b5508aa9146104a5578063b936be8c14610443578063ba414fa6146104ad578063c35cb5e4146104c557600080fd5b8063996b76751461048d5780639c9acd5d14610495578063b0464fdc1461049d57600080fd5b8063916a17c611610197578063916a17c61461047057806396d9d8761461048557806397f7661f1461044357600080fd5b806385226c811461044b578063884660a314610460578063890a2d671461046857600080fd5b80633e5e3c231161028c5780635cec7db5116102355780636efa04b51161020f5780636efa04b51461042b5780637cec29b0146104335780637f924c4e1461043b578063828d267c1461044357600080fd5b80635cec7db5146104065780636163f8ef1461040e57806366d9a9a01461041657600080fd5b806351336fb01161026657806351336fb0146103f657806358c9987f146103fe5780635b4c90e1146103a157600080fd5b80633e5e3c23146103de5780633f7286f4146103e657806348f4fd07146103ee57600080fd5b806327820625116102f95780632ade3880116102d35780632ade3880146103b1578063339bd828146103c65780633626c616146103ce5780633ab5b199146103d657600080fd5b806327820625146103995780632948df41146103a15780632acb21b4146103a957600080fd5b80631c785a141161032a5780631c785a141461036b5780631ed7831c146103735780632468bc0f1461039157600080fd5b8063084fafab146103515780630a9254e41461035b57806314b7a6da14610363575b600080fd5b610359610567565b005b61035961073d565b610359611241565b610359611391565b61037b611ca8565b6040516103889190619f02565b60405180910390f35b610359611d0a565b6103596121d5565b61035961229d565b610359612486565b6103b9612645565b6040516103889190619f9e565b610359612787565b6103596128d3565b610359612a5b565b61037b612c0c565b61037b612c6c565b610359612ccc565b610359612e17565b610359612f62565b610359613117565b610359613305565b61041e613453565b604051610388919061a104565b6103596135d5565b610359613979565b610359613b64565b610359613b9d565b610453613d49565b604051610388919061a1a2565b610359613e19565b6103596140f8565b6104786142b3565b604051610388919061a219565b6103596143ae565b610359614501565b610359614655565b6104786147a5565b6104536148a0565b6104b5614970565b6040519015158152602001610388565b610359614a44565b610359614bff565b610359614d41565b610359614fc4565b610359615182565b61037b61533b565b61051c7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b604051908152602001610388565b61035961539b565b6103596154e9565b6103596156a7565b610359615856565b610359615a07565b601f546104b59060ff1681565b610359615b55565b602480546040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190529281018390526044810183905260648101929092526001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156105f657600080fd5b505af115801561060a573d6000803e3d6000fd5b505050507fd75bb509c8f32a725aac99ac5c4541060dbfb889a3aca8314d6f00395618c4c4602c60405161063e919061a3da565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b1580156106a057600080fd5b505af11580156106b4573d6000803e3d6000fd5b50506020546024546040517f184b07930000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063184b079393506107099290911690602c9060040161a3ed565b600060405180830381600087803b15801561072357600080fd5b505af1158015610737573d6000803e3d6000fd5b50505050565b602580547fffffffffffffffffffffffff000000000000000000000000000000000000000090811630179091556026805490911661123417905560405161078390619e15565b604051809103906000f08015801561079f573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600f81527f476174657761795a45564d2e736f6c000000000000000000000000000000000060208201526025549151602481019390935292166044820152610883919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc95500000000000000000000000000000000000000000000000000000000179052615d08565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b039384168102919091179182905560208054919092049092167fffffffffffffffffffffffff000000000000000000000000000000000000000090921682178155604080517f2722feee0000000000000000000000000000000000000000000000000000000081529051632722feee926004808401939192918290030181865afa158015610945573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610969919061a40f565b602780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516109ad90619e22565b604051809103906000f0801580156109c9573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161781556027546040517f06447d5600000000000000000000000000000000000000000000000000000000815292166004830152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d569101600060405180830381600087803b158015610a6557600080fd5b505af1158015610a79573d6000803e3d6000fd5b505050506000806000604051610a8e90619e2f565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610aca573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602054604051601293600193849360009391921690610b2090619e3c565b610b2f9695949392919061a438565b604051809103906000f080158015610b4b573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556023546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b158015610be257600080fd5b505af1158015610bf6573d6000803e3d6000fd5b50506023546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b158015610c6057600080fd5b505af1158015610c74573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610cf457600080fd5b505af1158015610d08573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610d5d57600080fd5b505af1158015610d71573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610de5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e09919061a52d565b506021546025546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116906347e7ef24906044016020604051808303816000875af1158015610e7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9e919061a52d565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610efd57600080fd5b505af1158015610f11573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610f8757600080fd5b505af1158015610f9b573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116925063095ea7b391506044016020604051808303816000875af115801561100f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611033919061a52d565b50602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b15801561108557600080fd5b505af1158015611099573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af115801561110d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611131919061a52d565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561119057600080fd5b505af11580156111a4573d6000803e3d6000fd5b5050604080516080810182526025546001600160a01b0390811682526000602080840182815260018587019081528651928301909652918152606084018190528351602c80549185167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161781559251602d8054919095169116179092559251602e55909350909150602f9061123c908261a5c5565b505050565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561129a57600080fd5b505af11580156112ae573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561131e57600080fd5b505af1158015611332573d6000803e3d6000fd5b50506020546021546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260016024820152600060448201529116925063f45346dc9150606401610709565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156113ea57600080fd5b505af11580156113fe573d6000803e3d6000fd5b5050602754604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506114e9919060040161a684565b600060405180830381600087803b15801561150357600080fd5b505af1158015611517573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561156b57600080fd5b505af115801561157f573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156115dc57600080fd5b505af11580156115f0573d6000803e3d6000fd5b5050602754604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506116db919060040161a684565b600060405180830381600087803b1580156116f557600080fd5b505af1158015611709573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561175d57600080fd5b505af1158015611771573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156117ce57600080fd5b505af11580156117e2573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561183657600080fd5b505af115801561184a573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd93c066500000000000000000000000000000000000000000000000000000000600482015260019250737109709ecfa91a80626ff3989d68f67f5b1dd12d915063c31eb0e090602401600060405180830381600087803b1580156118bd57600080fd5b505af11580156118d1573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561192e57600080fd5b505af1158015611942573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810187905290821660448201529116925063f45346dc9150606401600060405180830381600087803b1580156119ba57600080fd5b505af11580156119ce573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015611a2b57600080fd5b505af1158015611a3f573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611a9357600080fd5b505af1158015611aa7573d6000803e3d6000fd5b50506021546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a08231906024015b602060405180830381865afa158015611afb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b1f919061a697565b9050611b2c600082615d27565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611b8557600080fd5b505af1158015611b99573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810188905290821660448201529116925063f45346dc9150606401600060405180830381600087803b158015611c1157600080fd5b505af1158015611c25573d6000803e3d6000fd5b50506021546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611c78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9c919061a697565b905061123c8382615d27565b60606016805480602002602001604051908101604052809291908181526020018280548015611d0057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611ce2575b5050505050905090565b6022546027546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611d5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d7f919061a697565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015611dd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df5919061a697565b6024546040519192506001600160a01b03163190600090611e189060200161a6b0565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611f0657600080fd5b505af1158015611f1a573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e9450611f7593506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054611fa5936001600160a01b03928316928c92169061a6ed565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561200657600080fd5b505af115801561201a573d6000803e3d6000fd5b50506020546024546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a9593506120719286928c92911690889060040161a79e565b600060405180830381600087803b15801561208b57600080fd5b505af115801561209f573d6000803e3d6000fd5b50506022546027546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156120f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612116919061a697565b905061212b612125888861a807565b82615d27565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801561217c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121a0919061a697565b90506121ac8682615d27565b6121cb6121b9898761a81a565b6024546001600160a01b031631615d27565b5050505050505050565b604051630618f58760e51b81527f42c0407e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561224157600080fd5b505af1158015612255573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401610686565b60006040516020016122ae9061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b15801561235c57600080fd5b505af1158015612370573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156123e057600080fd5b505af11580156123f4573d6000803e3d6000fd5b50506020546024546040517fbcf7f32b0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063bcf7f32b935061245092869260009260019290911690899060040161a82d565b600060405180830381600087803b15801561246a57600080fd5b505af115801561247e573d6000803e3d6000fd5b505050505050565b60006040516020016124979061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f42c0407e0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561256157600080fd5b505af1158015612575573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015b600060405180830381600087803b1580156125d357600080fd5b505af11580156125e7573d6000803e3d6000fd5b50506020546021546024546040517fbcf7f32b0000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063bcf7f32b9450612450938793811692600192911690899060040161a82d565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561277e57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156127675783829060005260206000200180546126da9061a2b0565b80601f01602080910402602001604051908101604052809291908181526020018280546127069061a2b0565b80156127535780601f1061272857610100808354040283529160200191612753565b820191906000526020600020905b81548152906001019060200180831161273657829003601f168201915b5050505050815260200190600101906126bb565b505050508152505081526020019060010190612669565b50505050905090565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156127e057600080fd5b505af11580156127f4573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561286457600080fd5b505af1158015612878573d6000803e3d6000fd5b50506020546021546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450639d4ba46593506107099290911690600190600090602c9060040161a882565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561292f57600080fd5b505af1158015612943573d6000803e3d6000fd5b5050604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156129b357600080fd5b505af11580156129c7573d6000803e3d6000fd5b50506020546021546027546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810187905290821660448201529116925063f45346dc91506064015b600060405180830381600087803b158015612a4057600080fd5b505af1158015612a54573d6000803e3d6000fd5b5050505050565b6000604051602001612a6c9061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b158015612b1a57600080fd5b505af1158015612b2e573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015612b9e57600080fd5b505af1158015612bb2573d6000803e3d6000fd5b50506020546021546040517fbcf7f32b0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063bcf7f32b93506124509286921690600190600090899060040161a82d565b60606018805480602002602001604051908101604052809291908181526020018280548015611d00576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611ce2575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015611d00576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611ce2575050505050905090565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612d2557600080fd5b505af1158015612d39573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015612da957600080fd5b505af1158015612dbd573d6000803e3d6000fd5b50506020546024546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450639d4ba465935061070992600092600192911690602c9060040161a882565b604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015612e8357600080fd5b505af1158015612e97573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015612ef457600080fd5b505af1158015612f08573d6000803e3d6000fd5b50506020546021546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450639d4ba465935061070992909116906001908590602c9060040161a882565b6000604051602001612f739061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b15801561302157600080fd5b505af1158015613035573d6000803e3d6000fd5b5050604051630618f58760e51b81527f5d67094f000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156130a557600080fd5b505af11580156130b9573d6000803e3d6000fd5b50506020546021546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca379450612450938793811692600092911690899060040161a82d565b60405160019060009061312c9060200161a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156131f657600080fd5b505af115801561320a573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561326757600080fd5b505af115801561327b573d6000803e3d6000fd5b50506020546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0390911692506321501a9591506132ce90849087908590889060040161a79e565b600060405180830381600087803b1580156132e857600080fd5b505af11580156132fc573d6000803e3d6000fd5b50505050505050565b604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561337157600080fd5b505af1158015613385573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156133e257600080fd5b505af11580156133f6573d6000803e3d6000fd5b50506020546021546027546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550639d4ba465945061070993928316926001921690602c9060040161a882565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561277e57838290600052602060002090600202016040518060400160405290816000820180546134aa9061a2b0565b80601f01602080910402602001604051908101604052809291908181526020018280546134d69061a2b0565b80156135235780601f106134f857610100808354040283529160200191613523565b820191906000526020600020905b81548152906001019060200180831161350657829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156135bd57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161356a5790505b50505050508152505081526020019060010190613477565b602154602480546040516370a0823160e01b81526001600160a01b03918216600482015260009391909116916370a082319101602060405180830381865afa158015613625573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613649919061a697565b9050613656600082615d27565b60006040516020016136679061a6b0565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561375557600080fd5b505af1158015613769573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e94506137c493506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526027546020546137f5936001600160a01b0392831692600192169061a6ed565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561385657600080fd5b505af115801561386a573d6000803e3d6000fd5b50506020546021546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca3794506138c8938793811692600192911690899060040161a82d565b600060405180830381600087803b1580156138e257600080fd5b505af11580156138f6573d6000803e3d6000fd5b5050602154602480546040516370a0823160e01b81526001600160a01b03918216600482015260009550921692506370a082319101602060405180830381865afa158015613948573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061396c919061a697565b9050610737600182615d27565b600060405160200161398a9061a6b0565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015613a7857600080fd5b505af1158015613a8c573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e9450613ae793506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054613b18936001600160a01b0392831692600192169061a6ed565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024016125b9565b6021546026546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401611ade565b6000604051602001613bae9061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b158015613c5c57600080fd5b505af1158015613c70573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015613ce057600080fd5b505af1158015613cf4573d6000803e3d6000fd5b50506020546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0390911692506321501a959150612450908490600190600090889060040161a79e565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101561277e578382906000526020600020018054613d8c9061a2b0565b80601f0160208091040260200160405190810160405280929190818152602001828054613db89061a2b0565b8015613e055780601f10613dda57610100808354040283529160200191613e05565b820191906000526020600020905b815481529060010190602001808311613de857829003601f168201915b505050505081526020019060010190613d6d565b602154602480546040516370a0823160e01b81526001600160a01b03918216600482015260009391909116916370a082319101602060405180830381865afa158015613e69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e8d919061a697565b9050613e9a600082615d27565b602480546040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190529281018390526044810183905260648101929092526001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015613f2957600080fd5b505af1158015613f3d573d6000803e3d6000fd5b505050507fd75bb509c8f32a725aac99ac5c4541060dbfb889a3aca8314d6f00395618c4c4602c604051613f71919061a3da565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613fd257600080fd5b505af1158015613fe6573d6000803e3d6000fd5b50506020546021546024546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550639d4ba465945061404393928316926001921690602c9060040161a882565b600060405180830381600087803b15801561405d57600080fd5b505af1158015614071573d6000803e3d6000fd5b5050602154602480546040516370a0823160e01b81526001600160a01b03918216600482015260009550921692506370a082319101602060405180830381865afa1580156140c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140e7919061a697565b90506140f4600182615d27565b5050565b60405160019060009061410d9060200161a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156141d757600080fd5b505af11580156141eb573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561424857600080fd5b505af115801561425c573d6000803e3d6000fd5b50506020546027546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a9593506132ce9286928992911690889060040161a79e565b6060601d805480602002602001604051908101604052809291908181526020016000905b8282101561277e5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561439657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116143435790505b505050505081525050815260200190600101906142d7565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561440a57600080fd5b505af115801561441e573d6000803e3d6000fd5b5050604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561448e57600080fd5b505af11580156144a2573d6000803e3d6000fd5b50506020546021546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101869052911660448201819052925063f45346dc9150606401612a26565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561455a57600080fd5b505af115801561456e573d6000803e3d6000fd5b5050604051630618f58760e51b81527f5d67094f000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156145de57600080fd5b505af11580156145f2573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526000602482015290821660448201529116925063f45346dc9150606401610709565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156146ae57600080fd5b505af11580156146c2573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561473257600080fd5b505af1158015614746573d6000803e3d6000fd5b50506020546026546040517ff45346dc00000000000000000000000000000000000000000000000000000000815260006004820152600160248201526001600160a01b0391821660448201529116925063f45346dc9150606401610709565b6060601c805480602002602001604051908101604052809291908181526020016000905b8282101561277e5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561488857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116148355790505b505050505081525050815260200190600101906147c9565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101561277e5783829060005260206000200180546148e39061a2b0565b80601f016020809104026020016040519081016040528092919081815260200182805461490f9061a2b0565b801561495c5780601f106149315761010080835404028352916020019161495c565b820191906000526020600020905b81548152906001019060200180831161493f57829003601f168201915b5050505050815260200190600101906148c4565b60085460009060ff1615614988575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015614a19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a3d919061a697565b1415905090565b604051600190600090614a599060200161a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f42c0407e0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b158015614b2357600080fd5b505af1158015614b37573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015614b9457600080fd5b505af1158015614ba8573d6000803e3d6000fd5b50506020546024546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a9593506132ce9286928992911690889060040161a79e565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614c5857600080fd5b505af1158015614c6c573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015614cdc57600080fd5b505af1158015614cf0573d6000803e3d6000fd5b50506020546040517f184b07930000000000000000000000000000000000000000000000000000000081526001600160a01b03909116925063184b0793915061070990600090602c9060040161a3ed565b6021546026546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015614d92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614db6919061a697565b9050614dc3600082615d27565b60255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614e1c57600080fd5b505af1158015614e30573d6000803e3d6000fd5b5050604051630618f58760e51b81527f42c0407e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015614ea057600080fd5b505af1158015614eb4573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810188905290821660448201529116925063f45346dc9150606401600060405180830381600087803b158015614f2c57600080fd5b505af1158015614f40573d6000803e3d6000fd5b50506021546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015614f93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614fb7919061a697565b905061123c600082615d27565b6000604051602001614fd59061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f42c0407e0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561509f57600080fd5b505af11580156150b3573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561511057600080fd5b505af1158015615124573d6000803e3d6000fd5b50506020546021546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca379450612450938793811692600192911690899060040161a82d565b60006040516020016151939061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561525d57600080fd5b505af1158015615271573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156152ce57600080fd5b505af11580156152e2573d6000803e3d6000fd5b50506020546021546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063c39aca37935061245092869216906001908690899060040161a82d565b60606015805480602002602001604051908101604052809291908181526020018280548015611d00576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611ce2575050505050905090565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156153f457600080fd5b505af1158015615408573d6000803e3d6000fd5b5050604051630618f58760e51b81527f5d67094f000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561547857600080fd5b505af115801561548c573d6000803e3d6000fd5b50506020546021546024546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550639d4ba465945061070993928316926000921690602c9060040161a882565b60006040516020016154fa9061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156155c457600080fd5b505af11580156155d8573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561563557600080fd5b505af1158015615649573d6000803e3d6000fd5b50506020546021546027546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca379450612450938793811692600192911690899060040161a82d565b60006040516020016156b89061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b15801561576657600080fd5b505af115801561577a573d6000803e3d6000fd5b5050604051630618f58760e51b81527f19c08f49000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156157ea57600080fd5b505af11580156157fe573d6000803e3d6000fd5b50506020546021546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a959350612450928692600092911690889060040161a79e565b60006040516020016158679061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b15801561591557600080fd5b505af1158015615929573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561599957600080fd5b505af11580156159ad573d6000803e3d6000fd5b50506020546021546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063c39aca3793506124509286921690600190600090899060040161a82d565b604051630618f58760e51b81527f42c0407e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015615a7357600080fd5b505af1158015615a87573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015615ae457600080fd5b505af1158015615af8573d6000803e3d6000fd5b50506020546021546024546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550639d4ba465945061070993928316926001921690602c9060040161a882565b6000604051602001615b669061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b158015615c1457600080fd5b505af1158015615c28573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015615c9857600080fd5b505af1158015615cac573d6000803e3d6000fd5b50506020546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063c39aca37935061245092869260009260019290911690899060040161a82d565b6000615d12619e49565b615d1d848483615da6565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b158015615d9257600080fd5b505afa15801561247e573d6000803e3d6000fd5b600080615db38584615e21565b9050615e166040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001615e0192919061a8b9565b60405160208183030381529060405285615e2d565b9150505b9392505050565b6000615e1a8383615e5b565b60c08101515160009015615e5157615e4a84848460c00151615e76565b9050615e1a565b615e4a848461601c565b6000615e678383616107565b615e1a83836020015184615e2d565b600080615e81616113565b90506000615e8f86836161e6565b90506000615ea6826060015183602001518561668c565b90506000615eb68383898961689e565b90506000615ec38261771b565b602081015181519192509060030b15615f3657898260400151604051602001615eed92919061a8db565b60408051601f19818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252615f2d9160040161a684565b60405180910390fd5b6000615f796040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a2000000000000000000000008152508360016178ea565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90615fcc90849060040161a684565b602060405180830381865afa158015615fe9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061600d919061a40f565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc9259061607190879060040161a684565b600060405180830381865afa15801561608e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526160b6919081019061aa15565b905060006160e482856040516020016160d092919061aa4a565b604051602081830303815290604052617aea565b90506001600160a01b038116615d1d578484604051602001615eed92919061aa79565b6140f482826000617afd565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c9061619a90849060040161ab24565b600060405180830381865afa1580156161b7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526161df919081019061ab6b565b9250505090565b6162186040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d90506162636040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b61626c85617c00565b6020820152600061627c86617fe5565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa1580156162be573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526162e6919081019061ab6b565b86838560200151604051602001616300949392919061abb4565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb119061635890859060040161a684565b600060405180830381865afa158015616375573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261639d919081019061ab6b565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f6906163e590849060040161acb8565b602060405180830381865afa158015616402573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616426919061a52d565b61643b5781604051602001615eed919061ad0a565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061648090849060040161ad9c565b600060405180830381865afa15801561649d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526164c5919081019061ab6b565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f69061650c90849060040161adee565b602060405180830381865afa158015616529573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061654d919061a52d565b156165e2576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061659790849060040161adee565b600060405180830381865afa1580156165b4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526165dc919081019061ab6b565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001616607919061ae40565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161663392919061aeac565b600060405180830381865afa158015616650573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616678919081019061ab6b565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816166a85790505090506040518060400160405280600481526020017f6772657000000000000000000000000000000000000000000000000000000000815250816000815181106167085761670861aed1565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061675c5761675c61aed1565b602002602001018190525084604051602001616778919061af00565b6040516020818303038152906040528160028151811061679a5761679a61aed1565b6020026020010181905250826040516020016167b6919061af6c565b604051602081830303815290604052816003815181106167d8576167d861aed1565b602002602001018190525060006167ee8261771b565b602080820151604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000818501908152825180840184526000808252908601528251808401909352905182529281019290925291925061687f9060408051808201825260008082526020918201528151808301909252845182528085019082015290618268565b6168945785604051602001615eed919061afad565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d90156168ee565b511590565b616a62578260200151156169aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401615f2d565b8260c0015115616a62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401615f2d565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081616a7b57905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616ad69061b03e565b935060ff1681518110616aeb57616aeb61aed1565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001616b3c919061b05d565b604051602081830303815290604052828280616b579061b03e565b935060ff1681518110616b6c57616b6c61aed1565b60200260200101819052506040518060400160405280600681526020017f6465706c6f790000000000000000000000000000000000000000000000000000815250828280616bb99061b03e565b935060ff1681518110616bce57616bce61aed1565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d65000000000000000000000000000000000000815250828280616c1b9061b03e565b935060ff1681518110616c3057616c3061aed1565b60200260200101819052508760200151828280616c4c9061b03e565b935060ff1681518110616c6157616c6161aed1565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e747261637450617468000000000000000000000000000000000000815250828280616cae9061b03e565b935060ff1681518110616cc357616cc361aed1565b602090810291909101015287518282616cdb8161b03e565b935060ff1681518110616cf057616cf061aed1565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280616d3d9061b03e565b935060ff1681518110616d5257616d5261aed1565b6020026020010181905250616d66466182c9565b8282616d718161b03e565b935060ff1681518110616d8657616d8661aed1565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280616dd39061b03e565b935060ff1681518110616de857616de861aed1565b602002602001018190525086828280616e009061b03e565b935060ff1681518110616e1557616e1561aed1565b6020908102919091010152855115616f3c5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f6465000000000000000000000060208201528282616e668161b03e565b935060ff1681518110616e7b57616e7b61aed1565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90616ecb90899060040161a684565b600060405180830381865afa158015616ee8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616f10919081019061ab6b565b8282616f1b8161b03e565b935060ff1681518110616f3057616f3061aed1565b60200260200101819052505b84602001511561700c5760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282616f858161b03e565b935060ff1681518110616f9a57616f9a61aed1565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280616fe79061b03e565b935060ff1681518110616ffc57616ffc61aed1565b60200260200101819052506171d3565b6170446168e98660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6170d75760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826170878161b03e565b935060ff168151811061709c5761709c61aed1565b60200260200101819052508460a001516040516020016170bc919061af00565b604051602081830303815290604052828280616fe79061b03e565b8460c0015115801561711a57506040808901518151808301835260008082526020918201528251808401909352815183529081019082015261711890511590565b155b156171d35760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828261715e8161b03e565b935060ff16815181106171735761717361aed1565b602002602001018190525061718788618369565b604051602001617197919061af00565b6040516020818303038152906040528282806171b29061b03e565b935060ff16815181106171c7576171c761aed1565b60200260200101819052505b6040808601518151808301835260008082526020918201528251808401909352815183529081019082015261720790511590565b61729c5760408051808201909152600b81527f2d2d72656c6179657249640000000000000000000000000000000000000000006020820152828261724a8161b03e565b935060ff168151811061725f5761725f61aed1565b6020026020010181905250846040015182828061727b9061b03e565b935060ff16815181106172905761729061aed1565b60200260200101819052505b6060850151156173bd5760408051808201909152600681527f2d2d73616c740000000000000000000000000000000000000000000000000000602082015282826172e58161b03e565b935060ff16815181106172fa576172fa61aed1565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015617369573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617391919081019061ab6b565b828261739c8161b03e565b935060ff16815181106173b1576173b161aed1565b60200260200101819052505b60e085015151156174645760408051808201909152600a81527f2d2d6761734c696d697400000000000000000000000000000000000000000000602082015282826174078161b03e565b935060ff168151811061741c5761741c61aed1565b60200260200101819052506174388560e00151600001516182c9565b82826174438161b03e565b935060ff16815181106174585761745861aed1565b60200260200101819052505b60e0850151602001511561750e5760408051808201909152600a81527f2d2d676173507269636500000000000000000000000000000000000000000000602082015282826174b18161b03e565b935060ff16815181106174c6576174c661aed1565b60200260200101819052506174e28560e00151602001516182c9565b82826174ed8161b03e565b935060ff16815181106175025761750261aed1565b60200260200101819052505b60e085015160400151156175b85760408051808201909152600e81527f2d2d6d61784665655065724761730000000000000000000000000000000000006020820152828261755b8161b03e565b935060ff16815181106175705761757061aed1565b602002602001018190525061758c8560e00151604001516182c9565b82826175978161b03e565b935060ff16815181106175ac576175ac61aed1565b60200260200101819052505b60e085015160600151156176625760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826176058161b03e565b935060ff168151811061761a5761761a61aed1565b60200260200101819052506176368560e00151606001516182c9565b82826176418161b03e565b935060ff16815181106176565761765661aed1565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156176805761768061a54f565b6040519080825280602002602001820160405280156176b357816020015b606081526020019060019003908161769e5790505b50905060005b8260ff168160ff16101561770c57838160ff16815181106176dc576176dc61aed1565b6020026020010151828260ff16815181106176f9576176f961aed1565b60209081029190910101526001016176b9565b5093505050505b949350505050565b6177426040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916177c89186910161b0c8565b600060405180830381865afa1580156177e5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261780d919081019061ab6b565b9050600061781b8683618e58565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161784b919061a1a2565b6000604051808303816000875af115801561786a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617892919081019061b10f565b805190915060030b158015906178ab5750602081015151155b80156178ba5750604081015151155b1561689457816000815181106178d2576178d261aed1565b6020026020010151604051602001615eed919061b1c5565b6060600061791f8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506179569082905b90618fad565b15617ab35760006179d3826179cd846179c76179998a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90618fd4565b90619036565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150617a37908290618fad565b15617aa157604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617a9e905b82906190bb565b90505b617aaa816190e1565b92505050615e1a565b8215617acc578484604051602001615eed92919061b3b1565b5050604080516020810190915260008152615e1a565b509392505050565b6000808251602084016000f09392505050565b8160a0015115617b0c57505050565b6000617b1984848461914a565b90506000617b268261771b565b602081015181519192509060030b158015617bc25750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617bc290604080518082018252600080825260209182015281518083019092528451825280850190820152617950565b15617bcf57505050505050565b60408201515115617bef578160400151604051602001615eed919061b458565b80604051602001615eed919061b4b6565b60606000617c358360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150617c9a905b8290618268565b15617d0957604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615e1a90617d049083906196e5565b6190e1565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617d6b905b829061976f565b600103617e3857604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617dd190617a97565b50604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615e1a90617d04905b83906190bb565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617e9790617c93565b15617fce57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290617eff908390619809565b905060008160018351617f12919061a807565b81518110617f2257617f2261aed1565b60200260200101519050617fc5617d04617f986040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528551825280860190820152906196e5565b95945050505050565b82604051602001615eed919061b521565b50919050565b6060600061801a8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061807c90617c93565b1561808a57615e1a816190e1565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526180e990617d64565b60010361815357604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615e1a90617d0490617e31565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526181b290617c93565b15617fce57604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061821a908390619809565b9050600181511115618256578060028251618235919061a807565b815181106182455761824561aed1565b602002602001015192505050919050565b5082604051602001615eed919061b521565b80518251600091111561827d57506000615d21565b815183516020850151600092916182939161a81a565b61829d919061a807565b9050826020015181036182b4576001915050615d21565b82516020840151819020912014905092915050565b606060006182d6836198ae565b600101905060008167ffffffffffffffff8111156182f6576182f661a54f565b6040519080825280601f01601f191660200182016040528015618320576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461832a57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e53454400000000000000000000000000000000000000000000818401908152855180870187528381528401929092528451808601909552518452908301526060916183f5905b8290619990565b1561843557505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618494906183ee565b156184d457505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618533906183ee565b1561857357505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526185d2906183ee565b806186375750604080518082018252601081527f47504c2d322e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618637906183ee565b1561867757505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526186d6906183ee565b8061873b5750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261873b906183ee565b1561877b57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526187da906183ee565b8061883f5750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261883f906183ee565b1561887f57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526188de906183ee565b806189435750604080518082018252601181527f4c47504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618943906183ee565b1561898357505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526189e2906183ee565b15618a2257505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618a81906183ee565b15618ac157505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618b20906183ee565b15618b6057505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618bbf906183ee565b15618bff57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e300000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618c5e906183ee565b15618c9e57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618cfd906183ee565b80618d625750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618d62906183ee565b15618da257505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e3100000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618e01906183ee565b15618e4157505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151615eed929060200161b5ff565b60608060005b8451811015618ee35781858281518110618e7a57618e7a61aed1565b6020026020010151604051602001618e9392919061aa4a565b604051602081830303815290604052915060018551618eb2919061a807565b8114618edb5781604051602001618ec9919061b768565b60405160208183030381529060405291505b600101618e5e565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081618efc5790505090508381600081518110618f2757618f2761aed1565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110618f7b57618f7b61aed1565b60200260200101819052508181600281518110618f9a57618f9a61aed1565b6020908102919091010152949350505050565b6020808301518351835192840151600093618fcb92918491906199a4565b14159392505050565b604080518082019091526000808252602082015260006190068460000151856020015185600001518660200151619ab5565b9050836020015181619018919061a807565b8451859061902790839061a807565b90525060208401525090919050565b604080518082019091526000808252602082015281518351101561905b575081615d21565b60208083015190840151600191146190825750815160208481015190840151829020919020145b80156190b35782518451859061909990839061a807565b90525082516020850180516190af90839061a81a565b9052505b509192915050565b60408051808201909152600080825260208201526190da838383619bd5565b5092915050565b60606000826000015167ffffffffffffffff8111156191025761910261a54f565b6040519080825280601f01601f19166020018201604052801561912c576020820181803683370190505b50905060006020820190506190da8185602001518660000151619c80565b60606000619156616113565b6040805160ff808252612000820190925291925060009190816020015b606081526020019060019003908161917357905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806191ce9061b03e565b935060ff16815181106191e3576191e361aed1565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001619234919061b7a9565b60405160208183030381529060405282828061924f9061b03e565b935060ff16815181106192645761926461aed1565b60200260200101819052506040518060400160405280600881526020017f76616c69646174650000000000000000000000000000000000000000000000008152508282806192b19061b03e565b935060ff16815181106192c6576192c661aed1565b6020026020010181905250826040516020016192e2919061af6c565b6040516020818303038152906040528282806192fd9061b03e565b935060ff16815181106193125761931261aed1565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e74726163740000000000000000000000000000000000000000000081525082828061935f9061b03e565b935060ff16815181106193745761937461aed1565b60200260200101819052506193898784619cfa565b82826193948161b03e565b935060ff16815181106193a9576193a961aed1565b6020908102919091010152855151156194555760408051808201909152600b81527f2d2d7265666572656e6365000000000000000000000000000000000000000000602082015282826193fb8161b03e565b935060ff16815181106194105761941061aed1565b6020026020010181905250619429866000015184619cfa565b82826194348161b03e565b935060ff16815181106194495761944961aed1565b60200260200101819052505b8560800151156194c35760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261949e8161b03e565b935060ff16815181106194b3576194b361aed1565b6020026020010181905250619529565b84156195295760408051808201909152601281527f2d2d726571756972655265666572656e63650000000000000000000000000000602082015282826195088161b03e565b935060ff168151811061951d5761951d61aed1565b60200260200101819052505b604086015151156195c55760408051808201909152600d81527f2d2d756e73616665416c6c6f7700000000000000000000000000000000000000602082015282826195738161b03e565b935060ff16815181106195885761958861aed1565b602002602001018190525085604001518282806195a49061b03e565b935060ff16815181106195b9576195b961aed1565b60200260200101819052505b85606001511561962f5760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261960e8161b03e565b935060ff16815181106196235761962361aed1565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561964d5761964d61a54f565b60405190808252806020026020018201604052801561968057816020015b606081526020019060019003908161966b5790505b50905060005b8260ff168160ff1610156196d957838160ff16815181106196a9576196a961aed1565b6020026020010151828260ff16815181106196c6576196c661aed1565b6020908102919091010152600101619686565b50979650505050505050565b604080518082019091526000808252602082015281518351101561970a575081615d21565b815183516020850151600092916197209161a81a565b61972a919061a807565b6020840151909150600190821461974b575082516020840151819020908220145b80156197665783518551869061976290839061a807565b9052505b50929392505050565b60008082600001516197938560000151866020015186600001518760200151619ab5565b61979d919061a81a565b90505b835160208501516197b1919061a81a565b81116190da57816197c18161b7ee565b92505082600001516197f88560200151836197dc919061a807565b86516197e8919061a807565b8386600001518760200151619ab5565b619802919061a81a565b90506197a0565b60606000619817848461976f565b61982290600161a81a565b67ffffffffffffffff81111561983a5761983a61a54f565b60405190808252806020026020018201604052801561986d57816020015b60608152602001906001900390816198585790505b50905060005b8151811015617ae257619889617d0486866190bb565b82828151811061989b5761989b61aed1565b6020908102919091010152600101619873565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106198f7577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310619923576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061994157662386f26fc10000830492506010015b6305f5e1008310619959576305f5e100830492506008015b612710831061996d57612710830492506004015b6064831061997f576064830492506002015b600a8310615d215760010192915050565b600061999c8383619d3a565b159392505050565b600080858411619aab5760208411619a5757600084156199ef5760016199cb86602061a807565b6199d690600861b808565b6199e190600261b906565b6199eb919061a807565b1990505b83518116856199fe898961a81a565b619a08919061a807565b805190935082165b818114619a4257878411619a2a5787945050505050617713565b83619a348161b912565b945050828451169050619a10565b619a4c878561a81a565b945050505050617713565b838320619a64858861a807565b619a6e908761a81a565b91505b858210619aa957848220808203619a9657619a8c868461a81a565b9350505050617713565b619aa160018461a807565b925050619a71565b505b5092949350505050565b60008381868511619bc05760208511619b6f5760008515619b01576001619add87602061a807565b619ae890600861b808565b619af390600261b906565b619afd919061a807565b1990505b84518116600087619b128b8b61a81a565b619b1c919061a807565b855190915083165b828114619b6157818610619b4957619b3c8b8b61a81a565b9650505050505050617713565b85619b538161b7ee565b965050838651169050619b24565b859650505050505050617713565b508383206000905b619b81868961a807565b8211619bbe57858320808203619b9d5783945050505050617713565b619ba860018561a81a565b9350508180619bb69061b7ee565b925050619b77565b505b619bca878761a81a565b979650505050505050565b60408051808201909152600080825260208201526000619c078560000151866020015186600001518760200151619ab5565b602080870180519186019190915251909150619c23908261a807565b835284516020860151619c36919061a81a565b8103619c455760008552619c77565b83518351619c53919061a81a565b85518690619c6290839061a807565b9052508351619c71908261a81a565b60208601525b50909392505050565b60208110619cb85781518352619c9760208461a81a565b9250619ca460208361a81a565b9150619cb160208261a807565b9050619c80565b6000198115619ce7576001619cce83602061a807565b619cda9061010061b906565b619ce4919061a807565b90505b9151835183169219169190911790915250565b60606000619d0884846161e6565b8051602080830151604051939450619d229390910161b929565b60405160208183030381529060405291505092915050565b8151815160009190811115619d4d575081515b6020808501519084015160005b83811015619e065782518251808214619dd6576000196020871015619db557600184619d8789602061a807565b619d91919061a81a565b619d9c90600861b808565b619da790600261b906565b619db1919061a807565b1990505b8181168382168181039114619dd3579750615d219650505050505050565b50505b619de160208661a81a565b9450619dee60208561a81a565b93505050602081619dff919061a81a565b9050619d5a565b5084518651616894919061b981565b610b678061b9a283390190565b61063a8061c50983390190565b61106f8061cb4383390190565b6120728061dbb283390190565b6040518060e00160405280606081526020016060815260200160608152602001600015158152602001600015158152602001600015158152602001619e8c619e91565b905290565b60405180610100016040528060001515815260200160001515815260200160608152602001600080191681526020016060815260200160608152602001600015158152602001619e8c6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b81811015619f435783516001600160a01b0316835260209384019390920191600101619f1c565b509095945050505050565b60005b83811015619f69578181015183820152602001619f51565b50506000910152565b60008151808452619f8a816020860160208601619f4e565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a09a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b8181101561a080577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261a06a848651619f72565b602095860195909450929092019160010161a030565b509197505050602094850194929092019150600101619fc6565b50929695505050505050565b600081518084526020840193506020830160005b8281101561a0fa5781517fffffffff000000000000000000000000000000000000000000000000000000001686526020958601959091019060010161a0ba565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a09a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516040875261a1706040880182619f72565b905060208201519150868103602088015261a18b818361a0a6565b96505050602093840193919091019060010161a12c565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a09a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845261a204858351619f72565b9450602093840193919091019060010161a1ca565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a09a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b038151168652602081015190506040602087015261a29a604087018261a0a6565b955050602093840193919091019060010161a241565b600181811c9082168061a2c457607f821691505b602082108103617fdf577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6001600160a01b0381541682526001600160a01b03600182015416602083015260028101546040830152600060038201608060608501526000815461a3418161a2b0565b806080880152600182166000811461a360576001811461a39a5761a3ce565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831660a089015260a082151560051b890101935061a3ce565b84600052602060002060005b8381101561a3c55781548a820160a0015260019091019060200161a3a6565b890160a0019450505b50919695505050505050565b602081526000615e1a602083018461a2fd565b6001600160a01b0383168152604060208201526000617713604083018461a2fd565b60006020828403121561a42157600080fd5b81516001600160a01b0381168114615e1a57600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff881660408301528660608301526003861061a4f2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a083015261a51360c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b60006020828403121561a53f57600080fd5b81518015158114615e1a57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b601f82111561123c57806000526020600020601f840160051c8101602085101561a5a55750805b601f840160051c820191505b81811015612a54576000815560010161a5b1565b815167ffffffffffffffff81111561a5df5761a5df61a54f565b61a5f38161a5ed845461a2b0565b8461a57e565b6020601f82116001811461a627576000831561a60f5750848201515b600019600385901b1c1916600184901b178455612a54565b600084815260208120601f198516915b8281101561a657578785015182556020948501946001909201910161a637565b508482101561a6755786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b602081526000615e1a6020830184619f72565b60006020828403121561a6a957600080fd5b5051919050565b602081526000615d2160208301600581527f68656c6c6f000000000000000000000000000000000000000000000000000000602082015260400190565b60a08152600061a70060a0830187619f72565b6001600160a01b03861660208401528460408401526001600160a01b03841660608401528281036080840152619bca81600581527f68656c6c6f000000000000000000000000000000000000000000000000000000602082015260400190565b600081516060845261a7756060850182619f72565b90506001600160a01b036020840151166020850152604083015160408501528091505092915050565b60808152600061a7b1608083018761a760565b8560208401526001600160a01b03851660408401528281036060840152619bca8185619f72565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115615d2157615d2161a7d8565b80820180821115615d2157615d2161a7d8565b60a08152600061a84060a083018861a760565b6001600160a01b03871660208401528560408401526001600160a01b0385166060840152828103608084015261a8768185619f72565b98975050505050505050565b6001600160a01b03851681528360208201526001600160a01b0383166040820152608060608201526000616894608083018461a2fd565b6001600160a01b03831681526040602082015260006177136040830184619f72565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161a91381601a850160208801619f4e565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161a95081601c840160208801619f4e565b01601c01949350505050565b6040516060810167ffffffffffffffff8111828210171561a97f5761a97f61a54f565b60405290565b60008067ffffffffffffffff84111561a9a05761a9a061a54f565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561a9cf5761a9cf61a54f565b60405283815290508082840185101561a9e757600080fd5b617ae2846020830185619f4e565b600082601f83011261aa0657600080fd5b615e1a8383516020850161a985565b60006020828403121561aa2757600080fd5b815167ffffffffffffffff81111561aa3e57600080fd5b615d1d8482850161a9f5565b6000835161aa5c818460208801619f4e565b83519083019061aa70818360208801619f4e565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161aab181601a850160208801619f4e565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161aaee816033840160208801619f4e565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000615e1a6080830184619f72565b60006020828403121561ab7d57600080fd5b815167ffffffffffffffff81111561ab9457600080fd5b8201601f8101841361aba557600080fd5b615d1d8482516020840161a985565b6000855161abc6818460208a01619f4e565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161ac00816001840160208a01619f4e565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161ac3e816002840160208901619f4e565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161ac80816002840160208801619f4e565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061accb6040830184619f72565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161ad4281601f850160208701619f4e565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061adaf6040830184619f72565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061ae016040830184619f72565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161ae78816014850160208701619f4e565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061aebf6040830185619f72565b8281036020840152615e168185619f72565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161af38816001850160208701619f4e565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161af7e818460208701619f4e565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161b03181604b850160208701619f4e565b91909101604b0192915050565b600060ff821660ff810361b0545761b05461a7d8565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161b0bb816029850160208701619f4e565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000615e1a6080830184619f72565b60006020828403121561b12157600080fd5b815167ffffffffffffffff81111561b13857600080fd5b82016060818503121561b14a57600080fd5b61b15261a95c565b81518060030b811461b16357600080fd5b8152602082015167ffffffffffffffff81111561b17f57600080fd5b61b18b8682850161a9f5565b602083015250604082015167ffffffffffffffff81111561b1ab57600080fd5b61b1b78682850161a9f5565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161b223816021850160208701619f4e565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161b40f816021850160208801619f4e565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161b44c81602e840160208801619f4e565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161b0bb816029850160208701619f4e565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161b514816022850160208701619f4e565b9190910160220192915050565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161b55981600e850160208701619f4e565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161b637816018850160208801619f4e565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161b67481601c840160208801619f4e565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161b77a818460208701619f4e565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161b7e181601c850160208701619f4e565b91909101601c0192915050565b6000600019820361b8015761b80161a7d8565b5060010190565b8082028115828204841417615d2157615d2161a7d8565b6001815b600184111561b85a5780850481111561b83e5761b83e61a7d8565b600184161561b84c57908102905b60019390931c92800261b823565b935093915050565b60008261b87157506001615d21565b8161b87e57506000615d21565b816001811461b894576002811461b89e5761b8ba565b6001915050615d21565b60ff84111561b8af5761b8af61a7d8565b50506001821b615d21565b5060208310610133831016604e8410600b841016171561b8dd575081810a615d21565b61b8ea600019848461b81f565b806000190482111561b8fe5761b8fe61a7d8565b029392505050565b6000615e1a838361b862565b60008161b9215761b92161a7d8565b506000190190565b6000835161b93b818460208801619f4e565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161b975816001840160208801619f4e565b01600101949350505050565b81810360008312801583831316838312821617156190da576190da61a7d856fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea2646970667358221220c069e4cb3e16bcddc5b07d6ba4019a062fbae92d695877ad19f66fc9ac6047fd64736f6c634300081a00336080604052348015600f57600080fd5b5061061b8061001f6000396000f3fe60806040526004361061002a5760003560e01c80635bcfd61614610033578063c9028a361461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e366004610151565b610073565b34801561005f57600080fd5b5061003161006e36600461020e565b6100ee565b6060811561008a576100878284018461027f565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610375565b6100c560408a0160208b016103e1565b896040013533866040516100de96959493929190610445565b60405180910390a1505050505050565b7fd75bb509c8f32a725aac99ac5c4541060dbfb889a3aca8314d6f00395618c4c48160405161011d9190610507565b60405180910390a150565b803573ffffffffffffffffffffffffffffffffffffffff8116811461014c57600080fd5b919050565b60008060008060006080868803121561016957600080fd5b853567ffffffffffffffff81111561018057600080fd5b86016060818903121561019257600080fd5b94506101a060208701610128565b935060408601359250606086013567ffffffffffffffff8111156101c357600080fd5b8601601f810188136101d457600080fd5b803567ffffffffffffffff8111156101eb57600080fd5b8860208284010111156101fd57600080fd5b959894975092955050506020019190565b60006020828403121561022057600080fd5b813567ffffffffffffffff81111561023757600080fd5b82016080818503121561024957600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561029157600080fd5b813567ffffffffffffffff8111156102a857600080fd5b8201601f810184136102b957600080fd5b803567ffffffffffffffff8111156102d3576102d3610250565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033f5761033f610250565b60405281815282820160200186101561035757600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126103aa57600080fd5b83018035915067ffffffffffffffff8211156103c557600080fd5b6020019150368190038213156103da57600080fd5b9250929050565b6000602082840312156103f357600080fd5b61024982610128565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60a08152600061045960a08301888a6103fc565b73ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff851660608401528281036080840152835180825260005b818110156104c3576020818701810151848301820152016104a7565b5060006020828401015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011683010192505050979650505050505050565b6020815273ffffffffffffffffffffffffffffffffffffffff61052983610128565b16602082015273ffffffffffffffffffffffffffffffffffffffff61055060208401610128565b166040820152600080604084013590508060608401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261059c57600080fd5b830160208101903567ffffffffffffffff8111156105b957600080fd5b8036038213156105c857600080fd5b6080808501526105dc60a0850182846103fc565b9594505050505056fea264697066735822122097b135946b5f8ffb91b019442462dc27864bb547c0a533c3cc3e01dd4abecc7964736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea2646970667358221220eaa287ea22d82335c1d97ef661cb17f1296902daa41cca34de107966248e954364736f6c634300081a003360c060405234801561001057600080fd5b5060405161207238038061207283398101604081905261002f916101f0565b6001600160a01b038216158061004c57506001600160a01b038116155b1561006a5760405163d92e233d60e01b815260040160405180910390fd5b60066100768982610342565b5060076100838882610342565b506008805460ff191660ff881617905560808590528360028111156100aa576100aa610400565b60a08160028111156100be576100be610400565b905250600192909255600080546001600160a01b039283166001600160a01b0319909116179055600880549190921661010002610100600160a81b0319909116179055506104169350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261013357600080fd5b81516001600160401b0381111561014c5761014c61010c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561017a5761017a61010c565b60405281815283820160200185101561019257600080fd5b60005b828110156101b157602081860181015183830182015201610195565b506000918101602001919091529392505050565b8051600381106101d457600080fd5b919050565b80516001600160a01b03811681146101d457600080fd5b600080600080600080600080610100898b03121561020d57600080fd5b88516001600160401b0381111561022357600080fd5b61022f8b828c01610122565b60208b015190995090506001600160401b0381111561024d57600080fd5b6102598b828c01610122565b975050604089015160ff8116811461027057600080fd5b60608a0151909650945061028660808a016101c5565b60a08a0151909450925061029c60c08a016101d9565b91506102aa60e08a016101d9565b90509295985092959890939650565b600181811c908216806102cd57607f821691505b6020821081036102ed57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561033d57806000526020600020601f840160051c8101602085101561031a5750805b601f840160051c820191505b8181101561033a5760008155600101610326565b50505b505050565b81516001600160401b0381111561035b5761035b61010c565b61036f8161036984546102b9565b846102f3565b6020601f8211600181146103a3576000831561038b5750848201515b600019600385901b1c1916600184901b17845561033a565b600084815260208120601f198516915b828110156103d357878501518255602094850194600190920191016103b3565b50848210156103f15786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a051611c1b61045760003960006103440152600081816102f001528181610bdc01528181610ce201528181610efe01526110040152611c1b6000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c806395d89b41116100f9578063ccc7759911610097578063eddeb12311610071578063eddeb12314610461578063f2441b3214610474578063f687d12a14610494578063fc5fecd5146104a757600080fd5b8063ccc77599146103d4578063d9eeebed146103e7578063dd62ed3e1461041b57600080fd5b8063b84c8246116100d3578063b84c824614610386578063c47f00271461039b578063c7012626146103ae578063c835d7cc146103c157600080fd5b806395d89b4114610337578063a3413d031461033f578063a9059cbb1461037357600080fd5b80633ce4a5bc116101665780634d8943bb116101405780634d8943bb146102ac57806370a08231146102b557806385e1f4d0146102eb5780638b851b951461031257600080fd5b80633ce4a5bc1461024657806342966c681461028657806347e7ef241461029957600080fd5b806318160ddd1161019757806318160ddd1461021657806323b872dd1461021e578063313ce5671461023157600080fd5b806306fdde03146101be578063091d2788146101dc578063095ea7b3146101f3575b600080fd5b6101c66104ba565b6040516101d39190611648565b60405180910390f35b6101e560015481565b6040519081526020016101d3565b610206610201366004611687565b61054c565b60405190151581526020016101d3565b6005546101e5565b61020661022c3660046116b3565b610563565b60085460405160ff90911681526020016101d3565b61026173735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d3565b6102066102943660046116f4565b6105fa565b6102066102a7366004611687565b61060e565b6101e560025481565b6101e56102c336600461170d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6101e57f000000000000000000000000000000000000000000000000000000000000000081565b60085461026190610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6101c6610767565b6103667f000000000000000000000000000000000000000000000000000000000000000081565b6040516101d3919061172a565b610206610381366004611687565b610776565b610399610394366004611832565b610783565b005b6103996103a9366004611832565b6107e0565b6102066103bc366004611883565b610839565b6103996103cf36600461170d565b610988565b6103996103e236600461170d565b610a9c565b6103ef610bb0565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101d3565b6101e56104293660046118dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205490565b61039961046f3660046116f4565b610dce565b6000546102619073ffffffffffffffffffffffffffffffffffffffff1681565b6103996104a23660046116f4565b610e50565b6103ef6104b53660046116f4565b610ed2565b6060600680546104c990611915565b80601f01602080910402602001604051908101604052809291908181526020018280546104f590611915565b80156105425780601f1061051757610100808354040283529160200191610542565b820191906000526020600020905b81548152906001019060200180831161052557829003601f168201915b5050505050905090565b60006105593384846110ee565b5060015b92915050565b60006105708484846111f7565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460209081526040808320338452909152902054828110156105db576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105ef85336105ea8685611997565b6110ee565b506001949350505050565b600061060633836113b2565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab1480159061064c575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156106755750600854610100900473ffffffffffffffffffffffffffffffffffffffff163314155b156106ac576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106b683836114f4565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526107569186906119aa565b60405180910390a250600192915050565b6060600780546104c990611915565b60006105593384846111f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab146107d0576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60076107dc8282611a1b565b5050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461082d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60066107dc8282611a1b565b6000806000610846610bb0565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156108d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fc9190611b34565b610932576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61093c33856113b2565b60025460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161097591899189918791611b56565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146109d5576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a22576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610ae9576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610b36576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c679190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610cb6576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d699190611ba2565b905080600003610da5576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060025460015483610db89190611bbb565b610dc29190611bd2565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e1b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610a91565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e9d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610f65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f899190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610fd8576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015611067573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108b9190611ba2565b9050806000036110c7576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000906110d78784611bbb565b6110e19190611bd2565b9296929550919350505050565b73ffffffffffffffffffffffffffffffffffffffff831661113b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611188576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611244576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611291576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040902054818110156112f1576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112fb8282611997565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260036020526040808220939093559085168152908120805484929061133e908490611bd2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113a491815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff82166113ff576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260409020548181101561145f576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114698282611997565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260036020526040812091909155600580548492906114a4908490611997565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016111ea565b73ffffffffffffffffffffffffffffffffffffffff8216611541576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008282546115539190611bd2565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805483929061158d908490611bd2565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561160a576020818501810151868301820152016115ee565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061165b60208301846115e4565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461168457600080fd5b50565b6000806040838503121561169a57600080fd5b82356116a581611662565b946020939093013593505050565b6000806000606084860312156116c857600080fd5b83356116d381611662565b925060208401356116e381611662565b929592945050506040919091013590565b60006020828403121561170657600080fd5b5035919050565b60006020828403121561171f57600080fd5b813561165b81611662565b6020810160038310611765577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff8411156117b5576117b561176b565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff821117156118025761180261176b565b60405283815290508082840185101561181a57600080fd5b83836020830137600060208583010152509392505050565b60006020828403121561184457600080fd5b813567ffffffffffffffff81111561185b57600080fd5b8201601f8101841361186c57600080fd5b61187b8482356020840161179a565b949350505050565b6000806040838503121561189657600080fd5b823567ffffffffffffffff8111156118ad57600080fd5b8301601f810185136118be57600080fd5b6118cd8582356020840161179a565b95602094909401359450505050565b600080604083850312156118ef57600080fd5b82356118fa81611662565b9150602083013561190a81611662565b809150509250929050565b600181811c9082168061192957607f821691505b602082108103611962577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561055d5761055d611968565b6040815260006119bd60408301856115e4565b90508260208301529392505050565b601f821115611a1657806000526020600020601f840160051c810160208510156119f35750805b601f840160051c820191505b81811015611a1357600081556001016119ff565b50505b505050565b815167ffffffffffffffff811115611a3557611a3561176b565b611a4981611a438454611915565b846119cc565b6020601f821160018114611a9b5760008315611a655750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611a13565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015611ae95787850151825560209485019460019092019101611ac9565b5084821015611b2557868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b600060208284031215611b4657600080fd5b8151801515811461165b57600080fd5b608081526000611b6960808301876115e4565b6020830195909552506040810192909252606090910152919050565b600060208284031215611b9757600080fd5b815161165b81611662565b600060208284031215611bb457600080fd5b5051919050565b808202811582820484141761055d5761055d611968565b8082018082111561055d5761055d61196856fea26469706673582212202a06c5d72036d88c206ff2bfdd016b3ce8555bc0090e8bb5487bc61ea043732b64736f6c634300081a0033a2646970667358221220076d6099d381c9dcb384cc42228e961410a0e6b550a6dcfea74080e545716fd864736f6c634300081a0033", } // GatewayZEVMOutboundTestABI is the input ABI used to generate the binding from. From 1a8b71052c18a9e8ce4b444f14e736bf890a2211 Mon Sep 17 00:00:00 2001 From: lumtis Date: Wed, 16 Oct 2024 16:39:00 +0200 Subject: [PATCH 10/17] update soldeer --- v2/soldeer.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v2/soldeer.lock b/v2/soldeer.lock index 77fa484cb..6d123994d 100644 --- a/v2/soldeer.lock +++ b/v2/soldeer.lock @@ -10,4 +10,4 @@ name = "openzeppelin-foundry-upgrades" version = "0.3.2" source = "https://soldeer-revisions.s3.amazonaws.com/openzeppelin-foundry-upgrades/0_3_2_15-08-2024_13:33:43_openzeppelin-foundry-upgrades.zip" checksum = "664262fe158570c0b9742f18ac101b708ac5e4d4534daec321a47eeee200f225" -integrity = "9118f0dfdfbf8530736dda7d3b898764c2d8eabc496e15e0ded31f510046d845" \ No newline at end of file +integrity = "9118f0dfdfbf8530736dda7d3b898764c2d8eabc496e15e0ded31f510046d845" From 57ab6d7b4b9d020c1c8eae187292da0da2d292f8 Mon Sep 17 00:00:00 2001 From: lumtis Date: Wed, 16 Oct 2024 16:59:15 +0200 Subject: [PATCH 11/17] second ci tests --- .github/workflows/generated-files_v2.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/generated-files_v2.yaml b/.github/workflows/generated-files_v2.yaml index af8adbea1..6879315fa 100644 --- a/.github/workflows/generated-files_v2.yaml +++ b/.github/workflows/generated-files_v2.yaml @@ -53,6 +53,9 @@ jobs: - name: Run forge --version run: forge --version + - name: Run soldeer --version + run: forge soldeer version + - name: Generate Go packages and types run: | yarn generate From 9c64a350cc62aac994a4a1545c8b06124356dd6a Mon Sep 17 00:00:00 2001 From: lumtis Date: Wed, 16 Oct 2024 17:06:43 +0200 Subject: [PATCH 12/17] update lock url --- v2/soldeer.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/v2/soldeer.lock b/v2/soldeer.lock index 6d123994d..fe5014785 100644 --- a/v2/soldeer.lock +++ b/v2/soldeer.lock @@ -1,13 +1,13 @@ [[dependencies]] name = "forge-std" version = "1.9.2" -source = "https://soldeer-revisions.s3.amazonaws.com/forge-std/1_9_2_06-08-2024_17:31:25_forge-std-1.9.2.zip" +url = "https://soldeer-revisions.s3.amazonaws.com/forge-std/1_9_2_06-08-2024_17:31:25_forge-std-1.9.2.zip" checksum = "20fd008c7c69b6c737cc0284469d1c76497107bc3e004d8381f6d8781cb27980" integrity = "f49457fb6591f0dfd8b59e02e6eb4508a115ef08a86b0803feb0a3939d82d783" [[dependencies]] name = "openzeppelin-foundry-upgrades" version = "0.3.2" -source = "https://soldeer-revisions.s3.amazonaws.com/openzeppelin-foundry-upgrades/0_3_2_15-08-2024_13:33:43_openzeppelin-foundry-upgrades.zip" +url = "https://soldeer-revisions.s3.amazonaws.com/openzeppelin-foundry-upgrades/0_3_2_15-08-2024_13:33:43_openzeppelin-foundry-upgrades.zip" checksum = "664262fe158570c0b9742f18ac101b708ac5e4d4534daec321a47eeee200f225" integrity = "9118f0dfdfbf8530736dda7d3b898764c2d8eabc496e15e0ded31f510046d845" From 3df677fcff6e335ee51991bad45b90930e2fb5cc Mon Sep 17 00:00:00 2001 From: lumtis Date: Wed, 16 Oct 2024 17:37:13 +0200 Subject: [PATCH 13/17] add solc version in config --- v2/foundry.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/v2/foundry.toml b/v2/foundry.toml index 3dc010d8a..0fb6be12e 100644 --- a/v2/foundry.toml +++ b/v2/foundry.toml @@ -13,6 +13,7 @@ remappings = [ "@openzeppelin/contracts-upgradeable/=node_modules/@openzeppelin/contracts-upgradeable/" ] +solc-version = "0.8.26" no-match-contract = '.*EchidnaTest$' optimizer = true optimizer_runs = 10_000 From b115633ec3676252a26f5776861cdca3c218126e Mon Sep 17 00:00:00 2001 From: lumtis Date: Wed, 16 Oct 2024 22:21:13 +0200 Subject: [PATCH 14/17] fix generation --- v2/pkg/address.sol/address.go | 2 +- v2/pkg/beaconproxy.sol/beaconproxy.go | 2 +- v2/pkg/console.sol/console.go | 2 +- v2/pkg/core.sol/core.go | 2 +- v2/pkg/defender.sol/defender.go | 2 +- v2/pkg/defenderdeploy.sol/defenderdeploy.go | 2 +- v2/pkg/erc1967proxy.sol/erc1967proxy.go | 2 +- v2/pkg/erc1967utils.sol/erc1967utils.go | 2 +- v2/pkg/erc20custody.sol/erc20custody.go | 2 +- v2/pkg/erc20custody.t.sol/erc20custodytest.go | 2 +- v2/pkg/erc20custodyupgradetest.sol/erc20custodyupgradetest.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/gatewayevmupgradetest.sol/gatewayevmupgradetest.go | 2 +- v2/pkg/gatewayevmzevm.t.sol/gatewayevmzevmtest.go | 2 +- v2/pkg/gatewayzevm.sol/gatewayzevm.go | 2 +- v2/pkg/gatewayzevm.t.sol/gatewayzevminboundtest.go | 2 +- v2/pkg/gatewayzevm.t.sol/gatewayzevmoutboundtest.go | 2 +- v2/pkg/gatewayzevmupgradetest.sol/gatewayzevmupgradetest.go | 2 +- v2/pkg/math.sol/math.go | 2 +- v2/pkg/mockerc20.sol/mockerc20.go | 2 +- v2/pkg/mockerc721.sol/mockerc721.go | 2 +- v2/pkg/proxyadmin.sol/proxyadmin.go | 2 +- v2/pkg/receiverevm.sol/receiverevm.go | 2 +- v2/pkg/safeconsole.sol/safeconsole.go | 2 +- v2/pkg/safeerc20.sol/safeerc20.go | 2 +- v2/pkg/senderzevm.sol/senderzevm.go | 2 +- v2/pkg/signedmath.sol/signedmath.go | 2 +- v2/pkg/src/strings.sol/strings.go | 2 +- v2/pkg/stderror.sol/stderror.go | 2 +- v2/pkg/stdjson.sol/stdjson.go | 2 +- v2/pkg/stdmath.sol/stdmath.go | 2 +- v2/pkg/stdstorage.sol/stdstorage.go | 2 +- v2/pkg/stdstorage.sol/stdstoragesafe.go | 2 +- v2/pkg/stdstyle.sol/stdstyle.go | 2 +- v2/pkg/stdtoml.sol/stdtoml.go | 2 +- v2/pkg/storageslot.sol/storageslot.go | 2 +- v2/pkg/strings.sol/strings.go | 2 +- v2/pkg/systemcontract.sol/systemcontract.go | 2 +- v2/pkg/systemcontractmock.sol/systemcontractmock.go | 2 +- v2/pkg/testerc20.sol/testerc20.go | 2 +- v2/pkg/testuniversalcontract.sol/testuniversalcontract.go | 2 +- .../transparentupgradeableproxy.go | 2 +- v2/pkg/upgradeablebeacon.sol/upgradeablebeacon.go | 2 +- v2/pkg/upgrades.sol/unsafeupgrades.go | 2 +- v2/pkg/upgrades.sol/upgrades.go | 2 +- v2/pkg/utils.sol/utils.go | 2 +- v2/pkg/versions.sol/versions.go | 2 +- v2/pkg/wzeta.sol/weth9.go | 2 +- v2/pkg/zeta.non-eth.sol/zetanoneth.go | 2 +- v2/pkg/zetaconnectornative.sol/zetaconnectornative.go | 2 +- v2/pkg/zetaconnectornative.t.sol/zetaconnectornativetest.go | 2 +- .../zetaconnectornativeupgradetest.go | 2 +- v2/pkg/zetaconnectornonnative.sol/zetaconnectornonnative.go | 2 +- .../zetaconnectornonnative.t.sol/zetaconnectornonnativetest.go | 2 +- .../zetaconnectornonnativeupgradetest.go | 2 +- v2/pkg/zrc20.sol/zrc20.go | 2 +- v2/pkg/zrc20.t.sol/zrc20test.go | 2 +- v2/types/factories/Address__factory.ts | 2 +- v2/types/factories/BeaconProxy__factory.ts | 2 +- v2/types/factories/ERC1967Proxy__factory.ts | 2 +- v2/types/factories/ERC1967Utils__factory.ts | 2 +- v2/types/factories/ERC20CustodyUpgradeTest__factory.ts | 2 +- v2/types/factories/ERC20Custody__factory.ts | 2 +- v2/types/factories/GatewayEVMUpgradeTest__factory.ts | 2 +- v2/types/factories/GatewayEVM__factory.ts | 2 +- v2/types/factories/GatewayZEVMUpgradeTest__factory.ts | 2 +- v2/types/factories/GatewayZEVM__factory.ts | 2 +- v2/types/factories/Math__factory.ts | 2 +- v2/types/factories/MockERC20__factory.ts | 2 +- v2/types/factories/MockERC721__factory.ts | 2 +- v2/types/factories/ProxyAdmin__factory.ts | 2 +- v2/types/factories/ReceiverEVM__factory.ts | 2 +- v2/types/factories/SafeERC20__factory.ts | 2 +- v2/types/factories/SenderZEVM__factory.ts | 2 +- v2/types/factories/StdError.sol/StdError__factory.ts | 2 +- v2/types/factories/StdStorage.sol/StdStorageSafe__factory.ts | 2 +- v2/types/factories/Strings__factory.ts | 2 +- .../factories/SystemContract.sol/SystemContract__factory.ts | 2 +- .../SystemContractMock.sol/SystemContractMock__factory.ts | 2 +- v2/types/factories/TestERC20__factory.ts | 2 +- v2/types/factories/TestUniversalContract__factory.ts | 2 +- .../TransparentUpgradeableProxy__factory.ts | 2 +- v2/types/factories/UpgradeableBeacon__factory.ts | 2 +- v2/types/factories/WZETA.sol/WETH9__factory.ts | 2 +- v2/types/factories/ZRC20.sol/ZRC20__factory.ts | 2 +- v2/types/factories/Zeta.non-eth.sol/ZetaNonEth__factory.ts | 2 +- v2/types/factories/ZetaConnectorNativeUpgradeTest__factory.ts | 2 +- v2/types/factories/ZetaConnectorNative__factory.ts | 2 +- .../factories/ZetaConnectorNonNativeUpgradeTest__factory.ts | 2 +- v2/types/factories/ZetaConnectorNonNative__factory.ts | 2 +- 92 files changed, 92 insertions(+), 92 deletions(-) diff --git a/v2/pkg/address.sol/address.go b/v2/pkg/address.sol/address.go index 0dd6bd4f8..4c34f2150 100644 --- a/v2/pkg/address.sol/address.go +++ b/v2/pkg/address.sol/address.go @@ -32,7 +32,7 @@ var ( // 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: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122092e7aecc4d2ccb1e367abefe25d03e613e1b1d9f823e0dffcbae8c231c191fbf64736f6c634300081a0033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220525f69d25bb56f3e15d69270d52349856b0d9c92f346a3233a662178749fd33264736f6c634300081a0033", } // AddressABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/beaconproxy.sol/beaconproxy.go b/v2/pkg/beaconproxy.sol/beaconproxy.go index 9412ccfeb..6743a92b0 100644 --- a/v2/pkg/beaconproxy.sol/beaconproxy.go +++ b/v2/pkg/beaconproxy.sol/beaconproxy.go @@ -32,7 +32,7 @@ var ( // 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: "0x60a06040526040516105eb3803806105eb83398101604081905261002291610387565b61002c828261003e565b506001600160a01b0316608052610484565b610047826100fe565b6040516001600160a01b038316907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a28051156100f2576100ed826001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e7919061044d565b82610211565b505050565b6100fa610288565b5050565b806001600160a01b03163b60000361013957604051631933b43b60e21b81526001600160a01b03821660048201526024015b60405180910390fd5b807fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392831617905560408051635c60da1b60e01b81529051600092841691635c60da1b9160048083019260209291908290030181865afa1580156101b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d9919061044d565b9050806001600160a01b03163b6000036100fa57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610130565b6060600080846001600160a01b03168460405161022e9190610468565b600060405180830381855af49150503d8060008114610269576040519150601f19603f3d011682016040523d82523d6000602084013e61026e565b606091505b50909250905061027f8583836102a9565b95945050505050565b34156102a75760405163b398979f60e01b815260040160405180910390fd5b565b6060826102be576102b982610308565b610301565b81511580156102d557506001600160a01b0384163b155b156102fe57604051639996b31560e01b81526001600160a01b0385166004820152602401610130565b50805b9392505050565b8051156103185780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80516001600160a01b038116811461034857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561037e578181015183820152602001610366565b50506000910152565b6000806040838503121561039a57600080fd5b6103a383610331565b60208401519092506001600160401b038111156103bf57600080fd5b8301601f810185136103d057600080fd5b80516001600160401b038111156103e9576103e961034d565b604051601f8201601f19908116603f011681016001600160401b03811182821017156104175761041761034d565b60405281815282820160200187101561042f57600080fd5b610440826020830160208601610363565b8093505050509250929050565b60006020828403121561045f57600080fd5b61030182610331565b6000825161047a818460208701610363565b9190910192915050565b60805161014d61049e60003960006024015261014d6000f3fe608060405261000c61000e565b005b61001e610019610020565b6100b6565b565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561008d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100b191906100da565b905090565b3660008037600080366000845af43d6000803e8080156100d5573d6000f35b3d6000fd5b6000602082840312156100ec57600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461011057600080fd5b939250505056fea2646970667358221220f057f84db33183a0d3a6c76e9622f96eee9a0aa593cc3a6a4209d5809c1fe2fd64736f6c634300081a0033", + Bin: "0x60a06040526040516105eb3803806105eb83398101604081905261002291610387565b61002c828261003e565b506001600160a01b0316608052610484565b610047826100fe565b6040516001600160a01b038316907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a28051156100f2576100ed826001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e7919061044d565b82610211565b505050565b6100fa610288565b5050565b806001600160a01b03163b60000361013957604051631933b43b60e21b81526001600160a01b03821660048201526024015b60405180910390fd5b807fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392831617905560408051635c60da1b60e01b81529051600092841691635c60da1b9160048083019260209291908290030181865afa1580156101b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d9919061044d565b9050806001600160a01b03163b6000036100fa57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610130565b6060600080846001600160a01b03168460405161022e9190610468565b600060405180830381855af49150503d8060008114610269576040519150601f19603f3d011682016040523d82523d6000602084013e61026e565b606091505b50909250905061027f8583836102a9565b95945050505050565b34156102a75760405163b398979f60e01b815260040160405180910390fd5b565b6060826102be576102b982610308565b610301565b81511580156102d557506001600160a01b0384163b155b156102fe57604051639996b31560e01b81526001600160a01b0385166004820152602401610130565b50805b9392505050565b8051156103185780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80516001600160a01b038116811461034857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561037e578181015183820152602001610366565b50506000910152565b6000806040838503121561039a57600080fd5b6103a383610331565b60208401519092506001600160401b038111156103bf57600080fd5b8301601f810185136103d057600080fd5b80516001600160401b038111156103e9576103e961034d565b604051601f8201601f19908116603f011681016001600160401b03811182821017156104175761041761034d565b60405281815282820160200187101561042f57600080fd5b610440826020830160208601610363565b8093505050509250929050565b60006020828403121561045f57600080fd5b61030182610331565b6000825161047a818460208701610363565b9190910192915050565b60805161014d61049e60003960006024015261014d6000f3fe608060405261000c61000e565b005b61001e610019610020565b6100b6565b565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561008d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100b191906100da565b905090565b3660008037600080366000845af43d6000803e8080156100d5573d6000f35b3d6000fd5b6000602082840312156100ec57600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461011057600080fd5b939250505056fea2646970667358221220361a0dc2b1da1d9258f68e8b1f1c9708b2cd315a53fe53be9f849efbd82649d964736f6c634300081a0033", } // BeaconProxyABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/console.sol/console.go b/v2/pkg/console.sol/console.go index c16717f85..d613fe6a3 100644 --- a/v2/pkg/console.sol/console.go +++ b/v2/pkg/console.sol/console.go @@ -32,7 +32,7 @@ var ( // ConsoleMetaData contains all meta data concerning the Console contract. var ConsoleMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208796257d4894d826ddb63b7691c6a4a1d7d3f7e17cc7f2dbf8d4d9bf646b997264736f6c634300081a0033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c4d39ef4eba6276bfb1bc591229170a90b20952c1b0d7ce9afbf94d17b2649fb64736f6c634300081a0033", } // ConsoleABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/core.sol/core.go b/v2/pkg/core.sol/core.go index 348a847b8..9524d8bd5 100644 --- a/v2/pkg/core.sol/core.go +++ b/v2/pkg/core.sol/core.go @@ -32,7 +32,7 @@ var ( // CoreMetaData contains all meta data concerning the Core contract. var CoreMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ac035dbcdf46d21fb548e44cf66854cbce92bea12b5cf172ea379634a44ff22064736f6c634300081a0033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220300111570391534dfbdbf5e44df23db85e1dc785e104797da28fc8a66d6bf86c64736f6c634300081a0033", } // CoreABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/defender.sol/defender.go b/v2/pkg/defender.sol/defender.go index 9858133e6..58103081c 100644 --- a/v2/pkg/defender.sol/defender.go +++ b/v2/pkg/defender.sol/defender.go @@ -32,7 +32,7 @@ var ( // DefenderMetaData contains all meta data concerning the Defender contract. var DefenderMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208c1cd90b4bcee8cb1ce74656b52af29e2644920bb32bad69e42e8418d0905dca64736f6c634300081a0033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122065abafebf1ecc138f71a5c5cf67deb52293718bd3816f120f62e1701da6040bd64736f6c634300081a0033", } // DefenderABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/defenderdeploy.sol/defenderdeploy.go b/v2/pkg/defenderdeploy.sol/defenderdeploy.go index a0117e49d..10d0d4ffa 100644 --- a/v2/pkg/defenderdeploy.sol/defenderdeploy.go +++ b/v2/pkg/defenderdeploy.sol/defenderdeploy.go @@ -32,7 +32,7 @@ var ( // DefenderDeployMetaData contains all meta data concerning the DefenderDeploy contract. var DefenderDeployMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220138933d44962d97a56bb1f81ad589515e67adc21d1833b38a41f1480142c8f9964736f6c634300081a0033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203e56c468490954bf2c047a355a009f67f17a00241a4af5053872ea3520bb547564736f6c634300081a0033", } // DefenderDeployABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/erc1967proxy.sol/erc1967proxy.go b/v2/pkg/erc1967proxy.sol/erc1967proxy.go index f2afb2b80..9fdcfed33 100644 --- a/v2/pkg/erc1967proxy.sol/erc1967proxy.go +++ b/v2/pkg/erc1967proxy.sol/erc1967proxy.go @@ -32,7 +32,7 @@ var ( // 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: "0x608060405260405161041d38038061041d83398101604081905261002291610268565b61002c8282610033565b5050610358565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b919061033c565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b038111156102ae57600080fd5b8301601f810185136102bf57600080fd5b80516001600160401b038111156102d8576102d861022e565b604051601f8201601f19908116603f011681016001600160401b03811182821017156103065761030661022e565b60405281815282820160200187101561031e57600080fd5b61032f826020830160208601610244565b8093505050509250929050565b6000825161034e818460208701610244565b9190910192915050565b60b7806103666000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea264697066735822122068bfc28cb2d118b34036260d2fe0b28765c5c90aab15cf90c1fb21f7a4b1fb6d64736f6c634300081a0033", + Bin: "0x608060405260405161041d38038061041d83398101604081905261002291610268565b61002c8282610033565b5050610358565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b919061033c565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b038111156102ae57600080fd5b8301601f810185136102bf57600080fd5b80516001600160401b038111156102d8576102d861022e565b604051601f8201601f19908116603f011681016001600160401b03811182821017156103065761030661022e565b60405281815282820160200187101561031e57600080fd5b61032f826020830160208601610244565b8093505050509250929050565b6000825161034e818460208701610244565b9190910192915050565b60b7806103666000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220c882f735e5f8d521dae58bd08ba62d17508690600f26f161a5901184c092b5d964736f6c634300081a0033", } // ERC1967ProxyABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/erc1967utils.sol/erc1967utils.go b/v2/pkg/erc1967utils.sol/erc1967utils.go index 5d02bde16..a7da5f662 100644 --- a/v2/pkg/erc1967utils.sol/erc1967utils.go +++ b/v2/pkg/erc1967utils.sol/erc1967utils.go @@ -32,7 +32,7 @@ var ( // 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: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206d1d9a34e41300a1f4abe728c05aea568c8b941becc75807d526810fe900e81464736f6c634300081a0033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122091156d60084c9fce5d95d631aade7a5afdd10bcc0a25ba43333a535126264e7264736f6c634300081a0033", } // ERC1967UtilsABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/erc20custody.sol/erc20custody.go b/v2/pkg/erc20custody.sol/erc20custody.go index ecd38ddb5..3bd59609d 100644 --- a/v2/pkg/erc20custody.sol/erc20custody.go +++ b/v2/pkg/erc20custody.sol/erc20custody.go @@ -40,7 +40,7 @@ type RevertContext struct { // ERC20CustodyMetaData contains all meta data concerning the ERC20Custody contract. var ERC20CustodyMetaData = &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\":\"UPGRADE_INTERFACE_VERSION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WHITELISTER_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\":\"deposit\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"initialize\",\"inputs\":[{\"name\":\"gateway_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"tssAddress_\",\"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\":\"setSupportsLegacy\",\"inputs\":[{\"name\":\"_supportsLegacy\",\"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\":\"supportsLegacy\",\"inputs\":[],\"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\":\"unwhitelist\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateTSSAddress\",\"inputs\":[{\"name\":\"newTSSAddress\",\"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\":\"whitelist\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"whitelisted\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"token\",\"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\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Deposited\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"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\":\"Unwhitelisted\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedCustodyTSSAddress\",\"inputs\":[{\"name\":\"oldTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newTSSAddress\",\"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\":\"Whitelisted\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawn\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawnAndCalled\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"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\":\"WithdrawnAndReverted\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"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\":\"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\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LegacyMethodsNotSupported\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotWhitelisted\",\"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: "0x60a060405230608052348015601357600080fd5b5060805161299161003d600039600081816119610152818161198a0152611b6001526129916000f3fe6080604052600436106101c25760003560e01c806385f438c1116100f7578063ad3cb1cc11610095578063d9caed1211610064578063d9caed12146105f6578063e609055e14610616578063e63ab1e914610636578063eab103df1461066a57600080fd5b8063ad3cb1cc14610530578063c0c53b8b14610586578063d547741f146105a6578063d936547e146105c657600080fd5b806399a3c356116100d157806399a3c356146104bb5780639a590427146104db5780639b19251a146104fb578063a217fddf1461051b57600080fd5b806385f438c11461040257806391d1485414610436578063950837aa1461049b57600080fd5b80633f4ba83a11610164578063570618e11161013e578063570618e1146103625780635b112591146103965780635c975abb146103b65780638456cb59146103ed57600080fd5b80633f4ba83a146103255780634f1ef2861461033a57806352d1902d1461034d57600080fd5b8063248a9ca3116101a0578063248a9ca314610256578063252f07bf146102b35780632f2ff15d146102e557806336568abe1461030557600080fd5b806301ffc9a7146101c7578063116191b6146101fc57806321fc65f214610234575b600080fd5b3480156101d357600080fd5b506101e76101e23660046121a7565b61068a565b60405190151581526020015b60405180910390f35b34801561020857600080fd5b5060005461021c906001600160a01b031681565b6040516001600160a01b0390911681526020016101f3565b34801561024057600080fd5b5061025461024f366004612247565b610723565b005b34801561026257600080fd5b506102a56102713660046122ba565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101f3565b3480156102bf57600080fd5b506002546101e79074010000000000000000000000000000000000000000900460ff1681565b3480156102f157600080fd5b506102546103003660046122d3565b6108cc565b34801561031157600080fd5b506102546103203660046122d3565b610916565b34801561033157600080fd5b50610254610967565b610254610348366004612332565b61099c565b34801561035957600080fd5b506102a56109bb565b34801561036e57600080fd5b506102a57f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a81565b3480156103a257600080fd5b5060025461021c906001600160a01b031681565b3480156103c257600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101e7565b3480156103f957600080fd5b506102546109ea565b34801561040e57600080fd5b506102a57f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b34801561044257600080fd5b506101e76104513660046122d3565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156104a757600080fd5b506102546104b636600461243b565b610a1c565b3480156104c757600080fd5b506102546104d6366004612458565b610baf565b3480156104e757600080fd5b506102546104f636600461243b565b610d5d565b34801561050757600080fd5b5061025461051636600461243b565b610e11565b34801561052757600080fd5b506102a5600081565b34801561053c57600080fd5b506105796040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101f3919061251f565b34801561059257600080fd5b506102546105a1366004612570565b610ecb565b3480156105b257600080fd5b506102546105c13660046122d3565b6111f0565b3480156105d257600080fd5b506101e76105e136600461243b565b60016020526000908152604090205460ff1681565b34801561060257600080fd5b506102546106113660046125bb565b611234565b34801561062257600080fd5b506102546106313660046125fc565b61134b565b34801561064257600080fd5b506102a57f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b34801561067657600080fd5b5061025461068536600461269b565b611596565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061071d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61072b6115ec565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107558161166d565b61075d611677565b6001600160a01b03851660009081526001602052604090205460ff166107af576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546107c9906001600160a01b038781169116866116d5565b6000546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690635131ab599061081a9088908a90899089908990600401612701565b600060405180830381600087803b15801561083457600080fd5b505af1158015610848573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167f6478cbb6e28c0823c691dfd74c01c985634faddd4c401b990fe4ec26277ea8d586868660405161089393929190612744565b60405180910390a3506108c560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546109068161166d565b610910838361176f565b50505050565b6001600160a01b0381163314610958576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610962828261183e565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6109918161166d565b6109996118e4565b50565b6109a4611956565b6109ad82611a26565b6109b78282611a31565b5050565b60006109c5611b55565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a148161166d565b610999611bb7565b6000610a278161166d565b6001600160a01b038216610a67576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254610a9e907f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4906001600160a01b031661183e565b50600254610ad6907f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a906001600160a01b031661183e565b50610b017f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48361176f565b50610b2c7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a8361176f565b50600254604080516001600160a01b03928316815291841660208301527f4d3470c839d3c4dd664eec934b920c12fe0966e3185103dd40149496815df2b6910160405180910390a150600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b610bb76115ec565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610be18161166d565b610be9611677565b6001600160a01b03861660009081526001602052604090205460ff16610c3b576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610c55906001600160a01b038881169116876116d5565b6000546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063aa0c0fc190610ca89089908b908a908a908a908a90600401612813565b600060405180830381600087803b158015610cc257600080fd5b505af1158015610cd6573d6000803e3d6000fd5b50505050856001600160a01b0316876001600160a01b03167f7b53ec10a80164e60591c43d9c222e9354886981b880a3fba19c9ceb77fb972187878787604051610d23949392919061286a565b60405180910390a350610d5560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a610d878161166d565b6001600160a01b038216610dc7576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216600081815260016020526040808220805460ff19169055517f51085ddf9ebdded84b76e829eb58c4078e4b5bdf97d9a94723f336039da467919190a25050565b7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a610e3b8161166d565b6001600160a01b038216610e7b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166000818152600160208190526040808320805460ff1916909217909155517faab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a549190a25050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f165750825b905060008267ffffffffffffffff166001148015610f335750303b155b905081158015610f41575080155b15610f78576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fd95784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0388161580610ff657506001600160a01b038716155b8061100857506001600160a01b038616155b1561103f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611047611c12565b61104f611c1a565b611057611c12565b61105f611c2a565b600080546001600160a01b03808b167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617835560028054918b16919092161790556110ad908761176f565b506110d87f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8761176f565b506111037f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8861176f565b5061112e7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48861176f565b506111597f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a8761176f565b506111847f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a8861176f565b5083156111e65784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461122a8161166d565b610910838361183e565b61123c6115ec565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46112668161166d565b61126e611677565b6001600160a01b03831660009081526001602052604090205460ff166112c0576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112d46001600160a01b03841685846116d5565b826001600160a01b0316846001600160a01b03167fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb8460405161131991815260200190565b60405180910390a35061096260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6113536115ec565b61135b611677565b60025474010000000000000000000000000000000000000000900460ff166113af576040517f73cba66300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03841660009081526001602052604090205460ff16611401576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015611461573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114859190612896565b905061149c6001600160a01b038616333087611c3a565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038616907f1dafa057cc5c3bccb5ad974129a2bccd3c74002d9dfd7062404ba9523b18d6ae9089908990859085906370a0823190602401602060405180830381865afa158015611523573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115479190612896565b61155191906128af565b87876040516115649594939291906128e9565b60405180910390a250610d5560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60006115a18161166d565b506002805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611667576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6109998133611c73565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16156116d3576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040516001600160a01b0383811660248301526044820183905261096291859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d00565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611834576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556117ea3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061071d565b600091505061071d565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611834576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061071d565b6118ec611d7c565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806119ef57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166119e37f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b156116d3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006109b78161166d565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611aa9575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611aa691810190612896565b60015b611aef576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611b4b576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611ae6565b6109628383611dd7565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146116d3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611bbf611677565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611938565b6116d3611e2d565b611c22611e2d565b6116d3611e94565b611c32611e2d565b6116d3611e9c565b6040516001600160a01b0384811660248301528381166044830152606482018390526109109186918216906323b872dd90608401611702565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166109b7576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611ae6565b6000611d156001600160a01b03841683611ecf565b90508051600014158015611d3a575080806020019051810190611d389190612922565b155b15610962576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401611ae6565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166116d3576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611de082611ee4565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611e25576109628282611f8c565b6109b7612002565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166116d3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611749611e2d565b611ea4611e2d565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff19169055565b6060611edd8383600061203a565b9392505050565b806001600160a01b03163b600003611f33576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611ae6565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611fa9919061293f565b600060405180830381855af49150503d8060008114611fe4576040519150601f19603f3d011682016040523d82523d6000602084013e611fe9565b606091505b5091509150611ff98583836120f0565b95945050505050565b34156116d3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081471015612078576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401611ae6565b600080856001600160a01b03168486604051612094919061293f565b60006040518083038185875af1925050503d80600081146120d1576040519150601f19603f3d011682016040523d82523d6000602084013e6120d6565b606091505b50915091506120e68683836120f0565b9695505050505050565b6060826121055761210082612165565b611edd565b815115801561211c57506001600160a01b0384163b155b1561215e576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611ae6565b5080611edd565b8051156121755780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602082840312156121b957600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611edd57600080fd5b6001600160a01b038116811461099957600080fd5b60008083601f84011261221057600080fd5b50813567ffffffffffffffff81111561222857600080fd5b60208301915083602082850101111561224057600080fd5b9250929050565b60008060008060006080868803121561225f57600080fd5b853561226a816121e9565b9450602086013561227a816121e9565b935060408601359250606086013567ffffffffffffffff81111561229d57600080fd5b6122a9888289016121fe565b969995985093965092949392505050565b6000602082840312156122cc57600080fd5b5035919050565b600080604083850312156122e657600080fd5b8235915060208301356122f8816121e9565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561234557600080fd5b8235612350816121e9565b9150602083013567ffffffffffffffff81111561236c57600080fd5b8301601f8101851361237d57600080fd5b803567ffffffffffffffff81111561239757612397612303565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561240357612403612303565b60405281815282820160200187101561241b57600080fd5b816020840160208301376000602083830101528093505050509250929050565b60006020828403121561244d57600080fd5b8135611edd816121e9565b60008060008060008060a0878903121561247157600080fd5b863561247c816121e9565b9550602087013561248c816121e9565b945060408701359350606087013567ffffffffffffffff8111156124af57600080fd5b6124bb89828a016121fe565b909450925050608087013567ffffffffffffffff8111156124db57600080fd5b87016080818a0312156124ed57600080fd5b809150509295509295509295565b60005b838110156125165781810151838201526020016124fe565b50506000910152565b602081526000825180602084015261253e8160408501602087016124fb565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008060006060848603121561258557600080fd5b8335612590816121e9565b925060208401356125a0816121e9565b915060408401356125b0816121e9565b809150509250925092565b6000806000606084860312156125d057600080fd5b83356125db816121e9565b925060208401356125eb816121e9565b929592945050506040919091013590565b6000806000806000806080878903121561261557600080fd5b863567ffffffffffffffff81111561262c57600080fd5b61263889828a016121fe565b909750955050602087013561264c816121e9565b935060408701359250606087013567ffffffffffffffff81111561266f57600080fd5b61267b89828a016121fe565b979a9699509497509295939492505050565b801515811461099957600080fd5b6000602082840312156126ad57600080fd5b8135611edd8161268d565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b03861681526001600160a01b03851660208201528360408201526080606082015260006127396080830184866126b8565b979650505050505050565b838152604060208201526000611ff96040830184866126b8565b6000813561276b816121e9565b6001600160a01b031683526020820135612784816121e9565b6001600160a01b03166020840152604082810135908401526060820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe10181126127d257600080fd5b820160208101903567ffffffffffffffff8111156127ef57600080fd5b8036038213156127fe57600080fd5b60806060860152611ff96080860182846126b8565b6001600160a01b03871681526001600160a01b038616602082015284604082015260a06060820152600061284b60a0830185876126b8565b828103608084015261285d818561275e565b9998505050505050505050565b8481526060602082015260006128846060830185876126b8565b8281036040840152612739818561275e565b6000602082840312156128a857600080fd5b5051919050565b8181038181111561071d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6060815260006128fd6060830187896126b8565b85602084015282810360408401526129168185876126b8565b98975050505050505050565b60006020828403121561293457600080fd5b8151611edd8161268d565b600082516129518184602087016124fb565b919091019291505056fea26469706673582212207a20ae6f4de44d8614b3f15643f6f6aea60080c2e642775549b18270202b098464736f6c634300081a0033", + Bin: "0x60a060405230608052348015601357600080fd5b5060805161299161003d600039600081816119610152818161198a0152611b6001526129916000f3fe6080604052600436106101c25760003560e01c806385f438c1116100f7578063ad3cb1cc11610095578063d9caed1211610064578063d9caed12146105f6578063e609055e14610616578063e63ab1e914610636578063eab103df1461066a57600080fd5b8063ad3cb1cc14610530578063c0c53b8b14610586578063d547741f146105a6578063d936547e146105c657600080fd5b806399a3c356116100d157806399a3c356146104bb5780639a590427146104db5780639b19251a146104fb578063a217fddf1461051b57600080fd5b806385f438c11461040257806391d1485414610436578063950837aa1461049b57600080fd5b80633f4ba83a11610164578063570618e11161013e578063570618e1146103625780635b112591146103965780635c975abb146103b65780638456cb59146103ed57600080fd5b80633f4ba83a146103255780634f1ef2861461033a57806352d1902d1461034d57600080fd5b8063248a9ca3116101a0578063248a9ca314610256578063252f07bf146102b35780632f2ff15d146102e557806336568abe1461030557600080fd5b806301ffc9a7146101c7578063116191b6146101fc57806321fc65f214610234575b600080fd5b3480156101d357600080fd5b506101e76101e23660046121a7565b61068a565b60405190151581526020015b60405180910390f35b34801561020857600080fd5b5060005461021c906001600160a01b031681565b6040516001600160a01b0390911681526020016101f3565b34801561024057600080fd5b5061025461024f366004612247565b610723565b005b34801561026257600080fd5b506102a56102713660046122ba565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101f3565b3480156102bf57600080fd5b506002546101e79074010000000000000000000000000000000000000000900460ff1681565b3480156102f157600080fd5b506102546103003660046122d3565b6108cc565b34801561031157600080fd5b506102546103203660046122d3565b610916565b34801561033157600080fd5b50610254610967565b610254610348366004612332565b61099c565b34801561035957600080fd5b506102a56109bb565b34801561036e57600080fd5b506102a57f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a81565b3480156103a257600080fd5b5060025461021c906001600160a01b031681565b3480156103c257600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101e7565b3480156103f957600080fd5b506102546109ea565b34801561040e57600080fd5b506102a57f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b34801561044257600080fd5b506101e76104513660046122d3565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156104a757600080fd5b506102546104b636600461243b565b610a1c565b3480156104c757600080fd5b506102546104d6366004612458565b610baf565b3480156104e757600080fd5b506102546104f636600461243b565b610d5d565b34801561050757600080fd5b5061025461051636600461243b565b610e11565b34801561052757600080fd5b506102a5600081565b34801561053c57600080fd5b506105796040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101f3919061251f565b34801561059257600080fd5b506102546105a1366004612570565b610ecb565b3480156105b257600080fd5b506102546105c13660046122d3565b6111f0565b3480156105d257600080fd5b506101e76105e136600461243b565b60016020526000908152604090205460ff1681565b34801561060257600080fd5b506102546106113660046125bb565b611234565b34801561062257600080fd5b506102546106313660046125fc565b61134b565b34801561064257600080fd5b506102a57f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b34801561067657600080fd5b5061025461068536600461269b565b611596565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061071d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61072b6115ec565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107558161166d565b61075d611677565b6001600160a01b03851660009081526001602052604090205460ff166107af576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546107c9906001600160a01b038781169116866116d5565b6000546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690635131ab599061081a9088908a90899089908990600401612701565b600060405180830381600087803b15801561083457600080fd5b505af1158015610848573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167f6478cbb6e28c0823c691dfd74c01c985634faddd4c401b990fe4ec26277ea8d586868660405161089393929190612744565b60405180910390a3506108c560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546109068161166d565b610910838361176f565b50505050565b6001600160a01b0381163314610958576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610962828261183e565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6109918161166d565b6109996118e4565b50565b6109a4611956565b6109ad82611a26565b6109b78282611a31565b5050565b60006109c5611b55565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a148161166d565b610999611bb7565b6000610a278161166d565b6001600160a01b038216610a67576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254610a9e907f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4906001600160a01b031661183e565b50600254610ad6907f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a906001600160a01b031661183e565b50610b017f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48361176f565b50610b2c7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a8361176f565b50600254604080516001600160a01b03928316815291841660208301527f4d3470c839d3c4dd664eec934b920c12fe0966e3185103dd40149496815df2b6910160405180910390a150600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b610bb76115ec565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610be18161166d565b610be9611677565b6001600160a01b03861660009081526001602052604090205460ff16610c3b576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610c55906001600160a01b038881169116876116d5565b6000546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063aa0c0fc190610ca89089908b908a908a908a908a90600401612813565b600060405180830381600087803b158015610cc257600080fd5b505af1158015610cd6573d6000803e3d6000fd5b50505050856001600160a01b0316876001600160a01b03167f7b53ec10a80164e60591c43d9c222e9354886981b880a3fba19c9ceb77fb972187878787604051610d23949392919061286a565b60405180910390a350610d5560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a610d878161166d565b6001600160a01b038216610dc7576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216600081815260016020526040808220805460ff19169055517f51085ddf9ebdded84b76e829eb58c4078e4b5bdf97d9a94723f336039da467919190a25050565b7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a610e3b8161166d565b6001600160a01b038216610e7b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166000818152600160208190526040808320805460ff1916909217909155517faab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a549190a25050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f165750825b905060008267ffffffffffffffff166001148015610f335750303b155b905081158015610f41575080155b15610f78576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fd95784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0388161580610ff657506001600160a01b038716155b8061100857506001600160a01b038616155b1561103f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611047611c12565b61104f611c1a565b611057611c12565b61105f611c2a565b600080546001600160a01b03808b167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617835560028054918b16919092161790556110ad908761176f565b506110d87f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8761176f565b506111037f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8861176f565b5061112e7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48861176f565b506111597f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a8761176f565b506111847f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a8861176f565b5083156111e65784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461122a8161166d565b610910838361183e565b61123c6115ec565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46112668161166d565b61126e611677565b6001600160a01b03831660009081526001602052604090205460ff166112c0576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112d46001600160a01b03841685846116d5565b826001600160a01b0316846001600160a01b03167fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb8460405161131991815260200190565b60405180910390a35061096260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6113536115ec565b61135b611677565b60025474010000000000000000000000000000000000000000900460ff166113af576040517f73cba66300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03841660009081526001602052604090205460ff16611401576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015611461573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114859190612896565b905061149c6001600160a01b038616333087611c3a565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038616907f1dafa057cc5c3bccb5ad974129a2bccd3c74002d9dfd7062404ba9523b18d6ae9089908990859085906370a0823190602401602060405180830381865afa158015611523573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115479190612896565b61155191906128af565b87876040516115649594939291906128e9565b60405180910390a250610d5560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60006115a18161166d565b506002805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611667576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6109998133611c73565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16156116d3576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040516001600160a01b0383811660248301526044820183905261096291859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d00565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611834576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556117ea3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061071d565b600091505061071d565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611834576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061071d565b6118ec611d7c565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806119ef57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166119e37f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b156116d3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006109b78161166d565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611aa9575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611aa691810190612896565b60015b611aef576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611b4b576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611ae6565b6109628383611dd7565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146116d3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611bbf611677565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611938565b6116d3611e2d565b611c22611e2d565b6116d3611e94565b611c32611e2d565b6116d3611e9c565b6040516001600160a01b0384811660248301528381166044830152606482018390526109109186918216906323b872dd90608401611702565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166109b7576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611ae6565b6000611d156001600160a01b03841683611ecf565b90508051600014158015611d3a575080806020019051810190611d389190612922565b155b15610962576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401611ae6565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166116d3576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611de082611ee4565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611e25576109628282611f8c565b6109b7612002565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166116d3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611749611e2d565b611ea4611e2d565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff19169055565b6060611edd8383600061203a565b9392505050565b806001600160a01b03163b600003611f33576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611ae6565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611fa9919061293f565b600060405180830381855af49150503d8060008114611fe4576040519150601f19603f3d011682016040523d82523d6000602084013e611fe9565b606091505b5091509150611ff98583836120f0565b95945050505050565b34156116d3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081471015612078576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401611ae6565b600080856001600160a01b03168486604051612094919061293f565b60006040518083038185875af1925050503d80600081146120d1576040519150601f19603f3d011682016040523d82523d6000602084013e6120d6565b606091505b50915091506120e68683836120f0565b9695505050505050565b6060826121055761210082612165565b611edd565b815115801561211c57506001600160a01b0384163b155b1561215e576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611ae6565b5080611edd565b8051156121755780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602082840312156121b957600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611edd57600080fd5b6001600160a01b038116811461099957600080fd5b60008083601f84011261221057600080fd5b50813567ffffffffffffffff81111561222857600080fd5b60208301915083602082850101111561224057600080fd5b9250929050565b60008060008060006080868803121561225f57600080fd5b853561226a816121e9565b9450602086013561227a816121e9565b935060408601359250606086013567ffffffffffffffff81111561229d57600080fd5b6122a9888289016121fe565b969995985093965092949392505050565b6000602082840312156122cc57600080fd5b5035919050565b600080604083850312156122e657600080fd5b8235915060208301356122f8816121e9565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561234557600080fd5b8235612350816121e9565b9150602083013567ffffffffffffffff81111561236c57600080fd5b8301601f8101851361237d57600080fd5b803567ffffffffffffffff81111561239757612397612303565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561240357612403612303565b60405281815282820160200187101561241b57600080fd5b816020840160208301376000602083830101528093505050509250929050565b60006020828403121561244d57600080fd5b8135611edd816121e9565b60008060008060008060a0878903121561247157600080fd5b863561247c816121e9565b9550602087013561248c816121e9565b945060408701359350606087013567ffffffffffffffff8111156124af57600080fd5b6124bb89828a016121fe565b909450925050608087013567ffffffffffffffff8111156124db57600080fd5b87016080818a0312156124ed57600080fd5b809150509295509295509295565b60005b838110156125165781810151838201526020016124fe565b50506000910152565b602081526000825180602084015261253e8160408501602087016124fb565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008060006060848603121561258557600080fd5b8335612590816121e9565b925060208401356125a0816121e9565b915060408401356125b0816121e9565b809150509250925092565b6000806000606084860312156125d057600080fd5b83356125db816121e9565b925060208401356125eb816121e9565b929592945050506040919091013590565b6000806000806000806080878903121561261557600080fd5b863567ffffffffffffffff81111561262c57600080fd5b61263889828a016121fe565b909750955050602087013561264c816121e9565b935060408701359250606087013567ffffffffffffffff81111561266f57600080fd5b61267b89828a016121fe565b979a9699509497509295939492505050565b801515811461099957600080fd5b6000602082840312156126ad57600080fd5b8135611edd8161268d565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b03861681526001600160a01b03851660208201528360408201526080606082015260006127396080830184866126b8565b979650505050505050565b838152604060208201526000611ff96040830184866126b8565b6000813561276b816121e9565b6001600160a01b031683526020820135612784816121e9565b6001600160a01b03166020840152604082810135908401526060820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe10181126127d257600080fd5b820160208101903567ffffffffffffffff8111156127ef57600080fd5b8036038213156127fe57600080fd5b60806060860152611ff96080860182846126b8565b6001600160a01b03871681526001600160a01b038616602082015284604082015260a06060820152600061284b60a0830185876126b8565b828103608084015261285d818561275e565b9998505050505050505050565b8481526060602082015260006128846060830185876126b8565b8281036040840152612739818561275e565b6000602082840312156128a857600080fd5b5051919050565b8181038181111561071d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6060815260006128fd6060830187896126b8565b85602084015282810360408401526129168185876126b8565b98975050505050505050565b60006020828403121561293457600080fd5b8151611edd8161268d565b600082516129518184602087016124fb565b919091019291505056fea264697066735822122032725bd2b7dce3e2ae6a3b0195af5832fc237f7d832025eeb8bb10b9c42be63964736f6c634300081a0033", } // ERC20CustodyABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/erc20custody.t.sol/erc20custodytest.go b/v2/pkg/erc20custody.t.sol/erc20custodytest.go index acb9821c0..43e91485b 100644 --- a/v2/pkg/erc20custody.t.sol/erc20custodytest.go +++ b/v2/pkg/erc20custody.t.sol/erc20custodytest.go @@ -67,7 +67,7 @@ type StdInvariantFuzzSelector struct { // ERC20CustodyTestMetaData contains all meta data concerning the ERC20CustodyTest contract. var ERC20CustodyTestMetaData = &bind.MetaData{ ABI: "[{\"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\":\"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\":\"WHITELISTER_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\":\"testDepositLegacy\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositLegacyFailsIfNotSupported\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositLegacyFailsIfTokenNotWhitelisted\",\"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\":\"testForwardCallToReceiveERC20ThroughCustodyFailsIfReceiverIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotWithdrawer\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveERC20ThroughCustodyTogglePause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveNoParamsThroughCustody\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTSSUpgrade\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTSSUpgradeFailsIfSenderIsNotTSSUpdater\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTSSUpgradeFailsIfZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUnwhitelist\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUnwhitelistFailsIfSenderIsNotWhitelister\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUnwhitelistFailsIfZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpgradeAndWithdraw\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWhitelist\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWhitelistFailsIfSenderIsNotWhitelister\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWhitelistFailsIfZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallFailsIfTokenIsNotWhitelisted\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevertFailsIfTokenIsNotWhitelisted\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevertThroughCustody\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevertThroughCustodyFailsIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevertThroughCustodyFailsIfReceiverIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevertThroughCustodyFailsIfSenderIsNotWithdrawer\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawFailsIfTokenIsNotWhitelisted\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawThroughCustody\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawThroughCustodyFailsIfSenderIsNotWithdrawer\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Called\",\"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\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposited\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposited\",\"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\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\":\"ReceivedOnCall\",\"inputs\":[],\"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\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unwhitelisted\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedCustodyTSSAddress\",\"inputs\":[{\"name\":\"oldTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedGatewayTSSAddress\",\"inputs\":[{\"name\":\"oldTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Whitelisted\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawn\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawnAndCalled\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"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\":\"WithdrawnAndReverted\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawnV2\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"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\":\"ConnectorInitialized\",\"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\":\"LegacyMethodsNotSupported\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotAllowedToCallOnCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotAllowedToCallOnRevert\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotWhitelisted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotWhitelistedInCustody\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PayloadSizeExceeded\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061f9ad8061003c6000396000f3fe608060405234801561001057600080fd5b50600436106103365760003560e01c806385f438c1116101b2578063b5508aa9116100f9578063eb1ce7f9116100a2578063fa2a70741161007c578063fa2a7074146105b0578063fa7626d4146105b8578063fb176c12146105c5578063fe8e5f1b146105cd57600080fd5b8063eb1ce7f914610598578063f0c8e7e0146105a0578063f4221f08146105a857600080fd5b8063cbd57e2f116100d3578063cbd57e2f14610561578063e20c9f7114610569578063e63ab1e91461057157600080fd5b8063b5508aa914610539578063ba414fa614610541578063c713f8271461055957600080fd5b8063a3f9d0e01161015b578063af298bb111610135578063af298bb114610521578063b0464fdc14610529578063b421ca701461053157600080fd5b8063a3f9d0e0146104ea578063a4943deb146104f2578063a783c789146104fa57600080fd5b80639918c1c21161018c5780639918c1c2146104d25780639fc7fd55146104da578063a217fddf146104e257600080fd5b806385f438c11461048e5780639158c623146104b5578063916a17c6146104bd57600080fd5b806349c783dd1161028157806366d9a9a01161022a57806371149c941161020457806371149c94146104615780637e91c50f1461046957806382c529921461047157806385226c811461047957600080fd5b806366d9a9a01461043c5780636a621854146104515780637099d6f81461045957600080fd5b806352ff59391161025b57806352ff5939146103d8578063570618e1146103e05780635d62c8601461041557600080fd5b806349c783dd146103c05780634df42da1146103c857806351ecdf3c146103d057600080fd5b80632ade3880116102e35780633e73ecb4116102bd5780633e73ecb4146103a85780633ee92923146103b05780633f7286f4146103b857600080fd5b80632ade3880146103835780632be6a162146103985780633e5e3c23146103a057600080fd5b80631779672f116103145780631779672f146103555780631ed7831c1461035d578063284cb9291461037b57600080fd5b8063070f2ad01461033b5780630a9254e4146103455780630eee72a91461034d575b600080fd5b6103436105d5565b005b6103436107c1565b610343611248565b6103436114c5565b610365611603565b604051610372919061c44e565b60405180910390f35b610343611665565b61038b611946565b604051610372919061c4ea565b610343611a88565b610365611c34565b610343611c94565b6103436121e7565b6103656122a3565b610343612303565b610343612640565b610343612798565b610343612956565b6104077f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a81565b604051908152602001610372565b6104077f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b610444613186565b604051610372919061c650565b6103436132f3565b6103436133ac565b61034361365a565b610343613e67565b610343613ff2565b610481614264565b604051610372919061c6ee565b6104077f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b610343614334565b6104c5614402565b604051610372919061c765565b6103436144e8565b6103436147cc565b610407600081565b61034361489a565b610343614e79565b6104077f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b61034361508c565b6104c5615630565b610343615716565b610481615bdc565b610549615cac565b6040519015158152602001610372565b610343615d80565b6103436169d1565b610365616a6f565b6104077f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b610343616acf565b610343616bdb565b610343616d87565b610343616fde565b601f546105499060ff1681565b6103436172bf565b610343617916565b6027546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b15801561064757600080fd5b505af115801561065b573d6000803e3d6000fd5b5050602754604080516001600160a01b039092166024830152600060448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250610712919060040161c7fc565b600060405180830381600087803b15801561072c57600080fd5b505af1158015610740573d6000803e3d6000fd5b50506021546025546040517f950837aa0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063950837aa91506024015b600060405180830381600087803b1580156107a757600080fd5b505af11580156107bb573d6000803e3d6000fd5b50505050565b602580547fffffffffffffffffffffffff000000000000000000000000000000000000000090811630179091556026805482166112341790556027805482166156781790556028805490911661987617905560405161081f9061c37b565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f0801580156108a4573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516108e99061c37b565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f08015801561096d573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c000000000000000000000000000000000000602082015260275460255492519086169481019490945260448401929092529092166064820152600091610a4c916084015b60408051601f198184030181529190526020810180516001600160e01b03167fc0c53b8b00000000000000000000000000000000000000000000000000000000179052617aef565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0384811682029290921792839055604080518082018252601081527f4552433230437573746f64792e736f6c0000000000000000000000000000000060208201526027546025549251939095048416602484015293831660448301529091166064820152919250610aef91608401610a04565b602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383811691909117909155604080518082018252601a81527f5a657461436f6e6e6563746f724e6f6e4e61746976652e736f6c0000000000006020820152601f546024805460275460255495516101009094048716928401929092528516604483015284166064820152919092166084820152919250610be19160a40160408051601f198184030181529190526020810180516001600160e01b03167ff8c8765e00000000000000000000000000000000000000000000000000000000179052617aef565b602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038316179055604051909150610c239061c388565b604051809103906000f080158015610c3f573d6000803e3d6000fd5b50602080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556027546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b158015610ceb57600080fd5b505af1158015610cff573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610d7557600080fd5b505af1158015610d89573d6000803e3d6000fd5b5050601f546021546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261010090920416925063ae7a3a6f9150602401600060405180830381600087803b158015610df457600080fd5b505af1158015610e08573d6000803e3d6000fd5b5050601f546022546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526101009092041692506310188aef9150602401600060405180830381600087803b158015610e7357600080fd5b505af1158015610e87573d6000803e3d6000fd5b50506021546023546040517f9b19251a0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015291169250639b19251a9150602401600060405180830381600087803b158015610eed57600080fd5b505af1158015610f01573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610f6357600080fd5b505af1158015610f77573d6000803e3d6000fd5b50506023546025546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f42406024820152911692506340c10f199150604401600060405180830381600087803b158015610fe657600080fd5b505af1158015610ffa573d6000803e3d6000fd5b5050602480546025546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f4240938101939093521692506340c10f199150604401600060405180830381600087803b15801561106b57600080fd5b505af115801561107f573d6000803e3d6000fd5b50506023546021546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12060248201529116925063a9059cbb91506044016020604051808303816000875af11580156110f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611117919061c80f565b506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561119857600080fd5b505af11580156111ac573d6000803e3d6000fd5b5050604080516080810182526025546001600160a01b039081168252602354811660208084019182526001848601908152855191820190955260008152606084018190528351602980549185167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161781559251602a8054919095169116179092559251602b55909350909150602c906107bb908261c8f4565b602354602654604051620186a0602482018190526001600160a01b03938416604483015292909116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167fc513169100000000000000000000000000000000000000000000000000000000179052602554905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b15801561131a57600080fd5b505af115801561132e573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250611404919060040161c7fc565b600060405180830381600087803b15801561141e57600080fd5b505af1158015611432573d6000803e3d6000fd5b50506021546020546023546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f2945061148f9392831692909116908790879060040161c9b3565b600060405180830381600087803b1580156114a957600080fd5b505af11580156114bd573d6000803e3d6000fd5b505050505050565b6023546026546040516000602482018190526001600160a01b039384166044830152929091166064820152819060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a200000000000000000000000000000000000000000000000000000000179052602754905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b15801561159457600080fd5b505af11580156115a8573d6000803e3d6000fd5b5050604051630618f58760e51b81527f951e19ed000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401611404565b6060601680548060200260200160405190810160405280929190818152602001828054801561165b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161163d575b5050505050905090565b602154602480546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600093919091169163d936547e9101602060405180830381865afa1580156116ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f2919061c80f565b90506116ff600082617b0e565b6021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561177457600080fd5b505af1158015611788573d6000803e3d6000fd5b50506024546040516001600160a01b0390911692507faab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a549150600090a260255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561181d57600080fd5b505af1158015611831573d6000803e3d6000fd5b5050602154602480546040517f9b19251a0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015292169350639b19251a925001600060405180830381600087803b15801561189657600080fd5b505af11580156118aa573d6000803e3d6000fd5b5050602154602480546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529216935063d936547e925001602060405180830381865afa158015611912573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611936919061c80f565b9050611943600182617b0e565b50565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015611a7f57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015611a685783829060005260206000200180546119db9061c860565b80601f0160208091040260200160405190810160405280929190818152602001828054611a079061c860565b8015611a545780601f10611a2957610100808354040283529160200191611a54565b820191906000526020600020905b815481529060010190602001808311611a3757829003601f168201915b5050505050815260200190600101906119bc565b50505050815250508152602001906001019061196a565b50505050905090565b60405163ca669fa760e01b81526101236004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611ad657600080fd5b505af1158015611aea573d6000803e3d6000fd5b50506040805161012360248201527f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a60448083019190915282518083039091018152606490910182526020810180516001600160e01b03167fe2517d3f0000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250611bb6919060040161c7fc565b600060405180830381600087803b158015611bd057600080fd5b505af1158015611be4573d6000803e3d6000fd5b5050602154602480546040517f9b19251a0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015292169350639b19251a92500161078d565b6060601880548060200260200160405190810160405280929190818152602001828054801561165b576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161163d575050505050905090565b6023546026546040516370a0823160e01b81526001600160a01b039182166004820152620186a09260009216906370a0823190602401602060405180830381865afa158015611ce7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d0b919061c9ea565b9050611d18816000617b90565b6023546021546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611d69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d8d919061c9ea565b602654604080516001600160a01b039283166024820152604480820188905282518083039091018152606490910182526020810180516001600160e01b03167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260235491517ff30c7ba300000000000000000000000000000000000000000000000000000000815293945092737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba392611e4c92911690600090869060040161ca03565b600060405180830381600087803b158015611e6657600080fd5b505af1158015611e7a573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015611ef357600080fd5b505af1158015611f07573d6000803e3d6000fd5b50506023546026546040518881526001600160a01b039283169450911691507fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb9060200160405180910390a360275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611fac57600080fd5b505af1158015611fc0573d6000803e3d6000fd5b50506021546026546023546040517fd9caed120000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082166024820152604481018990529116925063d9caed129150606401600060405180830381600087803b15801561203857600080fd5b505af115801561204c573d6000803e3d6000fd5b50506023546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa15801561209f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c3919061c9ea565b90506120cf8186617b90565b6023546021546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015612120573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612144919061c9ea565b905061215981612154888761ca5a565b617b90565b602354601f546040516370a0823160e01b81526101009091046001600160a01b03908116600483015260009216906370a0823190602401602060405180830381865afa1580156121ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d1919061c9ea565b90506121de816000617b90565b50505050505050565b602354602654604051620186a0602482018190526001600160a01b03938416604483015292909116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a200000000000000000000000000000000000000000000000000000000179052602554905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401611300565b6060601780548060200260200160405190810160405280929190818152602001828054801561165b576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161163d575050505050905090565b6021546040517feab103df000000000000000000000000000000000000000000000000000000008152600060048201526001600160a01b039091169063eab103df90602401600060405180830381600087803b15801561236257600080fd5b505af1158015612376573d6000803e3d6000fd5b50506023546021546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424060248201529116925063095ea7b391506044016020604051808303816000875af11580156123ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061240e919061c80f565b50602480546021546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424093810193909352169063095ea7b3906044016020604051808303816000875af1158015612481573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124a5919061c80f565b50604080517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152815160058183030181526025820192839052630618f58760e51b9092527f73cba663000000000000000000000000000000000000000000000000000000006029820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906049015b600060405180830381600087803b15801561254d57600080fd5b505af1158015612561573d6000803e3d6000fd5b505060215460265460405160609190911b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208201526001600160a01b03909116925063e609055e915060340160408051601f19818403018152908290526023547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261260b926001600160a01b03909116906103e890879060040161ca6d565b600060405180830381600087803b15801561262557600080fd5b505af1158015612639573d6000803e3d6000fd5b5050505050565b6025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156126b257600080fd5b505af11580156126c6573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561273657600080fd5b505af115801561274a573d6000803e3d6000fd5b50506021546040517f950837aa000000000000000000000000000000000000000000000000000000008152600060048201526001600160a01b03909116925063950837aa915060240161078d565b6023546026546040516001602482018190526001600160a01b03938416604483015292909116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a200000000000000000000000000000000000000000000000000000000179052602754905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561286757600080fd5b505af115801561287b573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156128eb57600080fd5b505af11580156128ff573d6000803e3d6000fd5b50506021546023546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321fc65f2935061148f9260009216908790879060040161c9b3565b6021546040517f91d148540000000000000000000000000000000000000000000000000000000081527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4600482015261432160248201819052916000916001600160a01b03909116906391d1485490604401602060405180830381865afa1580156129e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a09919061c80f565b9050612a1481617be8565b6021546040517f91d148540000000000000000000000000000000000000000000000000000000081527f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a60048201526001600160a01b03848116602483015260009216906391d1485490604401602060405180830381865afa158015612a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ac2919061c80f565b9050612acd81617be8565b6021546027546040517f91d148540000000000000000000000000000000000000000000000000000000081527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460048201526001600160a01b03918216602482015260009291909116906391d1485490604401602060405180830381865afa158015612b5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b81919061c80f565b9050612b8c81617c62565b6021546027546040517f91d148540000000000000000000000000000000000000000000000000000000081527f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a60048201526001600160a01b03918216602482015260009291909116906391d1485490604401602060405180830381865afa158015612c1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c40919061c80f565b9050612c4b81617c62565b6025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b158015612cbd57600080fd5b505af1158015612cd1573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015612d4a57600080fd5b505af1158015612d5e573d6000803e3d6000fd5b5050602754604080516001600160a01b03928316815291891660208301527f4d3470c839d3c4dd664eec934b920c12fe0966e3185103dd40149496815df2b6935001905060405180910390a16021546040517f950837aa0000000000000000000000000000000000000000000000000000000081526001600160a01b0387811660048301529091169063950837aa90602401600060405180830381600087803b158015612e0a57600080fd5b505af1158015612e1e573d6000803e3d6000fd5b50505050612ea285602160009054906101000a90046001600160a01b03166001600160a01b0316635b1125916040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e9d919061caa7565b617cb4565b6021546040517f91d148540000000000000000000000000000000000000000000000000000000081527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460048201526001600160a01b038781166024830152909116906391d1485490604401602060405180830381865afa158015612f2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f4f919061c80f565b9350612f5a84617c62565b6021546040517f91d148540000000000000000000000000000000000000000000000000000000081527f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a60048201526001600160a01b038781166024830152909116906391d1485490604401602060405180830381865afa158015612fe3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613007919061c80f565b925061301283617c62565b6021546027546040517f91d148540000000000000000000000000000000000000000000000000000000081527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460048201526001600160a01b0391821660248201529116906391d1485490604401602060405180830381865afa15801561309d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130c1919061c80f565b91506130cc82617be8565b6021546027546040517f91d148540000000000000000000000000000000000000000000000000000000081527f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a60048201526001600160a01b0391821660248201529116906391d1485490604401602060405180830381865afa158015613157573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061317b919061c80f565b905061263981617be8565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015611a7f57838290600052602060002090600202016040518060400160405290816000820180546131dd9061c860565b80601f01602080910402602001604051908101604052809291908181526020018280546132099061c860565b80156132565780601f1061322b57610100808354040283529160200191613256565b820191906000526020600020905b81548152906001019060200180831161323957829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156132db57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161329d5790505b505050505081525050815260200190600101906131aa565b6023546026546040516000602482018190526001600160a01b039384166044830152929091166064820152819060840160408051601f198184030181529181526020820180516001600160e01b03167fc513169100000000000000000000000000000000000000000000000000000000179052602754905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa79060240161157a565b6021546040517feab103df000000000000000000000000000000000000000000000000000000008152600160048201526001600160a01b039091169063eab103df90602401600060405180830381600087803b15801561340b57600080fd5b505af115801561341f573d6000803e3d6000fd5b50506021546023546040517f9a5904270000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015291169250639a5904279150602401600060405180830381600087803b15801561348557600080fd5b505af1158015613499573d6000803e3d6000fd5b50506023546021546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424060248201529116925063095ea7b391506044016020604051808303816000875af115801561350d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613531919061c80f565b50602480546021546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424093810193909352169063095ea7b3906044016020604051808303816000875af11580156135a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135c8919061c80f565b50604080517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152815160058183030181526025820192839052630618f58760e51b9092527f584a7938000000000000000000000000000000000000000000000000000000006029820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090604901612533565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a09060009060250160408051808303601f19018152908290526023546020546370a0823160e01b84526001600160a01b0390811660048501529193506000929116906370a0823190602401602060405180830381865afa1580156136ee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613712919061c9ea565b905061371f816000617b90565b6023546021546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015613770573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613794919061c9ea565b601f54604080516001600160a01b0361010090930483166024820152604480820189905282518083039091018152606490910182526020810180517fa9059cbb000000000000000000000000000000000000000000000000000000006001600160e01b0390911617905260235491517ff30c7ba300000000000000000000000000000000000000000000000000000000815293945092737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba39261385a92911690600090869060040161ca03565b600060405180830381600087803b15801561387457600080fd5b505af1158015613888573d6000803e3d6000fd5b50506020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561390157600080fd5b505af1158015613915573d6000803e3d6000fd5b505050507f689a5a5cb55e795ffe4cd8b419cd3bb0a3373974c54d25f64e734d7388b93e9b601f60019054906101000a90046001600160a01b0316602960405161396092919061cbad565b60405180910390a1601f546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156139e157600080fd5b505af11580156139f5573d6000803e3d6000fd5b50506023546020546040516001600160a01b039283169450911691507fde7603a6ed5d07c9f43597ccfe9043d15b66d3284f0de321f5cdf56329e6e03590613a43908990899060299061cbcf565b60405180910390a36021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015613ac057600080fd5b505af1158015613ad4573d6000803e3d6000fd5b50506023546020546040516001600160a01b039283169450911691507f7b53ec10a80164e60591c43d9c222e9354886981b880a3fba19c9ceb77fb972190613b22908990899060299061cbcf565b60405180910390a360275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613b8357600080fd5b505af1158015613b97573d6000803e3d6000fd5b50506021546020546023546040517f99a3c3560000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506399a3c3569450613bf79392831692909116908a908a9060299060040161cbfa565b600060405180830381600087803b158015613c1157600080fd5b505af1158015613c25573d6000803e3d6000fd5b50506023546020546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a08231906024015b602060405180830381865afa158015613c79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c9d919061c9ea565b9050613ca98187617b90565b6023546021546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015613cfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d1e919061c9ea565b9050613d2e81612154898761ca5a565b602354601f546020546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526101009092046001600160a01b0390811660048401529081166024830152600092169063dd62ed3e90604401602060405180830381865afa158015613da6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dca919061c9ea565b9050613dd7816000617b90565b602354601f546040516370a0823160e01b81526101009091046001600160a01b03908116600483015260009216906370a0823190602401602060405180830381865afa158015613e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e4f919061c9ea565b9050613e5c816000617b90565b505050505050505050565b6040517f68656c6c6f000000000000000000000000000000000000000000000000000000602082015260019060009060250160408051808303601f190181529082905260275463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613f0057600080fd5b505af1158015613f14573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015613f8457600080fd5b505af1158015613f98573d6000803e3d6000fd5b50506021546023546040517f99a3c3560000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506399a3c356935061148f9260009216908790879060299060040161cbfa565b6027546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b15801561406457600080fd5b505af1158015614078573d6000803e3d6000fd5b50506021546023546040517f9a5904270000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015291169250639a5904279150602401600060405180830381600087803b1580156140de57600080fd5b505af11580156140f2573d6000803e3d6000fd5b5050604051630618f58760e51b81527f584a7938000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561416257600080fd5b505af1158015614176573d6000803e3d6000fd5b50506021546026546023546040517fd9caed120000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082166024820152600160448201529116925063d9caed129150606401600060405180830381600087803b1580156141ee57600080fd5b505af1158015614202573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156107a757600080fd5b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015611a7f5783829060005260206000200180546142a79061c860565b80601f01602080910402602001604051908101604052809291908181526020018280546142d39061c860565b80156143205780601f106142f557610100808354040283529160200191614320565b820191906000526020600020905b81548152906001019060200180831161430357829003601f168201915b505050505081526020019060010190614288565b604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156143a057600080fd5b505af11580156143b4573d6000803e3d6000fd5b50506021546040517f9a590427000000000000000000000000000000000000000000000000000000008152600060048201526001600160a01b039091169250639a590427915060240161078d565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015611a7f5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156144d057602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116144925790505b50505050508152505081526020019060010190614426565b602354602654604051600160248201526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a20000000000000000000000000000000000000000000000000000000017905260275490517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156145cc57600080fd5b505af11580156145e0573d6000803e3d6000fd5b50506021546023546040517f9a5904270000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015291169250639a5904279150602401600060405180830381600087803b15801561464657600080fd5b505af115801561465a573d6000803e3d6000fd5b5050604051630618f58760e51b81527f584a7938000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156146ca57600080fd5b505af11580156146de573d6000803e3d6000fd5b50506021546020546023546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f2945061473c939283169290911690600190879060040161c9b3565b600060405180830381600087803b15801561475657600080fd5b505af115801561476a573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561262557600080fd5b604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561483857600080fd5b505af115801561484c573d6000803e3d6000fd5b50506021546040517f9b19251a000000000000000000000000000000000000000000000000000000008152600060048201526001600160a01b039091169250639b19251a915060240161078d565b604080516004808252602480830184526020830180516001600160e01b03167f6ed701690000000000000000000000000000000000000000000000000000000017905260235460265494516370a0823160e01b81526001600160a01b0395861693810193909352620186a0946000939116916370a082319101602060405180830381865afa158015614930573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614954919061c9ea565b9050614961816000617b90565b6023546021546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156149b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906149d6919061c9ea565b601f54604080516001600160a01b0361010090930483166024820152604480820189905282518083039091018152606490910182526020810180517fa9059cbb000000000000000000000000000000000000000000000000000000006001600160e01b0390911617905260235491517ff30c7ba300000000000000000000000000000000000000000000000000000000815293945092737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba392614a9c92911690600090869060040161ca03565b600060405180830381600087803b158015614ab657600080fd5b505af1158015614aca573d6000803e3d6000fd5b50506020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015614b4357600080fd5b505af1158015614b57573d6000803e3d6000fd5b5050601f546040516101009091046001600160a01b031681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09250602001905060405180910390a16021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015614c1557600080fd5b505af1158015614c29573d6000803e3d6000fd5b50506023546020546040516001600160a01b039283169450911691507f6478cbb6e28c0823c691dfd74c01c985634faddd4c401b990fe4ec26277ea8d590614c74908990899061cc4f565b60405180910390a360275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614cd557600080fd5b505af1158015614ce9573d6000803e3d6000fd5b50506021546020546023546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f29450614d469392831692909116908a908a9060040161c9b3565b600060405180830381600087803b158015614d6057600080fd5b505af1158015614d74573d6000803e3d6000fd5b50506023546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015614dc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614deb919061c9ea565b9050614df8816000617b90565b6023546021546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015614e49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614e6d919061c9ea565b9050613d2e8185617b90565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a09060009060250160408051808303601f190181529082905260255463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614f1457600080fd5b505af1158015614f28573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250614ffe919060040161c7fc565b600060405180830381600087803b15801561501857600080fd5b505af115801561502c573d6000803e3d6000fd5b50506021546020546023546040517f99a3c3560000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506399a3c356945061148f9392831692909116908790879060299060040161cbfa565b602154604080518082018252601b81527f4552433230437573746f647955706772616465546573742e736f6c00000000006020808301919091528251908101909252600082526025546150ec936001600160a01b03908116939116617d15565b6021546023546026546040516370a0823160e01b81526001600160a01b03918216600482015292811692620186a09260009216906370a0823190602401602060405180830381865afa158015615146573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061516a919061c9ea565b9050615177816000617b90565b6023546040516370a0823160e01b81526001600160a01b03858116600483015260009216906370a0823190602401602060405180830381865afa1580156151c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906151e6919061c9ea565b602654604080516001600160a01b039283166024820152604480820188905282518083039091018152606490910182526020810180516001600160e01b03167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260235491517ff30c7ba300000000000000000000000000000000000000000000000000000000815293945092737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba3926152a592911690600090869060040161ca03565b600060405180830381600087803b1580156152bf57600080fd5b505af11580156152d3573d6000803e3d6000fd5b50506040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b0388166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561534857600080fd5b505af115801561535c573d6000803e3d6000fd5b50506023546026546040518881526001600160a01b039283169450911691507fd4dabfe72081670cc78f2ebda8e2eddaf3feebde6288dcb8fe673b3dc201b5a49060200160405180910390a360275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561540157600080fd5b505af1158015615415573d6000803e3d6000fd5b50506026546023546040517fd9caed120000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152908216602482015260448101889052908816925063d9caed129150606401600060405180830381600087803b15801561548b57600080fd5b505af115801561549f573d6000803e3d6000fd5b50506023546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156154f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615516919061c9ea565b90506155228186617b90565b6023546040516370a0823160e01b81526001600160a01b03888116600483015260009216906370a0823190602401602060405180830381865afa15801561556d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615591919061c9ea565b90506155a181612154888761ca5a565b602354601f546040516370a0823160e01b81526101009091046001600160a01b03908116600483015260009216906370a0823190602401602060405180830381865afa1580156155f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615619919061c9ea565b9050615626816000617b90565b5050505050505050565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015611a7f5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156156fe57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116156c05790505b50505050508152505081526020019060010190615654565b6021546040517feab103df000000000000000000000000000000000000000000000000000000008152600160048201526103e8916001600160a01b03169063eab103df90602401600060405180830381600087803b15801561577757600080fd5b505af115801561578b573d6000803e3d6000fd5b50506023546021546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424060248201529116925063095ea7b391506044016020604051808303816000875af11580156157ff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615823919061c80f565b50602480546021546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424093810193909352169063095ea7b3906044016020604051808303816000875af1158015615896573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906158ba919061c80f565b506023546021546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801561590c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615930919061c9ea565b90506000604051602001615967907f68656c6c6f000000000000000000000000000000000000000000000000000000815260050190565b60408051808303601f19018152908290526021546381bad6f360e01b8352600160048401819052602484018190526044840181905260648401526001600160a01b031660848301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156159ea57600080fd5b505af11580156159fe573d6000803e3d6000fd5b505060235460265460405160609190911b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208201526001600160a01b0390911692507f1dafa057cc5c3bccb5ad974129a2bccd3c74002d9dfd7062404ba9523b18d6ae915060340160408051601f1981840301815290829052615a87918790869061cc68565b60405180910390a26021546026546040805160609290921b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208301528051808303601401815260348301918290526023547fe609055e000000000000000000000000000000000000000000000000000000009092526001600160a01b039384169363e609055e93615b269391909116908890879060380161ca6d565b600060405180830381600087803b158015615b4057600080fd5b505af1158015615b54573d6000803e3d6000fd5b50505050615bd78383615b67919061cc93565b6023546021546040516370a0823160e01b81526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa158015615bb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612154919061c9ea565b505050565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015611a7f578382906000526020600020018054615c1f9061c860565b80601f0160208091040260200160405190810160405280929190818152602001828054615c4b9061c860565b8015615c985780601f10615c6d57610100808354040283529160200191615c98565b820191906000526020600020905b815481529060010190602001808311615c7b57829003601f168201915b505050505081526020019060010190615c00565b60085460009060ff1615615cc4575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015615d55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615d79919061c9ea565b1415905090565b60285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015615dd957600080fd5b505af1158015615ded573d6000803e3d6000fd5b5050602854604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250615ec3919060040161c7fc565b600060405180830381600087803b158015615edd57600080fd5b505af1158015615ef1573d6000803e3d6000fd5b50505050602160009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b158015615f4557600080fd5b505af1158015615f59573d6000803e3d6000fd5b505060285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015615fb657600080fd5b505af1158015615fca573d6000803e3d6000fd5b5050602854604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506160a0919060040161c7fc565b600060405180830381600087803b1580156160ba57600080fd5b505af11580156160ce573d6000803e3d6000fd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561612257600080fd5b505af1158015616136573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561619357600080fd5b505af11580156161a7573d6000803e3d6000fd5b50505050602160009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156161fb57600080fd5b505af115801561620f573d6000803e3d6000fd5b5050602354602654604051620186a0602482018190526001600160a01b0393841660448301529290911660648201529092506000915060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a20000000000000000000000000000000000000000000000000000000017905251630618f58760e51b81527fd93c0665000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156162f857600080fd5b505af115801561630c573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561636957600080fd5b505af115801561637d573d6000803e3d6000fd5b50506021546020546023546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f294506163da9392831692909116908790879060040161c9b3565b600060405180830381600087803b1580156163f457600080fd5b505af1158015616408573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561646557600080fd5b505af1158015616479573d6000803e3d6000fd5b50505050602160009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156164cd57600080fd5b505af11580156164e1573d6000803e3d6000fd5b50506023546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a08231906024015b602060405180830381865afa158015616535573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616559919061c9ea565b9050616566816000617b90565b6023546021546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156165b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906165db919061c9ea565b601f54604080516001600160a01b0361010090930483166024820152604480820189905282518083039091018152606490910182526020810180517fa9059cbb000000000000000000000000000000000000000000000000000000006001600160e01b0390911617905260235491517ff30c7ba300000000000000000000000000000000000000000000000000000000815293945092737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba3926166a192911690600090869060040161ca03565b600060405180830381600087803b1580156166bb57600080fd5b505af11580156166cf573d6000803e3d6000fd5b50506020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561674857600080fd5b505af115801561675c573d6000803e3d6000fd5b5050601f54602354602654604080516101009094046001600160a01b039081168552602085018c9052928316908401521660608201527f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609250608001905060405180910390a16021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561683757600080fd5b505af115801561684b573d6000803e3d6000fd5b50506023546020546040516001600160a01b039283169450911691507f6478cbb6e28c0823c691dfd74c01c985634faddd4c401b990fe4ec26277ea8d590616896908990899061cc4f565b60405180910390a360275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156168f757600080fd5b505af115801561690b573d6000803e3d6000fd5b50506021546020546023546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f294506169689392831692909116908a908a9060040161c9b3565b600060405180830381600087803b15801561698257600080fd5b505af1158015616996573d6000803e3d6000fd5b50506023546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401613c5c565b60235460265460408051620186a060248083018290526001600160a01b039586166044840181905295909416606480840182905284518085039091018152608490930184526020830180516001600160e01b03167f357fc5a20000000000000000000000000000000000000000000000000000000017905292516370a0823160e01b815260048101939093529390926000926370a082319101616518565b6060601580548060200260200160405190810160405280929190818152602001828054801561165b576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161163d575050505050905090565b600080604051602001616b05907f68656c6c6f000000000000000000000000000000000000000000000000000000815260050190565b60408051808303601f190181529082905260275463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015616b6c57600080fd5b505af1158015616b80573d6000803e3d6000fd5b5050604051630618f58760e51b81527f951e19ed000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401614ffe565b60405163ca669fa760e01b81526101236004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015616c2957600080fd5b505af1158015616c3d573d6000803e3d6000fd5b50506040805161012360248201527f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a60448083019190915282518083039091018152606490910182526020810180516001600160e01b03167fe2517d3f0000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250616d09919060040161c7fc565b600060405180830381600087803b158015616d2357600080fd5b505af1158015616d37573d6000803e3d6000fd5b5050602154602480546040517f9a5904270000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015292169350639a59042792500161078d565b602354602654604051600160248201526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a20000000000000000000000000000000000000000000000000000000017905260275490517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b158015616e6b57600080fd5b505af1158015616e7f573d6000803e3d6000fd5b50506021546023546040517f9a5904270000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015291169250639a5904279150602401600060405180830381600087803b158015616ee557600080fd5b505af1158015616ef9573d6000803e3d6000fd5b5050604051630618f58760e51b81527f584a7938000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015616f6957600080fd5b505af1158015616f7d573d6000803e3d6000fd5b50506021546020546023546040517f99a3c3560000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506399a3c356945061473c939283169290911690600190879060299060040161cbfa565b6021546023546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600092919091169063d936547e90602401602060405180830381865afa158015617048573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061706c919061c80f565b9050617079600182617b0e565b6021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156170ee57600080fd5b505af1158015617102573d6000803e3d6000fd5b50506023546040516001600160a01b0390911692507f51085ddf9ebdded84b76e829eb58c4078e4b5bdf97d9a94723f336039da467919150600090a260255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561719757600080fd5b505af11580156171ab573d6000803e3d6000fd5b50506021546023546040517f9a5904270000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015291169250639a5904279150602401600060405180830381600087803b15801561721157600080fd5b505af1158015617225573d6000803e3d6000fd5b50506021546023546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063d936547e9150602401602060405180830381865afa15801561728e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906172b2919061c80f565b9050611943600082617b0e565b602354602654604051620186a0602482018190526001600160a01b03938416604483015292909116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167fc51316910000000000000000000000000000000000000000000000000000000017905260235460265491516370a0823160e01b81526001600160a01b0392831660048201529293506000929116906370a0823190602401602060405180830381865afa158015617386573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906173aa919061c9ea565b90506173b7816000617b90565b6023546021546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015617408573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061742c919061c9ea565b601f54604080516001600160a01b0361010090930483166024820152604480820189905282518083039091018152606490910182526020810180517fa9059cbb000000000000000000000000000000000000000000000000000000006001600160e01b0390911617905260235491517ff30c7ba300000000000000000000000000000000000000000000000000000000815293945092737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba3926174f292911690600090869060040161ca03565b600060405180830381600087803b15801561750c57600080fd5b505af1158015617520573d6000803e3d6000fd5b50506020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561759957600080fd5b505af11580156175ad573d6000803e3d6000fd5b5050601f547f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60925061010090046001600160a01b031690506175f060028861cca6565b602354602654604080516001600160a01b03958616815260208101949094529184168383015292909216606082015290519081900360800190a16021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561769f57600080fd5b505af11580156176b3573d6000803e3d6000fd5b50506023546020546040516001600160a01b039283169450911691507f6478cbb6e28c0823c691dfd74c01c985634faddd4c401b990fe4ec26277ea8d5906176fe908990899061cc4f565b60405180910390a360275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561775f57600080fd5b505af1158015617773573d6000803e3d6000fd5b50506021546020546023546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f294506177d09392831692909116908a908a9060040161c9b3565b600060405180830381600087803b1580156177ea57600080fd5b505af11580156177fe573d6000803e3d6000fd5b50506023546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015617851573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190617875919061c9ea565b90506178868161215460028961cca6565b6023546021546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156178d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906178fb919061c9ea565b9050613d2e8161790c60028a61cca6565b612154908761ca5a565b60255460405163ca669fa760e01b81526001600160a01b039091166004820152620186a090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561797457600080fd5b505af1158015617988573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250617a5e919060040161c7fc565b600060405180830381600087803b158015617a7857600080fd5b505af1158015617a8c573d6000803e3d6000fd5b50506021546026546023546040517fd9caed120000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082166024820152604481018690529116925063d9caed12915060640161260b565b6000617af961c395565b617b04848483617d2a565b9150505b92915050565b6040517ff7fe347700000000000000000000000000000000000000000000000000000000815282151560048201528115156024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f7fe3477906044015b60006040518083038186803b158015617b7c57600080fd5b505afa1580156114bd573d6000803e3d6000fd5b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c5490604401617b64565b6040517fa59828850000000000000000000000000000000000000000000000000000000081528115156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063a5982885906024015b60006040518083038186803b158015617c4e57600080fd5b505afa158015612639573d6000803e3d6000fd5b6040517f0c9fd5810000000000000000000000000000000000000000000000000000000081528115156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90630c9fd58190602401617c36565b6040517f515361f60000000000000000000000000000000000000000000000000000000081526001600160a01b03808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f690604401617b64565b617d1d61c395565b6126398585858486617da5565b600080617d378584617ea5565b9050617d9a6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001617d8592919061cce1565b60405160208183030381529060405285617eb1565b9150505b9392505050565b6040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201528190737109709ecfa91a80626ff3989d68f67f5b1dd12d9081906306447d5690602401600060405180830381600087803b158015617e1757600080fd5b505af1925050508015617e28575060015b617e3d57617e3887878787617edf565b6121de565b617e4987878787617edf565b806001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015617e8457600080fd5b505af1158015617e98573d6000803e3d6000fd5b5050505050505050505050565b6000617d9e8383617ef8565b60c08101515160009015617ed557617ece84848460c00151617f13565b9050617d9e565b617ece84846180b9565b6000617eeb84836181a4565b90506126398582856181b0565b6000617f04838361857a565b617d9e83836020015184617eb1565b600080617f1e61858a565b90506000617f2c868361865d565b90506000617f438260600151836020015185618b03565b90506000617f5383838989618d15565b90506000617f6082619b92565b602081015181519192509060030b15617fd357898260400151604051602001617f8a92919061cd03565b60408051601f19818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252617fca9160040161c7fc565b60405180910390fd5b60006180166040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001619d61565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d9061806990849060040161c7fc565b602060405180830381865afa158015618086573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906180aa919061caa7565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc9259061810e90879060040161c7fc565b600060405180830381865afa15801561812b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052618153919081019061ce3d565b90506000618181828560405160200161816d92919061ce72565b604051602081830303815290604052619f61565b90506001600160a01b038116617b04578484604051602001617f8a92919061cea1565b6000617f048383619f74565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201527fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61036024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90600090829063667f9d7090604401602060405180830381865afa15801561824c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190618270919061c9ea565b90508061841757600061828286619f80565b604080518082018252600581527f352e302e300000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061830d905b6040805180820182526000808252602091820152815180830190925284518252808501908201529061a063565b80618319575060008451115b1561839c576040517f4f1ef2860000000000000000000000000000000000000000000000000000000081526001600160a01b03871690634f1ef28690618365908890889060040161cce1565b600060405180830381600087803b15801561837f57600080fd5b505af1158015618393573d6000803e3d6000fd5b50505050618411565b6040517f3659cfe60000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152871690633659cfe690602401600060405180830381600087803b1580156183f857600080fd5b505af115801561840c573d6000803e3d6000fd5b505050505b50612639565b80600061842382619f80565b604080518082018252600581527f352e302e3000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150618485906182e0565b80618491575060008551115b15618516576040517f9623609d0000000000000000000000000000000000000000000000000000000081526001600160a01b03831690639623609d906184df908a908a908a9060040161cf4c565b600060405180830381600087803b1580156184f957600080fd5b505af115801561850d573d6000803e3d6000fd5b505050506121de565b6040517f99a88ec40000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015287811660248301528316906399a88ec490604401600060405180830381600087803b158015617e8457600080fd5b6185868282600061a077565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c9061861190849060040161cf7d565b600060405180830381865afa15801561862e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052618656919081019061cfc4565b9250505090565b61868f6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d90506186da6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6186e38561a17a565b602082015260006186f38661a55f565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015618735573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261875d919081019061cfc4565b86838560200151604051602001618777949392919061d00d565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb11906187cf90859060040161c7fc565b600060405180830381865afa1580156187ec573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052618814919081019061cfc4565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f69061885c90849060040161d111565b602060405180830381865afa158015618879573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061889d919061c80f565b6188b25781604051602001617f8a919061d163565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906188f790849060040161d1f5565b600060405180830381865afa158015618914573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261893c919081019061cfc4565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f69061898390849060040161d247565b602060405180830381865afa1580156189a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906189c4919061c80f565b15618a59576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890618a0e90849060040161d247565b600060405180830381865afa158015618a2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052618a53919081019061cfc4565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001618a7e919061d299565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401618aaa92919061d305565b600060405180830381865afa158015618ac7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052618aef919081019061cfc4565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081618b1f5790505090506040518060400160405280600481526020017f677265700000000000000000000000000000000000000000000000000000000081525081600081518110618b7f57618b7f61d32a565b60200260200101819052506040518060400160405280600381526020017f2d726c000000000000000000000000000000000000000000000000000000000081525081600181518110618bd357618bd361d32a565b602002602001018190525084604051602001618bef919061d359565b60405160208183030381529060405281600281518110618c1157618c1161d32a565b602002602001018190525082604051602001618c2d919061d3c5565b60405160208183030381529060405281600381518110618c4f57618c4f61d32a565b60200260200101819052506000618c6582619b92565b602080820151604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000008185019081528251808401845260008082529086015282518084019093529051825292810192909252919250618cf6906040805180820182526000808252602091820152815180830190925284518252808501908201529061a7e2565b618d0b5785604051602001617f8a919061d406565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015618d65565b511590565b618ed957826020015115618e21576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401617fca565b8260c0015115618ed9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401617fca565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081618ef257905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280618f4d9061d497565b935060ff1681518110618f6257618f6261d32a565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001618fb3919061d4b6565b604051602081830303815290604052828280618fce9061d497565b935060ff1681518110618fe357618fe361d32a565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806190309061d497565b935060ff16815181106190455761904561d32a565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806190929061d497565b935060ff16815181106190a7576190a761d32a565b602002602001018190525087602001518282806190c39061d497565b935060ff16815181106190d8576190d861d32a565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806191259061d497565b935060ff168151811061913a5761913a61d32a565b6020908102919091010152875182826191528161d497565b935060ff16815181106191675761916761d32a565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806191b49061d497565b935060ff16815181106191c9576191c961d32a565b60200260200101819052506191dd4661a843565b82826191e88161d497565b935060ff16815181106191fd576191fd61d32a565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c65000000000000000000000000000000000081525082828061924a9061d497565b935060ff168151811061925f5761925f61d32a565b6020026020010181905250868282806192779061d497565b935060ff168151811061928c5761928c61d32a565b60209081029190910101528551156193b35760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826192dd8161d497565b935060ff16815181106192f2576192f261d32a565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d9061934290899060040161c7fc565b600060405180830381865afa15801561935f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052619387919081019061cfc4565b82826193928161d497565b935060ff16815181106193a7576193a761d32a565b60200260200101819052505b8460200151156194835760408051808201909152601281527f2d2d766572696679536f75726365436f64650000000000000000000000000000602082015282826193fc8161d497565b935060ff16815181106194115761941161d32a565b60200260200101819052506040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525082828061945e9061d497565b935060ff16815181106194735761947361d32a565b602002602001018190525061964a565b6194bb618d608660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b61954e5760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826194fe8161d497565b935060ff16815181106195135761951361d32a565b60200260200101819052508460a00151604051602001619533919061d359565b60405160208183030381529060405282828061945e9061d497565b8460c0015115801561959157506040808901518151808301835260008082526020918201528251808401909352815183529081019082015261958f90511590565b155b1561964a5760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826195d58161d497565b935060ff16815181106195ea576195ea61d32a565b60200260200101819052506195fe8861a8e3565b60405160200161960e919061d359565b6040516020818303038152906040528282806196299061d497565b935060ff168151811061963e5761963e61d32a565b60200260200101819052505b6040808601518151808301835260008082526020918201528251808401909352815183529081019082015261967e90511590565b6197135760408051808201909152600b81527f2d2d72656c617965724964000000000000000000000000000000000000000000602082015282826196c18161d497565b935060ff16815181106196d6576196d661d32a565b602002602001018190525084604001518282806196f29061d497565b935060ff16815181106197075761970761d32a565b60200260200101819052505b6060850151156198345760408051808201909152600681527f2d2d73616c7400000000000000000000000000000000000000000000000000006020820152828261975c8161d497565b935060ff16815181106197715761977161d32a565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa1580156197e0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052619808919081019061cfc4565b82826198138161d497565b935060ff16815181106198285761982861d32a565b60200260200101819052505b60e085015151156198db5760408051808201909152600a81527f2d2d6761734c696d6974000000000000000000000000000000000000000000006020820152828261987e8161d497565b935060ff16815181106198935761989361d32a565b60200260200101819052506198af8560e001516000015161a843565b82826198ba8161d497565b935060ff16815181106198cf576198cf61d32a565b60200260200101819052505b60e085015160200151156199855760408051808201909152600a81527f2d2d676173507269636500000000000000000000000000000000000000000000602082015282826199288161d497565b935060ff168151811061993d5761993d61d32a565b60200260200101819052506199598560e001516020015161a843565b82826199648161d497565b935060ff16815181106199795761997961d32a565b60200260200101819052505b60e08501516040015115619a2f5760408051808201909152600e81527f2d2d6d6178466565506572476173000000000000000000000000000000000000602082015282826199d28161d497565b935060ff16815181106199e7576199e761d32a565b6020026020010181905250619a038560e001516040015161a843565b8282619a0e8161d497565b935060ff1681518110619a2357619a2361d32a565b60200260200101819052505b60e08501516060015115619ad95760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282619a7c8161d497565b935060ff1681518110619a9157619a9161d32a565b6020026020010181905250619aad8560e001516060015161a843565b8282619ab88161d497565b935060ff1681518110619acd57619acd61d32a565b60200260200101819052505b60008160ff1667ffffffffffffffff811115619af757619af761c831565b604051908082528060200260200182016040528015619b2a57816020015b6060815260200190600190039081619b155790505b50905060005b8260ff168160ff161015619b8357838160ff1681518110619b5357619b5361d32a565b6020026020010151828260ff1681518110619b7057619b7061d32a565b6020908102919091010152600101619b30565b5093505050505b949350505050565b619bb96040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c91619c3f9186910161d521565b600060405180830381865afa158015619c5c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052619c84919081019061cfc4565b90506000619c92868361b3d2565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401619cc2919061c6ee565b6000604051808303816000875af1158015619ce1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052619d09919081019061d568565b805190915060030b15801590619d225750602081015151155b8015619d315750604081015151155b15618d0b5781600081518110619d4957619d4961d32a565b6020026020010151604051602001617f8a919061d61e565b60606000619d968560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150619dcd9082905b9061b527565b15619f2a576000619e4a82619e4484619e3e619e108a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b9061b54e565b9061b5b0565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150619eae90829061b527565b15619f1857604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152619f15905b829061b635565b90505b619f218161b65b565b92505050617d9e565b8215619f43578484604051602001617f8a92919061d80a565b5050604080516020810190915260008152617d9e565b509392505050565b6000808251602084016000f09392505050565b6185868282600161a077565b60408051600481526024810182526020810180516001600160e01b03167fad3cb1cc00000000000000000000000000000000000000000000000000000000179052905160609160009182916001600160a01b03861691619fe0919061d8b1565b600060405180830381855afa9150503d806000811461a01b576040519150601f19603f3d011682016040523d82523d6000602084013e61a020565b606091505b509150915081801561a033575060208151115b1561a04c5780806020019051810190619b8a919061cfc4565b505060408051602081019091526000815292915050565b600061a06f838361b6c4565b159392505050565b8160a001511561a08657505050565b600061a09384848461b79f565b9050600061a0a082619b92565b602081015181519192509060030b15801561a13c5750604080518082018252600781527f53554343455353000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261a13c90604080518082018252600080825260209182015281518083019092528451825280850190820152619dc7565b1561a14957505050505050565b6040820151511561a169578160400151604051602001617f8a919061d8cd565b80604051602001617f8a919061d92b565b6060600061a1af8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061a214905b829061a7e2565b1561a28357604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617d9e9061a27e90839061bd3a565b61b65b565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261a2e5905b829061bdc4565b60010361a3b257604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261a34b90619f0e565b50604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617d9e9061a27e905b839061b635565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261a4119061a20d565b1561a54857604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061a47990839061be5e565b90506000816001835161a48c919061ca5a565b8151811061a49c5761a49c61d32a565b6020026020010151905061a53f61a27e61a5126040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529061bd3a565b95945050505050565b82604051602001617f8a919061d996565b50919050565b6060600061a5948360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061a5f69061a20d565b1561a60457617d9e8161b65b565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261a6639061a2de565b60010361a6cd57604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617d9e9061a27e9061a3ab565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261a72c9061a20d565b1561a54857604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061a79490839061be5e565b905060018151111561a7d057806002825161a7af919061ca5a565b8151811061a7bf5761a7bf61d32a565b602002602001015192505050919050565b5082604051602001617f8a919061d996565b80518251600091111561a7f757506000617b08565b8151835160208501516000929161a80d9161cc93565b61a817919061ca5a565b90508260200151810361a82e576001915050617b08565b82516020840151819020912014905092915050565b6060600061a8508361bf03565b600101905060008167ffffffffffffffff81111561a8705761a87061c831565b6040519080825280601f01601f19166020018201604052801561a89a576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461a8a457509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e534544000000000000000000000000000000000000000000008184019081528551808701875283815284019290925284518086019095525184529083015260609161a96f905b829061a063565b1561a9af57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261aa0e9061a968565b1561aa4e57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d495400000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261aaad9061a968565b1561aaed57505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261ab4c9061a968565b8061abb15750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261abb19061a968565b1561abf157505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261ac509061a968565b8061acb55750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261acb59061a968565b1561acf557505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261ad549061a968565b8061adb95750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261adb99061a968565b1561adf957505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261ae589061a968565b8061aebd5750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261aebd9061a968565b1561aefd57505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261af5c9061a968565b1561af9c57505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261affb9061a968565b1561b03b57505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261b09a9061a968565b1561b0da57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261b1399061a968565b1561b17957505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261b1d89061a968565b1561b21857505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261b2779061a968565b8061b2dc5750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261b2dc9061a968565b1561b31c57505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261b37b9061a968565b1561b3bb57505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151617f8a929060200161da74565b60608060005b845181101561b45d578185828151811061b3f45761b3f461d32a565b602002602001015160405160200161b40d92919061ce72565b60405160208183030381529060405291506001855161b42c919061ca5a565b811461b455578160405160200161b443919061dbdd565b60405160208183030381529060405291505b60010161b3d8565b5060408051600380825260808201909252600091816020015b606081526020019060019003908161b476579050509050838160008151811061b4a15761b4a161d32a565b60200260200101819052506040518060400160405280600281526020017f2d630000000000000000000000000000000000000000000000000000000000008152508160018151811061b4f55761b4f561d32a565b6020026020010181905250818160028151811061b5145761b51461d32a565b6020908102919091010152949350505050565b602080830151835183519284015160009361b545929184919061bfe5565b14159392505050565b6040805180820190915260008082526020820152600061b580846000015185602001518560000151866020015161c0f6565b905083602001518161b592919061ca5a565b8451859061b5a190839061ca5a565b90525060208401525090919050565b604080518082019091526000808252602082015281518351101561b5d5575081617b08565b602080830151908401516001911461b5fc5750815160208481015190840151829020919020145b801561b62d5782518451859061b61390839061ca5a565b905250825160208501805161b62990839061cc93565b9052505b509192915050565b604080518082019091526000808252602082015261b65483838361c216565b5092915050565b60606000826000015167ffffffffffffffff81111561b67c5761b67c61c831565b6040519080825280601f01601f19166020018201604052801561b6a6576020820181803683370190505b509050600060208201905061b654818560200151866000015161c2c1565b815181516000919081111561b6d7575081515b6020808501519084015160005b8381101561b790578251825180821461b76057600019602087101561b73f5760018461b71189602061ca5a565b61b71b919061cc93565b61b72690600861dc1e565b61b73190600261dd1c565b61b73b919061ca5a565b1990505b818116838216818103911461b75d579750617b089650505050505050565b50505b61b76b60208661cc93565b945061b77860208561cc93565b9350505060208161b789919061cc93565b905061b6e4565b5084518651618d0b919061dd28565b6060600061b7ab61858a565b6040805160ff808252612000820190925291925060009190816020015b606081526020019060019003908161b7c857905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061b8239061d497565b935060ff168151811061b8385761b83861d32a565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e330000000000000000000000000000000000000000000000000081525060405160200161b889919061dd48565b60405160208183030381529060405282828061b8a49061d497565b935060ff168151811061b8b95761b8b961d32a565b60200260200101819052506040518060400160405280600881526020017f76616c696461746500000000000000000000000000000000000000000000000081525082828061b9069061d497565b935060ff168151811061b91b5761b91b61d32a565b60200260200101819052508260405160200161b937919061d3c5565b60405160208183030381529060405282828061b9529061d497565b935060ff168151811061b9675761b96761d32a565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e74726163740000000000000000000000000000000000000000000081525082828061b9b49061d497565b935060ff168151811061b9c95761b9c961d32a565b602002602001018190525061b9de878461c33b565b828261b9e98161d497565b935060ff168151811061b9fe5761b9fe61d32a565b60209081029190910101528551511561baaa5760408051808201909152600b81527f2d2d7265666572656e63650000000000000000000000000000000000000000006020820152828261ba508161d497565b935060ff168151811061ba655761ba6561d32a565b602002602001018190525061ba7e86600001518461c33b565b828261ba898161d497565b935060ff168151811061ba9e5761ba9e61d32a565b60200260200101819052505b85608001511561bb185760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261baf38161d497565b935060ff168151811061bb085761bb0861d32a565b602002602001018190525061bb7e565b841561bb7e5760408051808201909152601281527f2d2d726571756972655265666572656e636500000000000000000000000000006020820152828261bb5d8161d497565b935060ff168151811061bb725761bb7261d32a565b60200260200101819052505b6040860151511561bc1a5760408051808201909152600d81527f2d2d756e73616665416c6c6f77000000000000000000000000000000000000006020820152828261bbc88161d497565b935060ff168151811061bbdd5761bbdd61d32a565b6020026020010181905250856040015182828061bbf99061d497565b935060ff168151811061bc0e5761bc0e61d32a565b60200260200101819052505b85606001511561bc845760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261bc638161d497565b935060ff168151811061bc785761bc7861d32a565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561bca25761bca261c831565b60405190808252806020026020018201604052801561bcd557816020015b606081526020019060019003908161bcc05790505b50905060005b8260ff168160ff16101561bd2e57838160ff168151811061bcfe5761bcfe61d32a565b6020026020010151828260ff168151811061bd1b5761bd1b61d32a565b602090810291909101015260010161bcdb565b50979650505050505050565b604080518082019091526000808252602082015281518351101561bd5f575081617b08565b8151835160208501516000929161bd759161cc93565b61bd7f919061ca5a565b6020840151909150600190821461bda0575082516020840151819020908220145b801561bdbb5783518551869061bdb790839061ca5a565b9052505b50929392505050565b600080826000015161bde8856000015186602001518660000151876020015161c0f6565b61bdf2919061cc93565b90505b8351602085015161be06919061cc93565b811161b654578161be168161dd8d565b925050826000015161be4d85602001518361be31919061ca5a565b865161be3d919061ca5a565b838660000151876020015161c0f6565b61be57919061cc93565b905061bdf5565b6060600061be6c848461bdc4565b61be7790600161cc93565b67ffffffffffffffff81111561be8f5761be8f61c831565b60405190808252806020026020018201604052801561bec257816020015b606081526020019060019003908161bead5790505b50905060005b8151811015619f595761bede61a27e868661b635565b82828151811061bef05761bef061d32a565b602090810291909101015260010161bec8565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061bf4c577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831061bf78576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061bf9657662386f26fc10000830492506010015b6305f5e100831061bfae576305f5e100830492506008015b612710831061bfc257612710830492506004015b6064831061bfd4576064830492506002015b600a8310617b085760010192915050565b60008085841161c0ec576020841161c098576000841561c03057600161c00c86602061ca5a565b61c01790600861dc1e565b61c02290600261dd1c565b61c02c919061ca5a565b1990505b835181168561c03f898961cc93565b61c049919061ca5a565b805190935082165b81811461c0835787841161c06b5787945050505050619b8a565b8361c0758161dda7565b94505082845116905061c051565b61c08d878561cc93565b945050505050619b8a565b83832061c0a5858861ca5a565b61c0af908761cc93565b91505b85821061c0ea5784822080820361c0d75761c0cd868461cc93565b9350505050619b8a565b61c0e260018461ca5a565b92505061c0b2565b505b5092949350505050565b6000838186851161c201576020851161c1b0576000851561c14257600161c11e87602061ca5a565b61c12990600861dc1e565b61c13490600261dd1c565b61c13e919061ca5a565b1990505b8451811660008761c1538b8b61cc93565b61c15d919061ca5a565b855190915083165b82811461c1a25781861061c18a5761c17d8b8b61cc93565b9650505050505050619b8a565b8561c1948161dd8d565b96505083865116905061c165565b859650505050505050619b8a565b508383206000905b61c1c2868961ca5a565b821161c1ff5785832080820361c1de5783945050505050619b8a565b61c1e960018561cc93565b935050818061c1f79061dd8d565b92505061c1b8565b505b61c20b878761cc93565b979650505050505050565b6040805180820190915260008082526020820152600061c248856000015186602001518660000151876020015161c0f6565b60208087018051918601919091525190915061c264908261ca5a565b83528451602086015161c277919061cc93565b810361c286576000855261c2b8565b8351835161c294919061cc93565b8551869061c2a390839061ca5a565b905250835161c2b2908261cc93565b60208601525b50909392505050565b6020811061c2f9578151835261c2d860208461cc93565b925061c2e560208361cc93565b915061c2f260208261ca5a565b905061c2c1565b600019811561c32857600161c30f83602061ca5a565b61c31b9061010061dd1c565b61c325919061ca5a565b90505b9151835183169219169190911790915250565b6060600061c349848461865d565b805160208083015160405193945061c3639390910161ddbe565b60405160208183030381529060405291505092915050565b610c9f8061de1783390190565b610ec28061eab683390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161c3d861c3dd565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161c3d86040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b8181101561c48f5783516001600160a01b031683526020938401939092019160010161c468565b509095945050505050565b60005b8381101561c4b557818101518382015260200161c49d565b50506000910152565b6000815180845261c4d681602086016020860161c49a565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561c5e6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b8181101561c5cc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261c5b684865161c4be565b602095860195909450929092019160010161c57c565b50919750505060209485019492909201915060010161c512565b50929695505050505050565b600081518084526020840193506020830160005b8281101561c6465781517fffffffff000000000000000000000000000000000000000000000000000000001686526020958601959091019060010161c606565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561c5e6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516040875261c6bc604088018261c4be565b905060208201519150868103602088015261c6d7818361c5f2565b96505050602093840193919091019060010161c678565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561c5e6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845261c75085835161c4be565b9450602093840193919091019060010161c716565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561c5e6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b038151168652602081015190506040602087015261c7e6604087018261c5f2565b955050602093840193919091019060010161c78d565b602081526000617d9e602083018461c4be565b60006020828403121561c82157600080fd5b81518015158114617d9e57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600181811c9082168061c87457607f821691505b60208210810361a559577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b601f821115615bd757806000526020600020601f840160051c8101602085101561c8d45750805b601f840160051c820191505b81811015612639576000815560010161c8e0565b815167ffffffffffffffff81111561c90e5761c90e61c831565b61c9228161c91c845461c860565b8461c8ad565b6020601f82116001811461c956576000831561c93e5750848201515b600019600385901b1c1916600184901b178455612639565b600084815260208120601f198516915b8281101561c986578785015182556020948501946001909201910161c966565b508482101561c9a45786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6001600160a01b03851681526001600160a01b0384166020820152826040820152608060608201526000618d0b608083018461c4be565b60006020828403121561c9fc57600080fd5b5051919050565b6001600160a01b038416815282602082015260606040820152600061a53f606083018461c4be565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115617b0857617b0861ca2b565b60808152600061ca80608083018761c4be565b6001600160a01b0386166020840152846040840152828103606084015261c20b818561c4be565b60006020828403121561cab957600080fd5b81516001600160a01b0381168114617d9e57600080fd5b6001600160a01b0381541682526001600160a01b03600182015416602083015260028101546040830152600060038201608060608501526000815461cb148161c860565b806080880152600182166000811461cb33576001811461cb6d5761cba1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831660a089015260a082151560051b890101935061cba1565b84600052602060002060005b8381101561cb985781548a820160a0015260019091019060200161cb79565b890160a0019450505b50919695505050505050565b6001600160a01b0383168152604060208201526000619b8a604083018461cad0565b83815260606020820152600061cbe8606083018561c4be565b8281036040840152618d0b818561cad0565b6001600160a01b03861681526001600160a01b038516602082015283604082015260a06060820152600061cc3160a083018561c4be565b828103608084015261cc43818561cad0565b98975050505050505050565b828152604060208201526000619b8a604083018461c4be565b60608152600061cc7b606083018661c4be565b8460208401528281036040840152618d0b818561c4be565b80820180821115617b0857617b0861ca2b565b60008261ccdc577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6001600160a01b0383168152604060208201526000619b8a604083018461c4be565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161cd3b81601a85016020880161c49a565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161cd7881601c84016020880161c49a565b01601c01949350505050565b6040516060810167ffffffffffffffff8111828210171561cda75761cda761c831565b60405290565b60008067ffffffffffffffff84111561cdc85761cdc861c831565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561cdf75761cdf761c831565b60405283815290508082840185101561ce0f57600080fd5b619f5984602083018561c49a565b600082601f83011261ce2e57600080fd5b617d9e8383516020850161cdad565b60006020828403121561ce4f57600080fd5b815167ffffffffffffffff81111561ce6657600080fd5b617b048482850161ce1d565b6000835161ce8481846020880161c49a565b83519083019061ce9881836020880161c49a565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161ced981601a85016020880161c49a565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161cf1681603384016020880161c49a565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b6001600160a01b03841681526001600160a01b038316602082015260606040820152600061a53f606083018461c4be565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000617d9e608083018461c4be565b60006020828403121561cfd657600080fd5b815167ffffffffffffffff81111561cfed57600080fd5b8201601f8101841361cffe57600080fd5b617b048482516020840161cdad565b6000855161d01f818460208a0161c49a565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161d059816001840160208a0161c49a565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161d09781600284016020890161c49a565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161d0d981600284016020880161c49a565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061d124604083018461c4be565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161d19b81601f85016020870161c49a565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061d208604083018461c4be565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061d25a604083018461c4be565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161d2d181601485016020870161c49a565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061d318604083018561c4be565b8281036020840152617d9a818561c4be565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161d39181600185016020870161c49a565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161d3d781846020870161c49a565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161d48a81604b85016020870161c49a565b91909101604b0192915050565b600060ff821660ff810361d4ad5761d4ad61ca2b565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161d51481602985016020870161c49a565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000617d9e608083018461c4be565b60006020828403121561d57a57600080fd5b815167ffffffffffffffff81111561d59157600080fd5b82016060818503121561d5a357600080fd5b61d5ab61cd84565b81518060030b811461d5bc57600080fd5b8152602082015167ffffffffffffffff81111561d5d857600080fd5b61d5e48682850161ce1d565b602083015250604082015167ffffffffffffffff81111561d60457600080fd5b61d6108682850161ce1d565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161d67c81602185016020870161c49a565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161d86881602185016020880161c49a565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161d8a581602e84016020880161c49a565b01602e01949350505050565b6000825161d8c381846020870161c49a565b9190910192915050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161d51481602985016020870161c49a565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161d98981602285016020870161c49a565b9190910160220192915050565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161d9ce81600e85016020870161c49a565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161daac81601885016020880161c49a565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161dae981601c84016020880161c49a565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161dbef81846020870161c49a565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b8082028115828204841417617b0857617b0861ca2b565b6001815b600184111561dc705780850481111561dc545761dc5461ca2b565b600184161561dc6257908102905b60019390931c92800261dc39565b935093915050565b60008261dc8757506001617b08565b8161dc9457506000617b08565b816001811461dcaa576002811461dcb45761dcd0565b6001915050617b08565b60ff84111561dcc55761dcc561ca2b565b50506001821b617b08565b5060208310610133831016604e8410600b841016171561dcf3575081810a617b08565b61dd00600019848461dc35565b806000190482111561dd145761dd1461ca2b565b029392505050565b6000617d9e838361dc78565b818103600083128015838313168383128216171561b6545761b65461ca2b565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161dd8081601c85016020870161c49a565b91909101601c0192915050565b6000600019820361dda05761dda061ca2b565b5060010190565b60008161ddb65761ddb661ca2b565b506000190190565b6000835161ddd081846020880161c49a565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161de0a81600184016020880161c49a565b0160010194935050505056fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212205f76808fb3dc6dacf4bd766b2d0bf9d6beb64856c952cec8e267368511bd936a64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610e9e806100246000396000f3fe60806040526004361061006e5760003560e01c8063c51316911161004b578063c5131691146100d5578063c9028a36146100f5578063e04d4f9714610115578063f05b6abf1461012857005b8063357fc5a214610077578063676cc054146100975780636ed70169146100c057005b3661007557005b005b34801561008357600080fd5b506100756100923660046106ec565b610148565b6100aa6100a5366004610728565b6101de565b6040516100b79190610823565b60405180910390f35b3480156100cc57600080fd5b50610075610222565b3480156100e157600080fd5b506100756100f03660046106ec565b610257565b34801561010157600080fd5b50610075610110366004610836565b610332565b610075610123366004610996565b61036e565b34801561013457600080fd5b50610075610143366004610a82565b6103b2565b6101506103e7565b61017273ffffffffffffffffffffffffffffffffffffffff831633838661042a565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101d96001600055565b505050565b6040516060907f3658b46bab672c7672b69c2f0feda706eabdb7d2231421c96e9049b2db5e7eee90600090a1506040805160208101909152600081525b9392505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b61025f6103e7565b600061026c600285610b6c565b9050806000036102a8576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102ca73ffffffffffffffffffffffffffffffffffffffff841633848461042a565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101d96001600055565b7f689a5a5cb55e795ffe4cd8b419cd3bb0a3373974c54d25f64e734d7388b93e9b3382604051610363929190610bf0565b60405180910390a150565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa33348585856040516103a5959493929190610ce2565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103a59493929190610d6c565b600260005403610423576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526104bf9085906104c5565b50505050565b60006104e773ffffffffffffffffffffffffffffffffffffffff841683610560565b9050805160001415801561050c57508080602001905181019061050a9190610e2f565b155b156101d9576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061021b83836000846000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105939190610e4c565b60006040518083038185875af1925050503d80600081146105d0576040519150601f19603f3d011682016040523d82523d6000602084013e6105d5565b606091505b50915091506105e58683836105ef565b9695505050505050565b606082610604576105ff8261067e565b61021b565b8151158015610628575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610677576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610557565b508061021b565b80511561068e5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106e757600080fd5b919050565b60008060006060848603121561070157600080fd5b83359250610711602085016106c3565b915061071f604085016106c3565b90509250925092565b6000806000838503604081121561073e57600080fd5b602081121561074c57600080fd5b50839250602084013567ffffffffffffffff81111561076a57600080fd5b8401601f8101861361077b57600080fd5b803567ffffffffffffffff81111561079257600080fd5b8660208284010111156107a457600080fd5b939660209190910195509293505050565b60005b838110156107d05781810151838201526020016107b8565b50506000910152565b600081518084526107f18160208601602086016107b5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061021b60208301846107d9565b60006020828403121561084857600080fd5b813567ffffffffffffffff81111561085f57600080fd5b82016080818503121561021b57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156108e7576108e7610871565b604052919050565b600082601f83011261090057600080fd5b813567ffffffffffffffff81111561091a5761091a610871565b61094b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016108a0565b81815284602083860101111561096057600080fd5b816020850160208301376000918101602001919091529392505050565b80151581146106c057600080fd5b80356106e78161097d565b6000806000606084860312156109ab57600080fd5b833567ffffffffffffffff8111156109c257600080fd5b6109ce868287016108ef565b9350506020840135915060408401356109e68161097d565b809150509250925092565b600067ffffffffffffffff821115610a0b57610a0b610871565b5060051b60200190565b600082601f830112610a2657600080fd5b8135610a39610a34826109f1565b6108a0565b8082825260208201915060208360051b860101925085831115610a5b57600080fd5b602085015b83811015610a78578035835260209283019201610a60565b5095945050505050565b600080600060608486031215610a9757600080fd5b833567ffffffffffffffff811115610aae57600080fd5b8401601f81018613610abf57600080fd5b8035610acd610a34826109f1565b8082825260208201915060208360051b850101925088831115610aef57600080fd5b602084015b83811015610b3157803567ffffffffffffffff811115610b1357600080fd5b610b228b6020838901016108ef565b84525060209283019201610af4565b509550505050602084013567ffffffffffffffff811115610b5157600080fd5b610b5d86828701610a15565b92505061071f6040850161098b565b600082610ba2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015273ffffffffffffffffffffffffffffffffffffffff610c2e836106c3565b16604082015273ffffffffffffffffffffffffffffffffffffffff610c55602084016106c3565b166060820152600080604084013590508060808401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610ca157600080fd5b830160208101903567ffffffffffffffff811115610cbe57600080fd5b803603821315610ccd57600080fd5b608060a08501526105e560c085018284610ba7565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610d1760a08301866107d9565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610d62578151865260209586019590910190600101610d44565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610dff577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610dea8583516107d9565b94506020938401939190910190600101610db0565b505050508281036040840152610e158186610d30565b915050610e26606083018415159052565b95945050505050565b600060208284031215610e4157600080fd5b815161021b8161097d565b60008251610e5e8184602087016107b5565b919091019291505056fea2646970667358221220dbbcdb2ae8ea201fd0567f815d9a6ce082b3a1b6ed3f6fce312e955f9aa11e1364736f6c634300081a0033a2646970667358221220fab57add763435f5606e10958059dfae98a04b6f2af8837d0dbc4f3ecc87a5b864736f6c634300081a0033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061f9ad8061003c6000396000f3fe608060405234801561001057600080fd5b50600436106103365760003560e01c806385f438c1116101b2578063b5508aa9116100f9578063eb1ce7f9116100a2578063fa2a70741161007c578063fa2a7074146105b0578063fa7626d4146105b8578063fb176c12146105c5578063fe8e5f1b146105cd57600080fd5b8063eb1ce7f914610598578063f0c8e7e0146105a0578063f4221f08146105a857600080fd5b8063cbd57e2f116100d3578063cbd57e2f14610561578063e20c9f7114610569578063e63ab1e91461057157600080fd5b8063b5508aa914610539578063ba414fa614610541578063c713f8271461055957600080fd5b8063a3f9d0e01161015b578063af298bb111610135578063af298bb114610521578063b0464fdc14610529578063b421ca701461053157600080fd5b8063a3f9d0e0146104ea578063a4943deb146104f2578063a783c789146104fa57600080fd5b80639918c1c21161018c5780639918c1c2146104d25780639fc7fd55146104da578063a217fddf146104e257600080fd5b806385f438c11461048e5780639158c623146104b5578063916a17c6146104bd57600080fd5b806349c783dd1161028157806366d9a9a01161022a57806371149c941161020457806371149c94146104615780637e91c50f1461046957806382c529921461047157806385226c811461047957600080fd5b806366d9a9a01461043c5780636a621854146104515780637099d6f81461045957600080fd5b806352ff59391161025b57806352ff5939146103d8578063570618e1146103e05780635d62c8601461041557600080fd5b806349c783dd146103c05780634df42da1146103c857806351ecdf3c146103d057600080fd5b80632ade3880116102e35780633e73ecb4116102bd5780633e73ecb4146103a85780633ee92923146103b05780633f7286f4146103b857600080fd5b80632ade3880146103835780632be6a162146103985780633e5e3c23146103a057600080fd5b80631779672f116103145780631779672f146103555780631ed7831c1461035d578063284cb9291461037b57600080fd5b8063070f2ad01461033b5780630a9254e4146103455780630eee72a91461034d575b600080fd5b6103436105d5565b005b6103436107c1565b610343611248565b6103436114c5565b610365611603565b604051610372919061c44e565b60405180910390f35b610343611665565b61038b611946565b604051610372919061c4ea565b610343611a88565b610365611c34565b610343611c94565b6103436121e7565b6103656122a3565b610343612303565b610343612640565b610343612798565b610343612956565b6104077f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a81565b604051908152602001610372565b6104077f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b610444613186565b604051610372919061c650565b6103436132f3565b6103436133ac565b61034361365a565b610343613e67565b610343613ff2565b610481614264565b604051610372919061c6ee565b6104077f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b610343614334565b6104c5614402565b604051610372919061c765565b6103436144e8565b6103436147cc565b610407600081565b61034361489a565b610343614e79565b6104077f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b61034361508c565b6104c5615630565b610343615716565b610481615bdc565b610549615cac565b6040519015158152602001610372565b610343615d80565b6103436169d1565b610365616a6f565b6104077f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b610343616acf565b610343616bdb565b610343616d87565b610343616fde565b601f546105499060ff1681565b6103436172bf565b610343617916565b6027546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b15801561064757600080fd5b505af115801561065b573d6000803e3d6000fd5b5050602754604080516001600160a01b039092166024830152600060448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250610712919060040161c7fc565b600060405180830381600087803b15801561072c57600080fd5b505af1158015610740573d6000803e3d6000fd5b50506021546025546040517f950837aa0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063950837aa91506024015b600060405180830381600087803b1580156107a757600080fd5b505af11580156107bb573d6000803e3d6000fd5b50505050565b602580547fffffffffffffffffffffffff000000000000000000000000000000000000000090811630179091556026805482166112341790556027805482166156781790556028805490911661987617905560405161081f9061c37b565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f0801580156108a4573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516108e99061c37b565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f08015801561096d573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c000000000000000000000000000000000000602082015260275460255492519086169481019490945260448401929092529092166064820152600091610a4c916084015b60408051601f198184030181529190526020810180516001600160e01b03167fc0c53b8b00000000000000000000000000000000000000000000000000000000179052617aef565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0384811682029290921792839055604080518082018252601081527f4552433230437573746f64792e736f6c0000000000000000000000000000000060208201526027546025549251939095048416602484015293831660448301529091166064820152919250610aef91608401610a04565b602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383811691909117909155604080518082018252601a81527f5a657461436f6e6e6563746f724e6f6e4e61746976652e736f6c0000000000006020820152601f546024805460275460255495516101009094048716928401929092528516604483015284166064820152919092166084820152919250610be19160a40160408051601f198184030181529190526020810180516001600160e01b03167ff8c8765e00000000000000000000000000000000000000000000000000000000179052617aef565b602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038316179055604051909150610c239061c388565b604051809103906000f080158015610c3f573d6000803e3d6000fd5b50602080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556027546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b158015610ceb57600080fd5b505af1158015610cff573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610d7557600080fd5b505af1158015610d89573d6000803e3d6000fd5b5050601f546021546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261010090920416925063ae7a3a6f9150602401600060405180830381600087803b158015610df457600080fd5b505af1158015610e08573d6000803e3d6000fd5b5050601f546022546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526101009092041692506310188aef9150602401600060405180830381600087803b158015610e7357600080fd5b505af1158015610e87573d6000803e3d6000fd5b50506021546023546040517f9b19251a0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015291169250639b19251a9150602401600060405180830381600087803b158015610eed57600080fd5b505af1158015610f01573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610f6357600080fd5b505af1158015610f77573d6000803e3d6000fd5b50506023546025546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f42406024820152911692506340c10f199150604401600060405180830381600087803b158015610fe657600080fd5b505af1158015610ffa573d6000803e3d6000fd5b5050602480546025546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f4240938101939093521692506340c10f199150604401600060405180830381600087803b15801561106b57600080fd5b505af115801561107f573d6000803e3d6000fd5b50506023546021546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12060248201529116925063a9059cbb91506044016020604051808303816000875af11580156110f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611117919061c80f565b506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561119857600080fd5b505af11580156111ac573d6000803e3d6000fd5b5050604080516080810182526025546001600160a01b039081168252602354811660208084019182526001848601908152855191820190955260008152606084018190528351602980549185167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161781559251602a8054919095169116179092559251602b55909350909150602c906107bb908261c8f4565b602354602654604051620186a0602482018190526001600160a01b03938416604483015292909116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167fc513169100000000000000000000000000000000000000000000000000000000179052602554905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b15801561131a57600080fd5b505af115801561132e573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250611404919060040161c7fc565b600060405180830381600087803b15801561141e57600080fd5b505af1158015611432573d6000803e3d6000fd5b50506021546020546023546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f2945061148f9392831692909116908790879060040161c9b3565b600060405180830381600087803b1580156114a957600080fd5b505af11580156114bd573d6000803e3d6000fd5b505050505050565b6023546026546040516000602482018190526001600160a01b039384166044830152929091166064820152819060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a200000000000000000000000000000000000000000000000000000000179052602754905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b15801561159457600080fd5b505af11580156115a8573d6000803e3d6000fd5b5050604051630618f58760e51b81527f951e19ed000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401611404565b6060601680548060200260200160405190810160405280929190818152602001828054801561165b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161163d575b5050505050905090565b602154602480546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600093919091169163d936547e9101602060405180830381865afa1580156116ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f2919061c80f565b90506116ff600082617b0e565b6021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561177457600080fd5b505af1158015611788573d6000803e3d6000fd5b50506024546040516001600160a01b0390911692507faab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a549150600090a260255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561181d57600080fd5b505af1158015611831573d6000803e3d6000fd5b5050602154602480546040517f9b19251a0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015292169350639b19251a925001600060405180830381600087803b15801561189657600080fd5b505af11580156118aa573d6000803e3d6000fd5b5050602154602480546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529216935063d936547e925001602060405180830381865afa158015611912573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611936919061c80f565b9050611943600182617b0e565b50565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015611a7f57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015611a685783829060005260206000200180546119db9061c860565b80601f0160208091040260200160405190810160405280929190818152602001828054611a079061c860565b8015611a545780601f10611a2957610100808354040283529160200191611a54565b820191906000526020600020905b815481529060010190602001808311611a3757829003601f168201915b5050505050815260200190600101906119bc565b50505050815250508152602001906001019061196a565b50505050905090565b60405163ca669fa760e01b81526101236004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611ad657600080fd5b505af1158015611aea573d6000803e3d6000fd5b50506040805161012360248201527f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a60448083019190915282518083039091018152606490910182526020810180516001600160e01b03167fe2517d3f0000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250611bb6919060040161c7fc565b600060405180830381600087803b158015611bd057600080fd5b505af1158015611be4573d6000803e3d6000fd5b5050602154602480546040517f9b19251a0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015292169350639b19251a92500161078d565b6060601880548060200260200160405190810160405280929190818152602001828054801561165b576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161163d575050505050905090565b6023546026546040516370a0823160e01b81526001600160a01b039182166004820152620186a09260009216906370a0823190602401602060405180830381865afa158015611ce7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d0b919061c9ea565b9050611d18816000617b90565b6023546021546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611d69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d8d919061c9ea565b602654604080516001600160a01b039283166024820152604480820188905282518083039091018152606490910182526020810180516001600160e01b03167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260235491517ff30c7ba300000000000000000000000000000000000000000000000000000000815293945092737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba392611e4c92911690600090869060040161ca03565b600060405180830381600087803b158015611e6657600080fd5b505af1158015611e7a573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015611ef357600080fd5b505af1158015611f07573d6000803e3d6000fd5b50506023546026546040518881526001600160a01b039283169450911691507fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb9060200160405180910390a360275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611fac57600080fd5b505af1158015611fc0573d6000803e3d6000fd5b50506021546026546023546040517fd9caed120000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082166024820152604481018990529116925063d9caed129150606401600060405180830381600087803b15801561203857600080fd5b505af115801561204c573d6000803e3d6000fd5b50506023546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa15801561209f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c3919061c9ea565b90506120cf8186617b90565b6023546021546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015612120573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612144919061c9ea565b905061215981612154888761ca5a565b617b90565b602354601f546040516370a0823160e01b81526101009091046001600160a01b03908116600483015260009216906370a0823190602401602060405180830381865afa1580156121ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d1919061c9ea565b90506121de816000617b90565b50505050505050565b602354602654604051620186a0602482018190526001600160a01b03938416604483015292909116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a200000000000000000000000000000000000000000000000000000000179052602554905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401611300565b6060601780548060200260200160405190810160405280929190818152602001828054801561165b576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161163d575050505050905090565b6021546040517feab103df000000000000000000000000000000000000000000000000000000008152600060048201526001600160a01b039091169063eab103df90602401600060405180830381600087803b15801561236257600080fd5b505af1158015612376573d6000803e3d6000fd5b50506023546021546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424060248201529116925063095ea7b391506044016020604051808303816000875af11580156123ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061240e919061c80f565b50602480546021546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424093810193909352169063095ea7b3906044016020604051808303816000875af1158015612481573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124a5919061c80f565b50604080517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152815160058183030181526025820192839052630618f58760e51b9092527f73cba663000000000000000000000000000000000000000000000000000000006029820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906049015b600060405180830381600087803b15801561254d57600080fd5b505af1158015612561573d6000803e3d6000fd5b505060215460265460405160609190911b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208201526001600160a01b03909116925063e609055e915060340160408051601f19818403018152908290526023547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261260b926001600160a01b03909116906103e890879060040161ca6d565b600060405180830381600087803b15801561262557600080fd5b505af1158015612639573d6000803e3d6000fd5b5050505050565b6025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156126b257600080fd5b505af11580156126c6573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561273657600080fd5b505af115801561274a573d6000803e3d6000fd5b50506021546040517f950837aa000000000000000000000000000000000000000000000000000000008152600060048201526001600160a01b03909116925063950837aa915060240161078d565b6023546026546040516001602482018190526001600160a01b03938416604483015292909116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a200000000000000000000000000000000000000000000000000000000179052602754905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561286757600080fd5b505af115801561287b573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156128eb57600080fd5b505af11580156128ff573d6000803e3d6000fd5b50506021546023546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321fc65f2935061148f9260009216908790879060040161c9b3565b6021546040517f91d148540000000000000000000000000000000000000000000000000000000081527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4600482015261432160248201819052916000916001600160a01b03909116906391d1485490604401602060405180830381865afa1580156129e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a09919061c80f565b9050612a1481617be8565b6021546040517f91d148540000000000000000000000000000000000000000000000000000000081527f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a60048201526001600160a01b03848116602483015260009216906391d1485490604401602060405180830381865afa158015612a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ac2919061c80f565b9050612acd81617be8565b6021546027546040517f91d148540000000000000000000000000000000000000000000000000000000081527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460048201526001600160a01b03918216602482015260009291909116906391d1485490604401602060405180830381865afa158015612b5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b81919061c80f565b9050612b8c81617c62565b6021546027546040517f91d148540000000000000000000000000000000000000000000000000000000081527f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a60048201526001600160a01b03918216602482015260009291909116906391d1485490604401602060405180830381865afa158015612c1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c40919061c80f565b9050612c4b81617c62565b6025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b158015612cbd57600080fd5b505af1158015612cd1573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015612d4a57600080fd5b505af1158015612d5e573d6000803e3d6000fd5b5050602754604080516001600160a01b03928316815291891660208301527f4d3470c839d3c4dd664eec934b920c12fe0966e3185103dd40149496815df2b6935001905060405180910390a16021546040517f950837aa0000000000000000000000000000000000000000000000000000000081526001600160a01b0387811660048301529091169063950837aa90602401600060405180830381600087803b158015612e0a57600080fd5b505af1158015612e1e573d6000803e3d6000fd5b50505050612ea285602160009054906101000a90046001600160a01b03166001600160a01b0316635b1125916040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e9d919061caa7565b617cb4565b6021546040517f91d148540000000000000000000000000000000000000000000000000000000081527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460048201526001600160a01b038781166024830152909116906391d1485490604401602060405180830381865afa158015612f2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f4f919061c80f565b9350612f5a84617c62565b6021546040517f91d148540000000000000000000000000000000000000000000000000000000081527f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a60048201526001600160a01b038781166024830152909116906391d1485490604401602060405180830381865afa158015612fe3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613007919061c80f565b925061301283617c62565b6021546027546040517f91d148540000000000000000000000000000000000000000000000000000000081527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460048201526001600160a01b0391821660248201529116906391d1485490604401602060405180830381865afa15801561309d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130c1919061c80f565b91506130cc82617be8565b6021546027546040517f91d148540000000000000000000000000000000000000000000000000000000081527f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a60048201526001600160a01b0391821660248201529116906391d1485490604401602060405180830381865afa158015613157573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061317b919061c80f565b905061263981617be8565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015611a7f57838290600052602060002090600202016040518060400160405290816000820180546131dd9061c860565b80601f01602080910402602001604051908101604052809291908181526020018280546132099061c860565b80156132565780601f1061322b57610100808354040283529160200191613256565b820191906000526020600020905b81548152906001019060200180831161323957829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156132db57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161329d5790505b505050505081525050815260200190600101906131aa565b6023546026546040516000602482018190526001600160a01b039384166044830152929091166064820152819060840160408051601f198184030181529181526020820180516001600160e01b03167fc513169100000000000000000000000000000000000000000000000000000000179052602754905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa79060240161157a565b6021546040517feab103df000000000000000000000000000000000000000000000000000000008152600160048201526001600160a01b039091169063eab103df90602401600060405180830381600087803b15801561340b57600080fd5b505af115801561341f573d6000803e3d6000fd5b50506021546023546040517f9a5904270000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015291169250639a5904279150602401600060405180830381600087803b15801561348557600080fd5b505af1158015613499573d6000803e3d6000fd5b50506023546021546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424060248201529116925063095ea7b391506044016020604051808303816000875af115801561350d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613531919061c80f565b50602480546021546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424093810193909352169063095ea7b3906044016020604051808303816000875af11580156135a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135c8919061c80f565b50604080517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152815160058183030181526025820192839052630618f58760e51b9092527f584a7938000000000000000000000000000000000000000000000000000000006029820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090604901612533565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a09060009060250160408051808303601f19018152908290526023546020546370a0823160e01b84526001600160a01b0390811660048501529193506000929116906370a0823190602401602060405180830381865afa1580156136ee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613712919061c9ea565b905061371f816000617b90565b6023546021546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015613770573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613794919061c9ea565b601f54604080516001600160a01b0361010090930483166024820152604480820189905282518083039091018152606490910182526020810180517fa9059cbb000000000000000000000000000000000000000000000000000000006001600160e01b0390911617905260235491517ff30c7ba300000000000000000000000000000000000000000000000000000000815293945092737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba39261385a92911690600090869060040161ca03565b600060405180830381600087803b15801561387457600080fd5b505af1158015613888573d6000803e3d6000fd5b50506020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561390157600080fd5b505af1158015613915573d6000803e3d6000fd5b505050507f689a5a5cb55e795ffe4cd8b419cd3bb0a3373974c54d25f64e734d7388b93e9b601f60019054906101000a90046001600160a01b0316602960405161396092919061cbad565b60405180910390a1601f546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156139e157600080fd5b505af11580156139f5573d6000803e3d6000fd5b50506023546020546040516001600160a01b039283169450911691507fde7603a6ed5d07c9f43597ccfe9043d15b66d3284f0de321f5cdf56329e6e03590613a43908990899060299061cbcf565b60405180910390a36021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015613ac057600080fd5b505af1158015613ad4573d6000803e3d6000fd5b50506023546020546040516001600160a01b039283169450911691507f7b53ec10a80164e60591c43d9c222e9354886981b880a3fba19c9ceb77fb972190613b22908990899060299061cbcf565b60405180910390a360275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613b8357600080fd5b505af1158015613b97573d6000803e3d6000fd5b50506021546020546023546040517f99a3c3560000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506399a3c3569450613bf79392831692909116908a908a9060299060040161cbfa565b600060405180830381600087803b158015613c1157600080fd5b505af1158015613c25573d6000803e3d6000fd5b50506023546020546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a08231906024015b602060405180830381865afa158015613c79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c9d919061c9ea565b9050613ca98187617b90565b6023546021546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015613cfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d1e919061c9ea565b9050613d2e81612154898761ca5a565b602354601f546020546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526101009092046001600160a01b0390811660048401529081166024830152600092169063dd62ed3e90604401602060405180830381865afa158015613da6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dca919061c9ea565b9050613dd7816000617b90565b602354601f546040516370a0823160e01b81526101009091046001600160a01b03908116600483015260009216906370a0823190602401602060405180830381865afa158015613e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e4f919061c9ea565b9050613e5c816000617b90565b505050505050505050565b6040517f68656c6c6f000000000000000000000000000000000000000000000000000000602082015260019060009060250160408051808303601f190181529082905260275463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613f0057600080fd5b505af1158015613f14573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015613f8457600080fd5b505af1158015613f98573d6000803e3d6000fd5b50506021546023546040517f99a3c3560000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506399a3c356935061148f9260009216908790879060299060040161cbfa565b6027546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b15801561406457600080fd5b505af1158015614078573d6000803e3d6000fd5b50506021546023546040517f9a5904270000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015291169250639a5904279150602401600060405180830381600087803b1580156140de57600080fd5b505af11580156140f2573d6000803e3d6000fd5b5050604051630618f58760e51b81527f584a7938000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561416257600080fd5b505af1158015614176573d6000803e3d6000fd5b50506021546026546023546040517fd9caed120000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082166024820152600160448201529116925063d9caed129150606401600060405180830381600087803b1580156141ee57600080fd5b505af1158015614202573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156107a757600080fd5b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015611a7f5783829060005260206000200180546142a79061c860565b80601f01602080910402602001604051908101604052809291908181526020018280546142d39061c860565b80156143205780601f106142f557610100808354040283529160200191614320565b820191906000526020600020905b81548152906001019060200180831161430357829003601f168201915b505050505081526020019060010190614288565b604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156143a057600080fd5b505af11580156143b4573d6000803e3d6000fd5b50506021546040517f9a590427000000000000000000000000000000000000000000000000000000008152600060048201526001600160a01b039091169250639a590427915060240161078d565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015611a7f5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156144d057602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116144925790505b50505050508152505081526020019060010190614426565b602354602654604051600160248201526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a20000000000000000000000000000000000000000000000000000000017905260275490517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156145cc57600080fd5b505af11580156145e0573d6000803e3d6000fd5b50506021546023546040517f9a5904270000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015291169250639a5904279150602401600060405180830381600087803b15801561464657600080fd5b505af115801561465a573d6000803e3d6000fd5b5050604051630618f58760e51b81527f584a7938000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156146ca57600080fd5b505af11580156146de573d6000803e3d6000fd5b50506021546020546023546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f2945061473c939283169290911690600190879060040161c9b3565b600060405180830381600087803b15801561475657600080fd5b505af115801561476a573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561262557600080fd5b604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561483857600080fd5b505af115801561484c573d6000803e3d6000fd5b50506021546040517f9b19251a000000000000000000000000000000000000000000000000000000008152600060048201526001600160a01b039091169250639b19251a915060240161078d565b604080516004808252602480830184526020830180516001600160e01b03167f6ed701690000000000000000000000000000000000000000000000000000000017905260235460265494516370a0823160e01b81526001600160a01b0395861693810193909352620186a0946000939116916370a082319101602060405180830381865afa158015614930573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614954919061c9ea565b9050614961816000617b90565b6023546021546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156149b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906149d6919061c9ea565b601f54604080516001600160a01b0361010090930483166024820152604480820189905282518083039091018152606490910182526020810180517fa9059cbb000000000000000000000000000000000000000000000000000000006001600160e01b0390911617905260235491517ff30c7ba300000000000000000000000000000000000000000000000000000000815293945092737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba392614a9c92911690600090869060040161ca03565b600060405180830381600087803b158015614ab657600080fd5b505af1158015614aca573d6000803e3d6000fd5b50506020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015614b4357600080fd5b505af1158015614b57573d6000803e3d6000fd5b5050601f546040516101009091046001600160a01b031681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09250602001905060405180910390a16021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015614c1557600080fd5b505af1158015614c29573d6000803e3d6000fd5b50506023546020546040516001600160a01b039283169450911691507f6478cbb6e28c0823c691dfd74c01c985634faddd4c401b990fe4ec26277ea8d590614c74908990899061cc4f565b60405180910390a360275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614cd557600080fd5b505af1158015614ce9573d6000803e3d6000fd5b50506021546020546023546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f29450614d469392831692909116908a908a9060040161c9b3565b600060405180830381600087803b158015614d6057600080fd5b505af1158015614d74573d6000803e3d6000fd5b50506023546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015614dc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614deb919061c9ea565b9050614df8816000617b90565b6023546021546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015614e49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614e6d919061c9ea565b9050613d2e8185617b90565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a09060009060250160408051808303601f190181529082905260255463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614f1457600080fd5b505af1158015614f28573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250614ffe919060040161c7fc565b600060405180830381600087803b15801561501857600080fd5b505af115801561502c573d6000803e3d6000fd5b50506021546020546023546040517f99a3c3560000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506399a3c356945061148f9392831692909116908790879060299060040161cbfa565b602154604080518082018252601b81527f4552433230437573746f647955706772616465546573742e736f6c00000000006020808301919091528251908101909252600082526025546150ec936001600160a01b03908116939116617d15565b6021546023546026546040516370a0823160e01b81526001600160a01b03918216600482015292811692620186a09260009216906370a0823190602401602060405180830381865afa158015615146573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061516a919061c9ea565b9050615177816000617b90565b6023546040516370a0823160e01b81526001600160a01b03858116600483015260009216906370a0823190602401602060405180830381865afa1580156151c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906151e6919061c9ea565b602654604080516001600160a01b039283166024820152604480820188905282518083039091018152606490910182526020810180516001600160e01b03167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260235491517ff30c7ba300000000000000000000000000000000000000000000000000000000815293945092737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba3926152a592911690600090869060040161ca03565b600060405180830381600087803b1580156152bf57600080fd5b505af11580156152d3573d6000803e3d6000fd5b50506040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b0388166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561534857600080fd5b505af115801561535c573d6000803e3d6000fd5b50506023546026546040518881526001600160a01b039283169450911691507fd4dabfe72081670cc78f2ebda8e2eddaf3feebde6288dcb8fe673b3dc201b5a49060200160405180910390a360275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561540157600080fd5b505af1158015615415573d6000803e3d6000fd5b50506026546023546040517fd9caed120000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152908216602482015260448101889052908816925063d9caed129150606401600060405180830381600087803b15801561548b57600080fd5b505af115801561549f573d6000803e3d6000fd5b50506023546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156154f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615516919061c9ea565b90506155228186617b90565b6023546040516370a0823160e01b81526001600160a01b03888116600483015260009216906370a0823190602401602060405180830381865afa15801561556d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615591919061c9ea565b90506155a181612154888761ca5a565b602354601f546040516370a0823160e01b81526101009091046001600160a01b03908116600483015260009216906370a0823190602401602060405180830381865afa1580156155f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615619919061c9ea565b9050615626816000617b90565b5050505050505050565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015611a7f5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156156fe57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116156c05790505b50505050508152505081526020019060010190615654565b6021546040517feab103df000000000000000000000000000000000000000000000000000000008152600160048201526103e8916001600160a01b03169063eab103df90602401600060405180830381600087803b15801561577757600080fd5b505af115801561578b573d6000803e3d6000fd5b50506023546021546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424060248201529116925063095ea7b391506044016020604051808303816000875af11580156157ff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615823919061c80f565b50602480546021546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424093810193909352169063095ea7b3906044016020604051808303816000875af1158015615896573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906158ba919061c80f565b506023546021546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801561590c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615930919061c9ea565b90506000604051602001615967907f68656c6c6f000000000000000000000000000000000000000000000000000000815260050190565b60408051808303601f19018152908290526021546381bad6f360e01b8352600160048401819052602484018190526044840181905260648401526001600160a01b031660848301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156159ea57600080fd5b505af11580156159fe573d6000803e3d6000fd5b505060235460265460405160609190911b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208201526001600160a01b0390911692507f1dafa057cc5c3bccb5ad974129a2bccd3c74002d9dfd7062404ba9523b18d6ae915060340160408051601f1981840301815290829052615a87918790869061cc68565b60405180910390a26021546026546040805160609290921b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208301528051808303601401815260348301918290526023547fe609055e000000000000000000000000000000000000000000000000000000009092526001600160a01b039384169363e609055e93615b269391909116908890879060380161ca6d565b600060405180830381600087803b158015615b4057600080fd5b505af1158015615b54573d6000803e3d6000fd5b50505050615bd78383615b67919061cc93565b6023546021546040516370a0823160e01b81526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa158015615bb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612154919061c9ea565b505050565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015611a7f578382906000526020600020018054615c1f9061c860565b80601f0160208091040260200160405190810160405280929190818152602001828054615c4b9061c860565b8015615c985780601f10615c6d57610100808354040283529160200191615c98565b820191906000526020600020905b815481529060010190602001808311615c7b57829003601f168201915b505050505081526020019060010190615c00565b60085460009060ff1615615cc4575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015615d55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615d79919061c9ea565b1415905090565b60285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015615dd957600080fd5b505af1158015615ded573d6000803e3d6000fd5b5050602854604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250615ec3919060040161c7fc565b600060405180830381600087803b158015615edd57600080fd5b505af1158015615ef1573d6000803e3d6000fd5b50505050602160009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b158015615f4557600080fd5b505af1158015615f59573d6000803e3d6000fd5b505060285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015615fb657600080fd5b505af1158015615fca573d6000803e3d6000fd5b5050602854604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506160a0919060040161c7fc565b600060405180830381600087803b1580156160ba57600080fd5b505af11580156160ce573d6000803e3d6000fd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561612257600080fd5b505af1158015616136573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561619357600080fd5b505af11580156161a7573d6000803e3d6000fd5b50505050602160009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156161fb57600080fd5b505af115801561620f573d6000803e3d6000fd5b5050602354602654604051620186a0602482018190526001600160a01b0393841660448301529290911660648201529092506000915060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a20000000000000000000000000000000000000000000000000000000017905251630618f58760e51b81527fd93c0665000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156162f857600080fd5b505af115801561630c573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561636957600080fd5b505af115801561637d573d6000803e3d6000fd5b50506021546020546023546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f294506163da9392831692909116908790879060040161c9b3565b600060405180830381600087803b1580156163f457600080fd5b505af1158015616408573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561646557600080fd5b505af1158015616479573d6000803e3d6000fd5b50505050602160009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156164cd57600080fd5b505af11580156164e1573d6000803e3d6000fd5b50506023546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a08231906024015b602060405180830381865afa158015616535573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616559919061c9ea565b9050616566816000617b90565b6023546021546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156165b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906165db919061c9ea565b601f54604080516001600160a01b0361010090930483166024820152604480820189905282518083039091018152606490910182526020810180517fa9059cbb000000000000000000000000000000000000000000000000000000006001600160e01b0390911617905260235491517ff30c7ba300000000000000000000000000000000000000000000000000000000815293945092737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba3926166a192911690600090869060040161ca03565b600060405180830381600087803b1580156166bb57600080fd5b505af11580156166cf573d6000803e3d6000fd5b50506020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561674857600080fd5b505af115801561675c573d6000803e3d6000fd5b5050601f54602354602654604080516101009094046001600160a01b039081168552602085018c9052928316908401521660608201527f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609250608001905060405180910390a16021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561683757600080fd5b505af115801561684b573d6000803e3d6000fd5b50506023546020546040516001600160a01b039283169450911691507f6478cbb6e28c0823c691dfd74c01c985634faddd4c401b990fe4ec26277ea8d590616896908990899061cc4f565b60405180910390a360275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156168f757600080fd5b505af115801561690b573d6000803e3d6000fd5b50506021546020546023546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f294506169689392831692909116908a908a9060040161c9b3565b600060405180830381600087803b15801561698257600080fd5b505af1158015616996573d6000803e3d6000fd5b50506023546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401613c5c565b60235460265460408051620186a060248083018290526001600160a01b039586166044840181905295909416606480840182905284518085039091018152608490930184526020830180516001600160e01b03167f357fc5a20000000000000000000000000000000000000000000000000000000017905292516370a0823160e01b815260048101939093529390926000926370a082319101616518565b6060601580548060200260200160405190810160405280929190818152602001828054801561165b576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161163d575050505050905090565b600080604051602001616b05907f68656c6c6f000000000000000000000000000000000000000000000000000000815260050190565b60408051808303601f190181529082905260275463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015616b6c57600080fd5b505af1158015616b80573d6000803e3d6000fd5b5050604051630618f58760e51b81527f951e19ed000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401614ffe565b60405163ca669fa760e01b81526101236004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015616c2957600080fd5b505af1158015616c3d573d6000803e3d6000fd5b50506040805161012360248201527f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a60448083019190915282518083039091018152606490910182526020810180516001600160e01b03167fe2517d3f0000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250616d09919060040161c7fc565b600060405180830381600087803b158015616d2357600080fd5b505af1158015616d37573d6000803e3d6000fd5b5050602154602480546040517f9a5904270000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015292169350639a59042792500161078d565b602354602654604051600160248201526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a20000000000000000000000000000000000000000000000000000000017905260275490517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b158015616e6b57600080fd5b505af1158015616e7f573d6000803e3d6000fd5b50506021546023546040517f9a5904270000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015291169250639a5904279150602401600060405180830381600087803b158015616ee557600080fd5b505af1158015616ef9573d6000803e3d6000fd5b5050604051630618f58760e51b81527f584a7938000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015616f6957600080fd5b505af1158015616f7d573d6000803e3d6000fd5b50506021546020546023546040517f99a3c3560000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506399a3c356945061473c939283169290911690600190879060299060040161cbfa565b6021546023546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600092919091169063d936547e90602401602060405180830381865afa158015617048573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061706c919061c80f565b9050617079600182617b0e565b6021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156170ee57600080fd5b505af1158015617102573d6000803e3d6000fd5b50506023546040516001600160a01b0390911692507f51085ddf9ebdded84b76e829eb58c4078e4b5bdf97d9a94723f336039da467919150600090a260255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561719757600080fd5b505af11580156171ab573d6000803e3d6000fd5b50506021546023546040517f9a5904270000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015291169250639a5904279150602401600060405180830381600087803b15801561721157600080fd5b505af1158015617225573d6000803e3d6000fd5b50506021546023546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063d936547e9150602401602060405180830381865afa15801561728e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906172b2919061c80f565b9050611943600082617b0e565b602354602654604051620186a0602482018190526001600160a01b03938416604483015292909116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167fc51316910000000000000000000000000000000000000000000000000000000017905260235460265491516370a0823160e01b81526001600160a01b0392831660048201529293506000929116906370a0823190602401602060405180830381865afa158015617386573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906173aa919061c9ea565b90506173b7816000617b90565b6023546021546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015617408573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061742c919061c9ea565b601f54604080516001600160a01b0361010090930483166024820152604480820189905282518083039091018152606490910182526020810180517fa9059cbb000000000000000000000000000000000000000000000000000000006001600160e01b0390911617905260235491517ff30c7ba300000000000000000000000000000000000000000000000000000000815293945092737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba3926174f292911690600090869060040161ca03565b600060405180830381600087803b15801561750c57600080fd5b505af1158015617520573d6000803e3d6000fd5b50506020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561759957600080fd5b505af11580156175ad573d6000803e3d6000fd5b5050601f547f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60925061010090046001600160a01b031690506175f060028861cca6565b602354602654604080516001600160a01b03958616815260208101949094529184168383015292909216606082015290519081900360800190a16021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561769f57600080fd5b505af11580156176b3573d6000803e3d6000fd5b50506023546020546040516001600160a01b039283169450911691507f6478cbb6e28c0823c691dfd74c01c985634faddd4c401b990fe4ec26277ea8d5906176fe908990899061cc4f565b60405180910390a360275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561775f57600080fd5b505af1158015617773573d6000803e3d6000fd5b50506021546020546023546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f294506177d09392831692909116908a908a9060040161c9b3565b600060405180830381600087803b1580156177ea57600080fd5b505af11580156177fe573d6000803e3d6000fd5b50506023546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015617851573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190617875919061c9ea565b90506178868161215460028961cca6565b6023546021546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156178d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906178fb919061c9ea565b9050613d2e8161790c60028a61cca6565b612154908761ca5a565b60255460405163ca669fa760e01b81526001600160a01b039091166004820152620186a090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561797457600080fd5b505af1158015617988573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250617a5e919060040161c7fc565b600060405180830381600087803b158015617a7857600080fd5b505af1158015617a8c573d6000803e3d6000fd5b50506021546026546023546040517fd9caed120000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082166024820152604481018690529116925063d9caed12915060640161260b565b6000617af961c395565b617b04848483617d2a565b9150505b92915050565b6040517ff7fe347700000000000000000000000000000000000000000000000000000000815282151560048201528115156024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f7fe3477906044015b60006040518083038186803b158015617b7c57600080fd5b505afa1580156114bd573d6000803e3d6000fd5b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c5490604401617b64565b6040517fa59828850000000000000000000000000000000000000000000000000000000081528115156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063a5982885906024015b60006040518083038186803b158015617c4e57600080fd5b505afa158015612639573d6000803e3d6000fd5b6040517f0c9fd5810000000000000000000000000000000000000000000000000000000081528115156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90630c9fd58190602401617c36565b6040517f515361f60000000000000000000000000000000000000000000000000000000081526001600160a01b03808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f690604401617b64565b617d1d61c395565b6126398585858486617da5565b600080617d378584617ea5565b9050617d9a6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001617d8592919061cce1565b60405160208183030381529060405285617eb1565b9150505b9392505050565b6040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201528190737109709ecfa91a80626ff3989d68f67f5b1dd12d9081906306447d5690602401600060405180830381600087803b158015617e1757600080fd5b505af1925050508015617e28575060015b617e3d57617e3887878787617edf565b6121de565b617e4987878787617edf565b806001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015617e8457600080fd5b505af1158015617e98573d6000803e3d6000fd5b5050505050505050505050565b6000617d9e8383617ef8565b60c08101515160009015617ed557617ece84848460c00151617f13565b9050617d9e565b617ece84846180b9565b6000617eeb84836181a4565b90506126398582856181b0565b6000617f04838361857a565b617d9e83836020015184617eb1565b600080617f1e61858a565b90506000617f2c868361865d565b90506000617f438260600151836020015185618b03565b90506000617f5383838989618d15565b90506000617f6082619b92565b602081015181519192509060030b15617fd357898260400151604051602001617f8a92919061cd03565b60408051601f19818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252617fca9160040161c7fc565b60405180910390fd5b60006180166040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001619d61565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d9061806990849060040161c7fc565b602060405180830381865afa158015618086573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906180aa919061caa7565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc9259061810e90879060040161c7fc565b600060405180830381865afa15801561812b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052618153919081019061ce3d565b90506000618181828560405160200161816d92919061ce72565b604051602081830303815290604052619f61565b90506001600160a01b038116617b04578484604051602001617f8a92919061cea1565b6000617f048383619f74565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201527fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61036024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90600090829063667f9d7090604401602060405180830381865afa15801561824c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190618270919061c9ea565b90508061841757600061828286619f80565b604080518082018252600581527f352e302e300000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061830d905b6040805180820182526000808252602091820152815180830190925284518252808501908201529061a063565b80618319575060008451115b1561839c576040517f4f1ef2860000000000000000000000000000000000000000000000000000000081526001600160a01b03871690634f1ef28690618365908890889060040161cce1565b600060405180830381600087803b15801561837f57600080fd5b505af1158015618393573d6000803e3d6000fd5b50505050618411565b6040517f3659cfe60000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152871690633659cfe690602401600060405180830381600087803b1580156183f857600080fd5b505af115801561840c573d6000803e3d6000fd5b505050505b50612639565b80600061842382619f80565b604080518082018252600581527f352e302e3000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150618485906182e0565b80618491575060008551115b15618516576040517f9623609d0000000000000000000000000000000000000000000000000000000081526001600160a01b03831690639623609d906184df908a908a908a9060040161cf4c565b600060405180830381600087803b1580156184f957600080fd5b505af115801561850d573d6000803e3d6000fd5b505050506121de565b6040517f99a88ec40000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015287811660248301528316906399a88ec490604401600060405180830381600087803b158015617e8457600080fd5b6185868282600061a077565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c9061861190849060040161cf7d565b600060405180830381865afa15801561862e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052618656919081019061cfc4565b9250505090565b61868f6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d90506186da6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6186e38561a17a565b602082015260006186f38661a55f565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015618735573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261875d919081019061cfc4565b86838560200151604051602001618777949392919061d00d565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb11906187cf90859060040161c7fc565b600060405180830381865afa1580156187ec573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052618814919081019061cfc4565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f69061885c90849060040161d111565b602060405180830381865afa158015618879573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061889d919061c80f565b6188b25781604051602001617f8a919061d163565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906188f790849060040161d1f5565b600060405180830381865afa158015618914573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261893c919081019061cfc4565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f69061898390849060040161d247565b602060405180830381865afa1580156189a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906189c4919061c80f565b15618a59576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890618a0e90849060040161d247565b600060405180830381865afa158015618a2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052618a53919081019061cfc4565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001618a7e919061d299565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401618aaa92919061d305565b600060405180830381865afa158015618ac7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052618aef919081019061cfc4565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081618b1f5790505090506040518060400160405280600481526020017f677265700000000000000000000000000000000000000000000000000000000081525081600081518110618b7f57618b7f61d32a565b60200260200101819052506040518060400160405280600381526020017f2d726c000000000000000000000000000000000000000000000000000000000081525081600181518110618bd357618bd361d32a565b602002602001018190525084604051602001618bef919061d359565b60405160208183030381529060405281600281518110618c1157618c1161d32a565b602002602001018190525082604051602001618c2d919061d3c5565b60405160208183030381529060405281600381518110618c4f57618c4f61d32a565b60200260200101819052506000618c6582619b92565b602080820151604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000008185019081528251808401845260008082529086015282518084019093529051825292810192909252919250618cf6906040805180820182526000808252602091820152815180830190925284518252808501908201529061a7e2565b618d0b5785604051602001617f8a919061d406565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015618d65565b511590565b618ed957826020015115618e21576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401617fca565b8260c0015115618ed9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401617fca565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081618ef257905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280618f4d9061d497565b935060ff1681518110618f6257618f6261d32a565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001618fb3919061d4b6565b604051602081830303815290604052828280618fce9061d497565b935060ff1681518110618fe357618fe361d32a565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806190309061d497565b935060ff16815181106190455761904561d32a565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806190929061d497565b935060ff16815181106190a7576190a761d32a565b602002602001018190525087602001518282806190c39061d497565b935060ff16815181106190d8576190d861d32a565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806191259061d497565b935060ff168151811061913a5761913a61d32a565b6020908102919091010152875182826191528161d497565b935060ff16815181106191675761916761d32a565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806191b49061d497565b935060ff16815181106191c9576191c961d32a565b60200260200101819052506191dd4661a843565b82826191e88161d497565b935060ff16815181106191fd576191fd61d32a565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c65000000000000000000000000000000000081525082828061924a9061d497565b935060ff168151811061925f5761925f61d32a565b6020026020010181905250868282806192779061d497565b935060ff168151811061928c5761928c61d32a565b60209081029190910101528551156193b35760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826192dd8161d497565b935060ff16815181106192f2576192f261d32a565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d9061934290899060040161c7fc565b600060405180830381865afa15801561935f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052619387919081019061cfc4565b82826193928161d497565b935060ff16815181106193a7576193a761d32a565b60200260200101819052505b8460200151156194835760408051808201909152601281527f2d2d766572696679536f75726365436f64650000000000000000000000000000602082015282826193fc8161d497565b935060ff16815181106194115761941161d32a565b60200260200101819052506040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525082828061945e9061d497565b935060ff16815181106194735761947361d32a565b602002602001018190525061964a565b6194bb618d608660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b61954e5760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826194fe8161d497565b935060ff16815181106195135761951361d32a565b60200260200101819052508460a00151604051602001619533919061d359565b60405160208183030381529060405282828061945e9061d497565b8460c0015115801561959157506040808901518151808301835260008082526020918201528251808401909352815183529081019082015261958f90511590565b155b1561964a5760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826195d58161d497565b935060ff16815181106195ea576195ea61d32a565b60200260200101819052506195fe8861a8e3565b60405160200161960e919061d359565b6040516020818303038152906040528282806196299061d497565b935060ff168151811061963e5761963e61d32a565b60200260200101819052505b6040808601518151808301835260008082526020918201528251808401909352815183529081019082015261967e90511590565b6197135760408051808201909152600b81527f2d2d72656c617965724964000000000000000000000000000000000000000000602082015282826196c18161d497565b935060ff16815181106196d6576196d661d32a565b602002602001018190525084604001518282806196f29061d497565b935060ff16815181106197075761970761d32a565b60200260200101819052505b6060850151156198345760408051808201909152600681527f2d2d73616c7400000000000000000000000000000000000000000000000000006020820152828261975c8161d497565b935060ff16815181106197715761977161d32a565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa1580156197e0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052619808919081019061cfc4565b82826198138161d497565b935060ff16815181106198285761982861d32a565b60200260200101819052505b60e085015151156198db5760408051808201909152600a81527f2d2d6761734c696d6974000000000000000000000000000000000000000000006020820152828261987e8161d497565b935060ff16815181106198935761989361d32a565b60200260200101819052506198af8560e001516000015161a843565b82826198ba8161d497565b935060ff16815181106198cf576198cf61d32a565b60200260200101819052505b60e085015160200151156199855760408051808201909152600a81527f2d2d676173507269636500000000000000000000000000000000000000000000602082015282826199288161d497565b935060ff168151811061993d5761993d61d32a565b60200260200101819052506199598560e001516020015161a843565b82826199648161d497565b935060ff16815181106199795761997961d32a565b60200260200101819052505b60e08501516040015115619a2f5760408051808201909152600e81527f2d2d6d6178466565506572476173000000000000000000000000000000000000602082015282826199d28161d497565b935060ff16815181106199e7576199e761d32a565b6020026020010181905250619a038560e001516040015161a843565b8282619a0e8161d497565b935060ff1681518110619a2357619a2361d32a565b60200260200101819052505b60e08501516060015115619ad95760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282619a7c8161d497565b935060ff1681518110619a9157619a9161d32a565b6020026020010181905250619aad8560e001516060015161a843565b8282619ab88161d497565b935060ff1681518110619acd57619acd61d32a565b60200260200101819052505b60008160ff1667ffffffffffffffff811115619af757619af761c831565b604051908082528060200260200182016040528015619b2a57816020015b6060815260200190600190039081619b155790505b50905060005b8260ff168160ff161015619b8357838160ff1681518110619b5357619b5361d32a565b6020026020010151828260ff1681518110619b7057619b7061d32a565b6020908102919091010152600101619b30565b5093505050505b949350505050565b619bb96040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c91619c3f9186910161d521565b600060405180830381865afa158015619c5c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052619c84919081019061cfc4565b90506000619c92868361b3d2565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401619cc2919061c6ee565b6000604051808303816000875af1158015619ce1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052619d09919081019061d568565b805190915060030b15801590619d225750602081015151155b8015619d315750604081015151155b15618d0b5781600081518110619d4957619d4961d32a565b6020026020010151604051602001617f8a919061d61e565b60606000619d968560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150619dcd9082905b9061b527565b15619f2a576000619e4a82619e4484619e3e619e108a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b9061b54e565b9061b5b0565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150619eae90829061b527565b15619f1857604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152619f15905b829061b635565b90505b619f218161b65b565b92505050617d9e565b8215619f43578484604051602001617f8a92919061d80a565b5050604080516020810190915260008152617d9e565b509392505050565b6000808251602084016000f09392505050565b6185868282600161a077565b60408051600481526024810182526020810180516001600160e01b03167fad3cb1cc00000000000000000000000000000000000000000000000000000000179052905160609160009182916001600160a01b03861691619fe0919061d8b1565b600060405180830381855afa9150503d806000811461a01b576040519150601f19603f3d011682016040523d82523d6000602084013e61a020565b606091505b509150915081801561a033575060208151115b1561a04c5780806020019051810190619b8a919061cfc4565b505060408051602081019091526000815292915050565b600061a06f838361b6c4565b159392505050565b8160a001511561a08657505050565b600061a09384848461b79f565b9050600061a0a082619b92565b602081015181519192509060030b15801561a13c5750604080518082018252600781527f53554343455353000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261a13c90604080518082018252600080825260209182015281518083019092528451825280850190820152619dc7565b1561a14957505050505050565b6040820151511561a169578160400151604051602001617f8a919061d8cd565b80604051602001617f8a919061d92b565b6060600061a1af8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061a214905b829061a7e2565b1561a28357604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617d9e9061a27e90839061bd3a565b61b65b565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261a2e5905b829061bdc4565b60010361a3b257604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261a34b90619f0e565b50604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617d9e9061a27e905b839061b635565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261a4119061a20d565b1561a54857604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061a47990839061be5e565b90506000816001835161a48c919061ca5a565b8151811061a49c5761a49c61d32a565b6020026020010151905061a53f61a27e61a5126040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529061bd3a565b95945050505050565b82604051602001617f8a919061d996565b50919050565b6060600061a5948360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061a5f69061a20d565b1561a60457617d9e8161b65b565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261a6639061a2de565b60010361a6cd57604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617d9e9061a27e9061a3ab565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261a72c9061a20d565b1561a54857604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061a79490839061be5e565b905060018151111561a7d057806002825161a7af919061ca5a565b8151811061a7bf5761a7bf61d32a565b602002602001015192505050919050565b5082604051602001617f8a919061d996565b80518251600091111561a7f757506000617b08565b8151835160208501516000929161a80d9161cc93565b61a817919061ca5a565b90508260200151810361a82e576001915050617b08565b82516020840151819020912014905092915050565b6060600061a8508361bf03565b600101905060008167ffffffffffffffff81111561a8705761a87061c831565b6040519080825280601f01601f19166020018201604052801561a89a576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461a8a457509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e534544000000000000000000000000000000000000000000008184019081528551808701875283815284019290925284518086019095525184529083015260609161a96f905b829061a063565b1561a9af57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261aa0e9061a968565b1561aa4e57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d495400000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261aaad9061a968565b1561aaed57505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261ab4c9061a968565b8061abb15750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261abb19061a968565b1561abf157505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261ac509061a968565b8061acb55750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261acb59061a968565b1561acf557505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261ad549061a968565b8061adb95750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261adb99061a968565b1561adf957505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261ae589061a968565b8061aebd5750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261aebd9061a968565b1561aefd57505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261af5c9061a968565b1561af9c57505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261affb9061a968565b1561b03b57505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261b09a9061a968565b1561b0da57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261b1399061a968565b1561b17957505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261b1d89061a968565b1561b21857505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261b2779061a968565b8061b2dc5750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261b2dc9061a968565b1561b31c57505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261b37b9061a968565b1561b3bb57505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151617f8a929060200161da74565b60608060005b845181101561b45d578185828151811061b3f45761b3f461d32a565b602002602001015160405160200161b40d92919061ce72565b60405160208183030381529060405291506001855161b42c919061ca5a565b811461b455578160405160200161b443919061dbdd565b60405160208183030381529060405291505b60010161b3d8565b5060408051600380825260808201909252600091816020015b606081526020019060019003908161b476579050509050838160008151811061b4a15761b4a161d32a565b60200260200101819052506040518060400160405280600281526020017f2d630000000000000000000000000000000000000000000000000000000000008152508160018151811061b4f55761b4f561d32a565b6020026020010181905250818160028151811061b5145761b51461d32a565b6020908102919091010152949350505050565b602080830151835183519284015160009361b545929184919061bfe5565b14159392505050565b6040805180820190915260008082526020820152600061b580846000015185602001518560000151866020015161c0f6565b905083602001518161b592919061ca5a565b8451859061b5a190839061ca5a565b90525060208401525090919050565b604080518082019091526000808252602082015281518351101561b5d5575081617b08565b602080830151908401516001911461b5fc5750815160208481015190840151829020919020145b801561b62d5782518451859061b61390839061ca5a565b905250825160208501805161b62990839061cc93565b9052505b509192915050565b604080518082019091526000808252602082015261b65483838361c216565b5092915050565b60606000826000015167ffffffffffffffff81111561b67c5761b67c61c831565b6040519080825280601f01601f19166020018201604052801561b6a6576020820181803683370190505b509050600060208201905061b654818560200151866000015161c2c1565b815181516000919081111561b6d7575081515b6020808501519084015160005b8381101561b790578251825180821461b76057600019602087101561b73f5760018461b71189602061ca5a565b61b71b919061cc93565b61b72690600861dc1e565b61b73190600261dd1c565b61b73b919061ca5a565b1990505b818116838216818103911461b75d579750617b089650505050505050565b50505b61b76b60208661cc93565b945061b77860208561cc93565b9350505060208161b789919061cc93565b905061b6e4565b5084518651618d0b919061dd28565b6060600061b7ab61858a565b6040805160ff808252612000820190925291925060009190816020015b606081526020019060019003908161b7c857905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061b8239061d497565b935060ff168151811061b8385761b83861d32a565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e330000000000000000000000000000000000000000000000000081525060405160200161b889919061dd48565b60405160208183030381529060405282828061b8a49061d497565b935060ff168151811061b8b95761b8b961d32a565b60200260200101819052506040518060400160405280600881526020017f76616c696461746500000000000000000000000000000000000000000000000081525082828061b9069061d497565b935060ff168151811061b91b5761b91b61d32a565b60200260200101819052508260405160200161b937919061d3c5565b60405160208183030381529060405282828061b9529061d497565b935060ff168151811061b9675761b96761d32a565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e74726163740000000000000000000000000000000000000000000081525082828061b9b49061d497565b935060ff168151811061b9c95761b9c961d32a565b602002602001018190525061b9de878461c33b565b828261b9e98161d497565b935060ff168151811061b9fe5761b9fe61d32a565b60209081029190910101528551511561baaa5760408051808201909152600b81527f2d2d7265666572656e63650000000000000000000000000000000000000000006020820152828261ba508161d497565b935060ff168151811061ba655761ba6561d32a565b602002602001018190525061ba7e86600001518461c33b565b828261ba898161d497565b935060ff168151811061ba9e5761ba9e61d32a565b60200260200101819052505b85608001511561bb185760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261baf38161d497565b935060ff168151811061bb085761bb0861d32a565b602002602001018190525061bb7e565b841561bb7e5760408051808201909152601281527f2d2d726571756972655265666572656e636500000000000000000000000000006020820152828261bb5d8161d497565b935060ff168151811061bb725761bb7261d32a565b60200260200101819052505b6040860151511561bc1a5760408051808201909152600d81527f2d2d756e73616665416c6c6f77000000000000000000000000000000000000006020820152828261bbc88161d497565b935060ff168151811061bbdd5761bbdd61d32a565b6020026020010181905250856040015182828061bbf99061d497565b935060ff168151811061bc0e5761bc0e61d32a565b60200260200101819052505b85606001511561bc845760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261bc638161d497565b935060ff168151811061bc785761bc7861d32a565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561bca25761bca261c831565b60405190808252806020026020018201604052801561bcd557816020015b606081526020019060019003908161bcc05790505b50905060005b8260ff168160ff16101561bd2e57838160ff168151811061bcfe5761bcfe61d32a565b6020026020010151828260ff168151811061bd1b5761bd1b61d32a565b602090810291909101015260010161bcdb565b50979650505050505050565b604080518082019091526000808252602082015281518351101561bd5f575081617b08565b8151835160208501516000929161bd759161cc93565b61bd7f919061ca5a565b6020840151909150600190821461bda0575082516020840151819020908220145b801561bdbb5783518551869061bdb790839061ca5a565b9052505b50929392505050565b600080826000015161bde8856000015186602001518660000151876020015161c0f6565b61bdf2919061cc93565b90505b8351602085015161be06919061cc93565b811161b654578161be168161dd8d565b925050826000015161be4d85602001518361be31919061ca5a565b865161be3d919061ca5a565b838660000151876020015161c0f6565b61be57919061cc93565b905061bdf5565b6060600061be6c848461bdc4565b61be7790600161cc93565b67ffffffffffffffff81111561be8f5761be8f61c831565b60405190808252806020026020018201604052801561bec257816020015b606081526020019060019003908161bead5790505b50905060005b8151811015619f595761bede61a27e868661b635565b82828151811061bef05761bef061d32a565b602090810291909101015260010161bec8565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061bf4c577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831061bf78576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061bf9657662386f26fc10000830492506010015b6305f5e100831061bfae576305f5e100830492506008015b612710831061bfc257612710830492506004015b6064831061bfd4576064830492506002015b600a8310617b085760010192915050565b60008085841161c0ec576020841161c098576000841561c03057600161c00c86602061ca5a565b61c01790600861dc1e565b61c02290600261dd1c565b61c02c919061ca5a565b1990505b835181168561c03f898961cc93565b61c049919061ca5a565b805190935082165b81811461c0835787841161c06b5787945050505050619b8a565b8361c0758161dda7565b94505082845116905061c051565b61c08d878561cc93565b945050505050619b8a565b83832061c0a5858861ca5a565b61c0af908761cc93565b91505b85821061c0ea5784822080820361c0d75761c0cd868461cc93565b9350505050619b8a565b61c0e260018461ca5a565b92505061c0b2565b505b5092949350505050565b6000838186851161c201576020851161c1b0576000851561c14257600161c11e87602061ca5a565b61c12990600861dc1e565b61c13490600261dd1c565b61c13e919061ca5a565b1990505b8451811660008761c1538b8b61cc93565b61c15d919061ca5a565b855190915083165b82811461c1a25781861061c18a5761c17d8b8b61cc93565b9650505050505050619b8a565b8561c1948161dd8d565b96505083865116905061c165565b859650505050505050619b8a565b508383206000905b61c1c2868961ca5a565b821161c1ff5785832080820361c1de5783945050505050619b8a565b61c1e960018561cc93565b935050818061c1f79061dd8d565b92505061c1b8565b505b61c20b878761cc93565b979650505050505050565b6040805180820190915260008082526020820152600061c248856000015186602001518660000151876020015161c0f6565b60208087018051918601919091525190915061c264908261ca5a565b83528451602086015161c277919061cc93565b810361c286576000855261c2b8565b8351835161c294919061cc93565b8551869061c2a390839061ca5a565b905250835161c2b2908261cc93565b60208601525b50909392505050565b6020811061c2f9578151835261c2d860208461cc93565b925061c2e560208361cc93565b915061c2f260208261ca5a565b905061c2c1565b600019811561c32857600161c30f83602061ca5a565b61c31b9061010061dd1c565b61c325919061ca5a565b90505b9151835183169219169190911790915250565b6060600061c349848461865d565b805160208083015160405193945061c3639390910161ddbe565b60405160208183030381529060405291505092915050565b610c9f8061de1783390190565b610ec28061eab683390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161c3d861c3dd565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161c3d86040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b8181101561c48f5783516001600160a01b031683526020938401939092019160010161c468565b509095945050505050565b60005b8381101561c4b557818101518382015260200161c49d565b50506000910152565b6000815180845261c4d681602086016020860161c49a565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561c5e6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b8181101561c5cc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261c5b684865161c4be565b602095860195909450929092019160010161c57c565b50919750505060209485019492909201915060010161c512565b50929695505050505050565b600081518084526020840193506020830160005b8281101561c6465781517fffffffff000000000000000000000000000000000000000000000000000000001686526020958601959091019060010161c606565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561c5e6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516040875261c6bc604088018261c4be565b905060208201519150868103602088015261c6d7818361c5f2565b96505050602093840193919091019060010161c678565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561c5e6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845261c75085835161c4be565b9450602093840193919091019060010161c716565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561c5e6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b038151168652602081015190506040602087015261c7e6604087018261c5f2565b955050602093840193919091019060010161c78d565b602081526000617d9e602083018461c4be565b60006020828403121561c82157600080fd5b81518015158114617d9e57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600181811c9082168061c87457607f821691505b60208210810361a559577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b601f821115615bd757806000526020600020601f840160051c8101602085101561c8d45750805b601f840160051c820191505b81811015612639576000815560010161c8e0565b815167ffffffffffffffff81111561c90e5761c90e61c831565b61c9228161c91c845461c860565b8461c8ad565b6020601f82116001811461c956576000831561c93e5750848201515b600019600385901b1c1916600184901b178455612639565b600084815260208120601f198516915b8281101561c986578785015182556020948501946001909201910161c966565b508482101561c9a45786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6001600160a01b03851681526001600160a01b0384166020820152826040820152608060608201526000618d0b608083018461c4be565b60006020828403121561c9fc57600080fd5b5051919050565b6001600160a01b038416815282602082015260606040820152600061a53f606083018461c4be565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115617b0857617b0861ca2b565b60808152600061ca80608083018761c4be565b6001600160a01b0386166020840152846040840152828103606084015261c20b818561c4be565b60006020828403121561cab957600080fd5b81516001600160a01b0381168114617d9e57600080fd5b6001600160a01b0381541682526001600160a01b03600182015416602083015260028101546040830152600060038201608060608501526000815461cb148161c860565b806080880152600182166000811461cb33576001811461cb6d5761cba1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831660a089015260a082151560051b890101935061cba1565b84600052602060002060005b8381101561cb985781548a820160a0015260019091019060200161cb79565b890160a0019450505b50919695505050505050565b6001600160a01b0383168152604060208201526000619b8a604083018461cad0565b83815260606020820152600061cbe8606083018561c4be565b8281036040840152618d0b818561cad0565b6001600160a01b03861681526001600160a01b038516602082015283604082015260a06060820152600061cc3160a083018561c4be565b828103608084015261cc43818561cad0565b98975050505050505050565b828152604060208201526000619b8a604083018461c4be565b60608152600061cc7b606083018661c4be565b8460208401528281036040840152618d0b818561c4be565b80820180821115617b0857617b0861ca2b565b60008261ccdc577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6001600160a01b0383168152604060208201526000619b8a604083018461c4be565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161cd3b81601a85016020880161c49a565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161cd7881601c84016020880161c49a565b01601c01949350505050565b6040516060810167ffffffffffffffff8111828210171561cda75761cda761c831565b60405290565b60008067ffffffffffffffff84111561cdc85761cdc861c831565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561cdf75761cdf761c831565b60405283815290508082840185101561ce0f57600080fd5b619f5984602083018561c49a565b600082601f83011261ce2e57600080fd5b617d9e8383516020850161cdad565b60006020828403121561ce4f57600080fd5b815167ffffffffffffffff81111561ce6657600080fd5b617b048482850161ce1d565b6000835161ce8481846020880161c49a565b83519083019061ce9881836020880161c49a565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161ced981601a85016020880161c49a565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161cf1681603384016020880161c49a565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b6001600160a01b03841681526001600160a01b038316602082015260606040820152600061a53f606083018461c4be565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000617d9e608083018461c4be565b60006020828403121561cfd657600080fd5b815167ffffffffffffffff81111561cfed57600080fd5b8201601f8101841361cffe57600080fd5b617b048482516020840161cdad565b6000855161d01f818460208a0161c49a565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161d059816001840160208a0161c49a565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161d09781600284016020890161c49a565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161d0d981600284016020880161c49a565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061d124604083018461c4be565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161d19b81601f85016020870161c49a565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061d208604083018461c4be565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061d25a604083018461c4be565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161d2d181601485016020870161c49a565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061d318604083018561c4be565b8281036020840152617d9a818561c4be565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161d39181600185016020870161c49a565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161d3d781846020870161c49a565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161d48a81604b85016020870161c49a565b91909101604b0192915050565b600060ff821660ff810361d4ad5761d4ad61ca2b565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161d51481602985016020870161c49a565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000617d9e608083018461c4be565b60006020828403121561d57a57600080fd5b815167ffffffffffffffff81111561d59157600080fd5b82016060818503121561d5a357600080fd5b61d5ab61cd84565b81518060030b811461d5bc57600080fd5b8152602082015167ffffffffffffffff81111561d5d857600080fd5b61d5e48682850161ce1d565b602083015250604082015167ffffffffffffffff81111561d60457600080fd5b61d6108682850161ce1d565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161d67c81602185016020870161c49a565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161d86881602185016020880161c49a565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161d8a581602e84016020880161c49a565b01602e01949350505050565b6000825161d8c381846020870161c49a565b9190910192915050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161d51481602985016020870161c49a565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161d98981602285016020870161c49a565b9190910160220192915050565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161d9ce81600e85016020870161c49a565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161daac81601885016020880161c49a565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161dae981601c84016020880161c49a565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161dbef81846020870161c49a565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b8082028115828204841417617b0857617b0861ca2b565b6001815b600184111561dc705780850481111561dc545761dc5461ca2b565b600184161561dc6257908102905b60019390931c92800261dc39565b935093915050565b60008261dc8757506001617b08565b8161dc9457506000617b08565b816001811461dcaa576002811461dcb45761dcd0565b6001915050617b08565b60ff84111561dcc55761dcc561ca2b565b50506001821b617b08565b5060208310610133831016604e8410600b841016171561dcf3575081810a617b08565b61dd00600019848461dc35565b806000190482111561dd145761dd1461ca2b565b029392505050565b6000617d9e838361dc78565b818103600083128015838313168383128216171561b6545761b65461ca2b565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161dd8081601c85016020870161c49a565b91909101601c0192915050565b6000600019820361dda05761dda061ca2b565b5060010190565b60008161ddb65761ddb661ca2b565b506000190190565b6000835161ddd081846020880161c49a565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161de0a81600184016020880161c49a565b0160010194935050505056fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220a043c41353215fce25ecb67a8a4f6f724aaa86dea8dcb0a6975bfb1f10ff3beb64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610e9e806100246000396000f3fe60806040526004361061006e5760003560e01c8063c51316911161004b578063c5131691146100d5578063c9028a36146100f5578063e04d4f9714610115578063f05b6abf1461012857005b8063357fc5a214610077578063676cc054146100975780636ed70169146100c057005b3661007557005b005b34801561008357600080fd5b506100756100923660046106ec565b610148565b6100aa6100a5366004610728565b6101de565b6040516100b79190610823565b60405180910390f35b3480156100cc57600080fd5b50610075610222565b3480156100e157600080fd5b506100756100f03660046106ec565b610257565b34801561010157600080fd5b50610075610110366004610836565b610332565b610075610123366004610996565b61036e565b34801561013457600080fd5b50610075610143366004610a82565b6103b2565b6101506103e7565b61017273ffffffffffffffffffffffffffffffffffffffff831633838661042a565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101d96001600055565b505050565b6040516060907f3658b46bab672c7672b69c2f0feda706eabdb7d2231421c96e9049b2db5e7eee90600090a1506040805160208101909152600081525b9392505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b61025f6103e7565b600061026c600285610b6c565b9050806000036102a8576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102ca73ffffffffffffffffffffffffffffffffffffffff841633848461042a565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101d96001600055565b7f689a5a5cb55e795ffe4cd8b419cd3bb0a3373974c54d25f64e734d7388b93e9b3382604051610363929190610bf0565b60405180910390a150565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa33348585856040516103a5959493929190610ce2565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103a59493929190610d6c565b600260005403610423576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526104bf9085906104c5565b50505050565b60006104e773ffffffffffffffffffffffffffffffffffffffff841683610560565b9050805160001415801561050c57508080602001905181019061050a9190610e2f565b155b156101d9576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061021b83836000846000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105939190610e4c565b60006040518083038185875af1925050503d80600081146105d0576040519150601f19603f3d011682016040523d82523d6000602084013e6105d5565b606091505b50915091506105e58683836105ef565b9695505050505050565b606082610604576105ff8261067e565b61021b565b8151158015610628575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610677576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610557565b508061021b565b80511561068e5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106e757600080fd5b919050565b60008060006060848603121561070157600080fd5b83359250610711602085016106c3565b915061071f604085016106c3565b90509250925092565b6000806000838503604081121561073e57600080fd5b602081121561074c57600080fd5b50839250602084013567ffffffffffffffff81111561076a57600080fd5b8401601f8101861361077b57600080fd5b803567ffffffffffffffff81111561079257600080fd5b8660208284010111156107a457600080fd5b939660209190910195509293505050565b60005b838110156107d05781810151838201526020016107b8565b50506000910152565b600081518084526107f18160208601602086016107b5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061021b60208301846107d9565b60006020828403121561084857600080fd5b813567ffffffffffffffff81111561085f57600080fd5b82016080818503121561021b57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156108e7576108e7610871565b604052919050565b600082601f83011261090057600080fd5b813567ffffffffffffffff81111561091a5761091a610871565b61094b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016108a0565b81815284602083860101111561096057600080fd5b816020850160208301376000918101602001919091529392505050565b80151581146106c057600080fd5b80356106e78161097d565b6000806000606084860312156109ab57600080fd5b833567ffffffffffffffff8111156109c257600080fd5b6109ce868287016108ef565b9350506020840135915060408401356109e68161097d565b809150509250925092565b600067ffffffffffffffff821115610a0b57610a0b610871565b5060051b60200190565b600082601f830112610a2657600080fd5b8135610a39610a34826109f1565b6108a0565b8082825260208201915060208360051b860101925085831115610a5b57600080fd5b602085015b83811015610a78578035835260209283019201610a60565b5095945050505050565b600080600060608486031215610a9757600080fd5b833567ffffffffffffffff811115610aae57600080fd5b8401601f81018613610abf57600080fd5b8035610acd610a34826109f1565b8082825260208201915060208360051b850101925088831115610aef57600080fd5b602084015b83811015610b3157803567ffffffffffffffff811115610b1357600080fd5b610b228b6020838901016108ef565b84525060209283019201610af4565b509550505050602084013567ffffffffffffffff811115610b5157600080fd5b610b5d86828701610a15565b92505061071f6040850161098b565b600082610ba2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015273ffffffffffffffffffffffffffffffffffffffff610c2e836106c3565b16604082015273ffffffffffffffffffffffffffffffffffffffff610c55602084016106c3565b166060820152600080604084013590508060808401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610ca157600080fd5b830160208101903567ffffffffffffffff811115610cbe57600080fd5b803603821315610ccd57600080fd5b608060a08501526105e560c085018284610ba7565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610d1760a08301866107d9565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610d62578151865260209586019590910190600101610d44565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610dff577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610dea8583516107d9565b94506020938401939190910190600101610db0565b505050508281036040840152610e158186610d30565b915050610e26606083018415159052565b95945050505050565b600060208284031215610e4157600080fd5b815161021b8161097d565b60008251610e5e8184602087016107b5565b919091019291505056fea26469706673582212200121b4788f0b35a4b6df21db4f43708a9b20e8b16f616e6f3300230e75bbdd1364736f6c634300081a0033a26469706673582212202713ad7e5cc2ad66e07178c4ad8198235384ac12fbcb7959c9ffe42aa9bdefc164736f6c634300081a0033", } // ERC20CustodyTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/erc20custodyupgradetest.sol/erc20custodyupgradetest.go b/v2/pkg/erc20custodyupgradetest.sol/erc20custodyupgradetest.go index aa23c9044..6e337869a 100644 --- a/v2/pkg/erc20custodyupgradetest.sol/erc20custodyupgradetest.go +++ b/v2/pkg/erc20custodyupgradetest.sol/erc20custodyupgradetest.go @@ -40,7 +40,7 @@ type RevertContext struct { // ERC20CustodyUpgradeTestMetaData contains all meta data concerning the ERC20CustodyUpgradeTest contract. var ERC20CustodyUpgradeTestMetaData = &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\":\"UPGRADE_INTERFACE_VERSION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WHITELISTER_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\":\"deposit\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"initialize\",\"inputs\":[{\"name\":\"gateway_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"tssAddress_\",\"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\":\"setSupportsLegacy\",\"inputs\":[{\"name\":\"_supportsLegacy\",\"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\":\"supportsLegacy\",\"inputs\":[],\"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\":\"unwhitelist\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateTSSAddress\",\"inputs\":[{\"name\":\"newTSSAddress\",\"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\":\"whitelist\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"whitelisted\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"token\",\"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\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Deposited\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"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\":\"Unwhitelisted\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedCustodyTSSAddress\",\"inputs\":[{\"name\":\"oldTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newTSSAddress\",\"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\":\"Whitelisted\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawn\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawnAndCalled\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"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\":\"WithdrawnAndReverted\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawnV2\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"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\":\"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\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LegacyMethodsNotSupported\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotWhitelisted\",\"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: "0x60a060405230608052348015601357600080fd5b5060805161295861003d60003960008181611928015281816119510152611b2701526129586000f3fe6080604052600436106101c25760003560e01c806385f438c1116100f7578063ad3cb1cc11610095578063d9caed1211610064578063d9caed12146105f6578063e609055e14610616578063e63ab1e914610636578063eab103df1461066a57600080fd5b8063ad3cb1cc14610530578063c0c53b8b14610586578063d547741f146105a6578063d936547e146105c657600080fd5b806399a3c356116100d157806399a3c356146104bb5780639a590427146104db5780639b19251a146104fb578063a217fddf1461051b57600080fd5b806385f438c11461040257806391d1485414610436578063950837aa1461049b57600080fd5b80633f4ba83a11610164578063570618e11161013e578063570618e1146103625780635b112591146103965780635c975abb146103b65780638456cb59146103ed57600080fd5b80633f4ba83a146103255780634f1ef2861461033a57806352d1902d1461034d57600080fd5b8063248a9ca3116101a0578063248a9ca314610256578063252f07bf146102b35780632f2ff15d146102e557806336568abe1461030557600080fd5b806301ffc9a7146101c7578063116191b6146101fc57806321fc65f214610234575b600080fd5b3480156101d357600080fd5b506101e76101e236600461216e565b61068a565b60405190151581526020015b60405180910390f35b34801561020857600080fd5b5060005461021c906001600160a01b031681565b6040516001600160a01b0390911681526020016101f3565b34801561024057600080fd5b5061025461024f36600461220e565b610723565b005b34801561026257600080fd5b506102a5610271366004612281565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101f3565b3480156102bf57600080fd5b506002546101e79074010000000000000000000000000000000000000000900460ff1681565b3480156102f157600080fd5b5061025461030036600461229a565b6108cc565b34801561031157600080fd5b5061025461032036600461229a565b610916565b34801561033157600080fd5b50610254610967565b6102546103483660046122f9565b61099c565b34801561035957600080fd5b506102a56109bb565b34801561036e57600080fd5b506102a57f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a81565b3480156103a257600080fd5b5060025461021c906001600160a01b031681565b3480156103c257600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101e7565b3480156103f957600080fd5b506102546109ea565b34801561040e57600080fd5b506102a57f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b34801561044257600080fd5b506101e761045136600461229a565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156104a757600080fd5b506102546104b6366004612402565b610a1c565b3480156104c757600080fd5b506102546104d636600461241f565b610ba1565b3480156104e757600080fd5b506102546104f6366004612402565b610d4f565b34801561050757600080fd5b50610254610516366004612402565b610e03565b34801561052757600080fd5b506102a5600081565b34801561053c57600080fd5b506105796040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101f391906124e6565b34801561059257600080fd5b506102546105a1366004612537565b610ebd565b3480156105b257600080fd5b506102546105c136600461229a565b6111b7565b3480156105d257600080fd5b506101e76105e1366004612402565b60016020526000908152604090205460ff1681565b34801561060257600080fd5b50610254610611366004612582565b6111fb565b34801561062257600080fd5b506102546106313660046125c3565b611312565b34801561064257600080fd5b506102a57f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b34801561067657600080fd5b50610254610685366004612662565b61155d565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061071d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61072b6115b3565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461075581611634565b61075d61163e565b6001600160a01b03851660009081526001602052604090205460ff166107af576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546107c9906001600160a01b0387811691168661169c565b6000546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690635131ab599061081a9088908a908990899089906004016126c8565b600060405180830381600087803b15801561083457600080fd5b505af1158015610848573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167f6478cbb6e28c0823c691dfd74c01c985634faddd4c401b990fe4ec26277ea8d58686866040516108939392919061270b565b60405180910390a3506108c560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461090681611634565b6109108383611736565b50505050565b6001600160a01b0381163314610958576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109628282611805565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61099181611634565b6109996118ab565b50565b6109a461191d565b6109ad826119ed565b6109b782826119f8565b5050565b60006109c5611b1c565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a1481611634565b610999611b7e565b6000610a2781611634565b6001600160a01b038216610a67576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254610a9e907f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4906001600160a01b0316611805565b50600254610ad6907f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a906001600160a01b0316611805565b50610b017f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483611736565b50610b2c7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a83611736565b50600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0384169081179091556040805182815260208101929092527f4d3470c839d3c4dd664eec934b920c12fe0966e3185103dd40149496815df2b6910160405180910390a15050565b610ba96115b3565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610bd381611634565b610bdb61163e565b6001600160a01b03861660009081526001602052604090205460ff16610c2d576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610c47906001600160a01b0388811691168761169c565b6000546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063aa0c0fc190610c9a9089908b908a908a908a908a906004016127da565b600060405180830381600087803b158015610cb457600080fd5b505af1158015610cc8573d6000803e3d6000fd5b50505050856001600160a01b0316876001600160a01b03167f7b53ec10a80164e60591c43d9c222e9354886981b880a3fba19c9ceb77fb972187878787604051610d159493929190612831565b60405180910390a350610d4760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a610d7981611634565b6001600160a01b038216610db9576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216600081815260016020526040808220805460ff19169055517f51085ddf9ebdded84b76e829eb58c4078e4b5bdf97d9a94723f336039da467919190a25050565b7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a610e2d81611634565b6001600160a01b038216610e6d576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166000818152600160208190526040808320805460ff1916909217909155517faab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a549190a25050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f085750825b905060008267ffffffffffffffff166001148015610f255750303b155b905081158015610f33575080155b15610f6a576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fcb5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0388161580610fe857506001600160a01b038716155b80610ffa57506001600160a01b038616155b15611031576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611039611bd9565b611041611be1565b611049611bd9565b611051611bf1565b600080546001600160a01b03808b167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617835560028054918b169190921617905561109f9087611736565b506110ca7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611736565b506110f57f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e488611736565b506111207f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a87611736565b5061114b7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a88611736565b5083156111ad5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546111f181611634565b6109108383611805565b6112036115b3565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461122d81611634565b61123561163e565b6001600160a01b03831660009081526001602052604090205460ff16611287576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61129b6001600160a01b038416858461169c565b826001600160a01b0316846001600160a01b03167fd4dabfe72081670cc78f2ebda8e2eddaf3feebde6288dcb8fe673b3dc201b5a4846040516112e091815260200190565b60405180910390a35061096260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b61131a6115b3565b61132261163e565b60025474010000000000000000000000000000000000000000900460ff16611376576040517f73cba66300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03841660009081526001602052604090205460ff166113c8576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015611428573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144c919061285d565b90506114636001600160a01b038616333087611c01565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038616907f1dafa057cc5c3bccb5ad974129a2bccd3c74002d9dfd7062404ba9523b18d6ae9089908990859085906370a0823190602401602060405180830381865afa1580156114ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150e919061285d565b6115189190612876565b878760405161152b9594939291906128b0565b60405180910390a250610d4760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b600061156881611634565b506002805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0161162e576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6109998133611c3a565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff161561169a576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040516001600160a01b0383811660248301526044820183905261096291859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611cc7565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166117fb576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556117b13390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061071d565b600091505061071d565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156117fb576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061071d565b6118b3611d43565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806119b657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166119aa7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b1561169a576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006109b781611634565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611a70575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611a6d9181019061285d565b60015b611ab6576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611b12576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611aad565b6109628383611d9e565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461169a576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b8661163e565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258336118ff565b61169a611df4565b611be9611df4565b61169a611e5b565b611bf9611df4565b61169a611e63565b6040516001600160a01b0384811660248301528381166044830152606482018390526109109186918216906323b872dd906084016116c9565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166109b7576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611aad565b6000611cdc6001600160a01b03841683611e96565b90508051600014158015611d01575080806020019051810190611cff91906128e9565b155b15610962576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401611aad565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1661169a576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611da782611eab565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611dec576109628282611f53565b6109b7611fc9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661169a576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611710611df4565b611e6b611df4565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff19169055565b6060611ea483836000612001565b9392505050565b806001600160a01b03163b600003611efa576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611aad565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611f709190612906565b600060405180830381855af49150503d8060008114611fab576040519150601f19603f3d011682016040523d82523d6000602084013e611fb0565b606091505b5091509150611fc08583836120b7565b95945050505050565b341561169a576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608147101561203f576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401611aad565b600080856001600160a01b0316848660405161205b9190612906565b60006040518083038185875af1925050503d8060008114612098576040519150601f19603f3d011682016040523d82523d6000602084013e61209d565b606091505b50915091506120ad8683836120b7565b9695505050505050565b6060826120cc576120c78261212c565b611ea4565b81511580156120e357506001600160a01b0384163b155b15612125576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611aad565b5080611ea4565b80511561213c5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561218057600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611ea457600080fd5b6001600160a01b038116811461099957600080fd5b60008083601f8401126121d757600080fd5b50813567ffffffffffffffff8111156121ef57600080fd5b60208301915083602082850101111561220757600080fd5b9250929050565b60008060008060006080868803121561222657600080fd5b8535612231816121b0565b94506020860135612241816121b0565b935060408601359250606086013567ffffffffffffffff81111561226457600080fd5b612270888289016121c5565b969995985093965092949392505050565b60006020828403121561229357600080fd5b5035919050565b600080604083850312156122ad57600080fd5b8235915060208301356122bf816121b0565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561230c57600080fd5b8235612317816121b0565b9150602083013567ffffffffffffffff81111561233357600080fd5b8301601f8101851361234457600080fd5b803567ffffffffffffffff81111561235e5761235e6122ca565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156123ca576123ca6122ca565b6040528181528282016020018710156123e257600080fd5b816020840160208301376000602083830101528093505050509250929050565b60006020828403121561241457600080fd5b8135611ea4816121b0565b60008060008060008060a0878903121561243857600080fd5b8635612443816121b0565b95506020870135612453816121b0565b945060408701359350606087013567ffffffffffffffff81111561247657600080fd5b61248289828a016121c5565b909450925050608087013567ffffffffffffffff8111156124a257600080fd5b87016080818a0312156124b457600080fd5b809150509295509295509295565b60005b838110156124dd5781810151838201526020016124c5565b50506000910152565b60208152600082518060208401526125058160408501602087016124c2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008060006060848603121561254c57600080fd5b8335612557816121b0565b92506020840135612567816121b0565b91506040840135612577816121b0565b809150509250925092565b60008060006060848603121561259757600080fd5b83356125a2816121b0565b925060208401356125b2816121b0565b929592945050506040919091013590565b600080600080600080608087890312156125dc57600080fd5b863567ffffffffffffffff8111156125f357600080fd5b6125ff89828a016121c5565b9097509550506020870135612613816121b0565b935060408701359250606087013567ffffffffffffffff81111561263657600080fd5b61264289828a016121c5565b979a9699509497509295939492505050565b801515811461099957600080fd5b60006020828403121561267457600080fd5b8135611ea481612654565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015260806060820152600061270060808301848661267f565b979650505050505050565b838152604060208201526000611fc060408301848661267f565b60008135612732816121b0565b6001600160a01b03168352602082013561274b816121b0565b6001600160a01b03166020840152604082810135908401526060820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe101811261279957600080fd5b820160208101903567ffffffffffffffff8111156127b657600080fd5b8036038213156127c557600080fd5b60806060860152611fc060808601828461267f565b6001600160a01b03871681526001600160a01b038616602082015284604082015260a06060820152600061281260a08301858761267f565b82810360808401526128248185612725565b9998505050505050505050565b84815260606020820152600061284b60608301858761267f565b82810360408401526127008185612725565b60006020828403121561286f57600080fd5b5051919050565b8181038181111561071d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6060815260006128c460608301878961267f565b85602084015282810360408401526128dd81858761267f565b98975050505050505050565b6000602082840312156128fb57600080fd5b8151611ea481612654565b600082516129188184602087016124c2565b919091019291505056fea2646970667358221220fbb55424e7ee194b89ec113d95e0692cfe9170bbcc6967609a29f30f15ae2be764736f6c634300081a0033", + Bin: "0x60a060405230608052348015601357600080fd5b5060805161295861003d60003960008181611928015281816119510152611b2701526129586000f3fe6080604052600436106101c25760003560e01c806385f438c1116100f7578063ad3cb1cc11610095578063d9caed1211610064578063d9caed12146105f6578063e609055e14610616578063e63ab1e914610636578063eab103df1461066a57600080fd5b8063ad3cb1cc14610530578063c0c53b8b14610586578063d547741f146105a6578063d936547e146105c657600080fd5b806399a3c356116100d157806399a3c356146104bb5780639a590427146104db5780639b19251a146104fb578063a217fddf1461051b57600080fd5b806385f438c11461040257806391d1485414610436578063950837aa1461049b57600080fd5b80633f4ba83a11610164578063570618e11161013e578063570618e1146103625780635b112591146103965780635c975abb146103b65780638456cb59146103ed57600080fd5b80633f4ba83a146103255780634f1ef2861461033a57806352d1902d1461034d57600080fd5b8063248a9ca3116101a0578063248a9ca314610256578063252f07bf146102b35780632f2ff15d146102e557806336568abe1461030557600080fd5b806301ffc9a7146101c7578063116191b6146101fc57806321fc65f214610234575b600080fd5b3480156101d357600080fd5b506101e76101e236600461216e565b61068a565b60405190151581526020015b60405180910390f35b34801561020857600080fd5b5060005461021c906001600160a01b031681565b6040516001600160a01b0390911681526020016101f3565b34801561024057600080fd5b5061025461024f36600461220e565b610723565b005b34801561026257600080fd5b506102a5610271366004612281565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101f3565b3480156102bf57600080fd5b506002546101e79074010000000000000000000000000000000000000000900460ff1681565b3480156102f157600080fd5b5061025461030036600461229a565b6108cc565b34801561031157600080fd5b5061025461032036600461229a565b610916565b34801561033157600080fd5b50610254610967565b6102546103483660046122f9565b61099c565b34801561035957600080fd5b506102a56109bb565b34801561036e57600080fd5b506102a57f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a81565b3480156103a257600080fd5b5060025461021c906001600160a01b031681565b3480156103c257600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101e7565b3480156103f957600080fd5b506102546109ea565b34801561040e57600080fd5b506102a57f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b34801561044257600080fd5b506101e761045136600461229a565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156104a757600080fd5b506102546104b6366004612402565b610a1c565b3480156104c757600080fd5b506102546104d636600461241f565b610ba1565b3480156104e757600080fd5b506102546104f6366004612402565b610d4f565b34801561050757600080fd5b50610254610516366004612402565b610e03565b34801561052757600080fd5b506102a5600081565b34801561053c57600080fd5b506105796040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101f391906124e6565b34801561059257600080fd5b506102546105a1366004612537565b610ebd565b3480156105b257600080fd5b506102546105c136600461229a565b6111b7565b3480156105d257600080fd5b506101e76105e1366004612402565b60016020526000908152604090205460ff1681565b34801561060257600080fd5b50610254610611366004612582565b6111fb565b34801561062257600080fd5b506102546106313660046125c3565b611312565b34801561064257600080fd5b506102a57f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b34801561067657600080fd5b50610254610685366004612662565b61155d565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061071d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61072b6115b3565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461075581611634565b61075d61163e565b6001600160a01b03851660009081526001602052604090205460ff166107af576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546107c9906001600160a01b0387811691168661169c565b6000546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690635131ab599061081a9088908a908990899089906004016126c8565b600060405180830381600087803b15801561083457600080fd5b505af1158015610848573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167f6478cbb6e28c0823c691dfd74c01c985634faddd4c401b990fe4ec26277ea8d58686866040516108939392919061270b565b60405180910390a3506108c560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461090681611634565b6109108383611736565b50505050565b6001600160a01b0381163314610958576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109628282611805565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61099181611634565b6109996118ab565b50565b6109a461191d565b6109ad826119ed565b6109b782826119f8565b5050565b60006109c5611b1c565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a1481611634565b610999611b7e565b6000610a2781611634565b6001600160a01b038216610a67576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254610a9e907f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4906001600160a01b0316611805565b50600254610ad6907f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a906001600160a01b0316611805565b50610b017f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483611736565b50610b2c7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a83611736565b50600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0384169081179091556040805182815260208101929092527f4d3470c839d3c4dd664eec934b920c12fe0966e3185103dd40149496815df2b6910160405180910390a15050565b610ba96115b3565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610bd381611634565b610bdb61163e565b6001600160a01b03861660009081526001602052604090205460ff16610c2d576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610c47906001600160a01b0388811691168761169c565b6000546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063aa0c0fc190610c9a9089908b908a908a908a908a906004016127da565b600060405180830381600087803b158015610cb457600080fd5b505af1158015610cc8573d6000803e3d6000fd5b50505050856001600160a01b0316876001600160a01b03167f7b53ec10a80164e60591c43d9c222e9354886981b880a3fba19c9ceb77fb972187878787604051610d159493929190612831565b60405180910390a350610d4760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a610d7981611634565b6001600160a01b038216610db9576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216600081815260016020526040808220805460ff19169055517f51085ddf9ebdded84b76e829eb58c4078e4b5bdf97d9a94723f336039da467919190a25050565b7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a610e2d81611634565b6001600160a01b038216610e6d576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166000818152600160208190526040808320805460ff1916909217909155517faab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a549190a25050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f085750825b905060008267ffffffffffffffff166001148015610f255750303b155b905081158015610f33575080155b15610f6a576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fcb5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0388161580610fe857506001600160a01b038716155b80610ffa57506001600160a01b038616155b15611031576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611039611bd9565b611041611be1565b611049611bd9565b611051611bf1565b600080546001600160a01b03808b167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617835560028054918b169190921617905561109f9087611736565b506110ca7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611736565b506110f57f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e488611736565b506111207f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a87611736565b5061114b7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a88611736565b5083156111ad5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546111f181611634565b6109108383611805565b6112036115b3565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461122d81611634565b61123561163e565b6001600160a01b03831660009081526001602052604090205460ff16611287576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61129b6001600160a01b038416858461169c565b826001600160a01b0316846001600160a01b03167fd4dabfe72081670cc78f2ebda8e2eddaf3feebde6288dcb8fe673b3dc201b5a4846040516112e091815260200190565b60405180910390a35061096260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b61131a6115b3565b61132261163e565b60025474010000000000000000000000000000000000000000900460ff16611376576040517f73cba66300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03841660009081526001602052604090205460ff166113c8576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015611428573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144c919061285d565b90506114636001600160a01b038616333087611c01565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038616907f1dafa057cc5c3bccb5ad974129a2bccd3c74002d9dfd7062404ba9523b18d6ae9089908990859085906370a0823190602401602060405180830381865afa1580156114ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150e919061285d565b6115189190612876565b878760405161152b9594939291906128b0565b60405180910390a250610d4760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b600061156881611634565b506002805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0161162e576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6109998133611c3a565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff161561169a576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040516001600160a01b0383811660248301526044820183905261096291859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611cc7565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166117fb576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556117b13390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061071d565b600091505061071d565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156117fb576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061071d565b6118b3611d43565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806119b657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166119aa7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b1561169a576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006109b781611634565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611a70575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611a6d9181019061285d565b60015b611ab6576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611b12576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611aad565b6109628383611d9e565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461169a576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b8661163e565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258336118ff565b61169a611df4565b611be9611df4565b61169a611e5b565b611bf9611df4565b61169a611e63565b6040516001600160a01b0384811660248301528381166044830152606482018390526109109186918216906323b872dd906084016116c9565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166109b7576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611aad565b6000611cdc6001600160a01b03841683611e96565b90508051600014158015611d01575080806020019051810190611cff91906128e9565b155b15610962576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401611aad565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1661169a576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611da782611eab565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611dec576109628282611f53565b6109b7611fc9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661169a576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611710611df4565b611e6b611df4565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff19169055565b6060611ea483836000612001565b9392505050565b806001600160a01b03163b600003611efa576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611aad565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611f709190612906565b600060405180830381855af49150503d8060008114611fab576040519150601f19603f3d011682016040523d82523d6000602084013e611fb0565b606091505b5091509150611fc08583836120b7565b95945050505050565b341561169a576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608147101561203f576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401611aad565b600080856001600160a01b0316848660405161205b9190612906565b60006040518083038185875af1925050503d8060008114612098576040519150601f19603f3d011682016040523d82523d6000602084013e61209d565b606091505b50915091506120ad8683836120b7565b9695505050505050565b6060826120cc576120c78261212c565b611ea4565b81511580156120e357506001600160a01b0384163b155b15612125576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611aad565b5080611ea4565b80511561213c5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561218057600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611ea457600080fd5b6001600160a01b038116811461099957600080fd5b60008083601f8401126121d757600080fd5b50813567ffffffffffffffff8111156121ef57600080fd5b60208301915083602082850101111561220757600080fd5b9250929050565b60008060008060006080868803121561222657600080fd5b8535612231816121b0565b94506020860135612241816121b0565b935060408601359250606086013567ffffffffffffffff81111561226457600080fd5b612270888289016121c5565b969995985093965092949392505050565b60006020828403121561229357600080fd5b5035919050565b600080604083850312156122ad57600080fd5b8235915060208301356122bf816121b0565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561230c57600080fd5b8235612317816121b0565b9150602083013567ffffffffffffffff81111561233357600080fd5b8301601f8101851361234457600080fd5b803567ffffffffffffffff81111561235e5761235e6122ca565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156123ca576123ca6122ca565b6040528181528282016020018710156123e257600080fd5b816020840160208301376000602083830101528093505050509250929050565b60006020828403121561241457600080fd5b8135611ea4816121b0565b60008060008060008060a0878903121561243857600080fd5b8635612443816121b0565b95506020870135612453816121b0565b945060408701359350606087013567ffffffffffffffff81111561247657600080fd5b61248289828a016121c5565b909450925050608087013567ffffffffffffffff8111156124a257600080fd5b87016080818a0312156124b457600080fd5b809150509295509295509295565b60005b838110156124dd5781810151838201526020016124c5565b50506000910152565b60208152600082518060208401526125058160408501602087016124c2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008060006060848603121561254c57600080fd5b8335612557816121b0565b92506020840135612567816121b0565b91506040840135612577816121b0565b809150509250925092565b60008060006060848603121561259757600080fd5b83356125a2816121b0565b925060208401356125b2816121b0565b929592945050506040919091013590565b600080600080600080608087890312156125dc57600080fd5b863567ffffffffffffffff8111156125f357600080fd5b6125ff89828a016121c5565b9097509550506020870135612613816121b0565b935060408701359250606087013567ffffffffffffffff81111561263657600080fd5b61264289828a016121c5565b979a9699509497509295939492505050565b801515811461099957600080fd5b60006020828403121561267457600080fd5b8135611ea481612654565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015260806060820152600061270060808301848661267f565b979650505050505050565b838152604060208201526000611fc060408301848661267f565b60008135612732816121b0565b6001600160a01b03168352602082013561274b816121b0565b6001600160a01b03166020840152604082810135908401526060820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe101811261279957600080fd5b820160208101903567ffffffffffffffff8111156127b657600080fd5b8036038213156127c557600080fd5b60806060860152611fc060808601828461267f565b6001600160a01b03871681526001600160a01b038616602082015284604082015260a06060820152600061281260a08301858761267f565b82810360808401526128248185612725565b9998505050505050505050565b84815260606020820152600061284b60608301858761267f565b82810360408401526127008185612725565b60006020828403121561286f57600080fd5b5051919050565b8181038181111561071d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6060815260006128c460608301878961267f565b85602084015282810360408401526128dd81858761267f565b98975050505050505050565b6000602082840312156128fb57600080fd5b8151611ea481612654565b600082516129188184602087016124c2565b919091019291505056fea26469706673582212209677fb20584c2da2d9821bbbc7955ade138c175013e15534e533f173d0e2389c64736f6c634300081a0033", } // ERC20CustodyUpgradeTestABI 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 b95496c8d..db60443bf 100644 --- a/v2/pkg/gatewayevm.sol/gatewayevm.go +++ b/v2/pkg/gatewayevm.sol/gatewayevm.go @@ -54,7 +54,7 @@ type RevertOptions struct { // 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\":\"MAX_PAYLOAD_SIZE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"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\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\":\"execute\",\"inputs\":[{\"name\":\"messageContext\",\"type\":\"tuple\",\"internalType\":\"structMessageContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"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\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"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\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"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\":\"updateTSSAddress\",\"inputs\":[{\"name\":\"newTSSAddress\",\"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\":\"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\":\"Called\",\"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\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposited\",\"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\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"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\":\"UpdatedGatewayTSSAddress\",\"inputs\":[{\"name\":\"oldTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newTSSAddress\",\"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\":\"ConnectorInitialized\",\"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\":\"NotAllowedToCallOnCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotAllowedToCallOnRevert\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotWhitelistedInCustody\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PayloadSizeExceeded\",\"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\":\"ZETANotSupported\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051613b7b6100fd600039600081816123e20152818161240b01526128790152613b7b6000f3fe6080604052600436106102345760003560e01c80635d62c86011610138578063aa0c0fc1116100b0578063cb7ba8e51161007f578063d547741f11610064578063d547741f146106db578063dda79b75146106fb578063e63ab1e91461071b57600080fd5b8063cb7ba8e5146106a8578063d09e3b78146106bb57600080fd5b8063aa0c0fc1146105ff578063ad3cb1cc1461061f578063ae7a3a6f14610668578063c0c53b8b1461068857600080fd5b806391d1485411610107578063a217fddf116100ec578063a217fddf146105a0578063a2ba1934146105b5578063a783c789146105cb57600080fd5b806391d148541461051b578063950837aa1461058057600080fd5b80635d62c860146104ac578063726ac97c146104e0578063744b9b8b146104f35780638456cb591461050657600080fd5b806336568abe116101cb5780635131ab591161019a57806357bec62f1161017f57806357bec62f146104355780635b112591146104555780635c975abb1461047557600080fd5b80635131ab591461040057806352d1902d1461042057600080fd5b806336568abe146103a557806338e22527146103c55780633f4ba83a146103d85780634f1ef286146103ed57600080fd5b80631cff79cd116102075780631cff79cd146102d057806321e093b1146102f0578063248a9ca3146103285780632f2ff15d1461038557600080fd5b806301ffc9a71461023957806310188aef1461026e578063102614b0146102905780631becceb4146102b0575b600080fd5b34801561024557600080fd5b50610259610254366004613060565b61074f565b60405190151581526020015b60405180910390f35b34801561027a57600080fd5b5061028e6102893660046130be565b6107e8565b005b34801561029c57600080fd5b5061028e6102ab3660046130f1565b6108c3565b3480156102bc57600080fd5b5061028e6102cb3660046131a2565b610a07565b6102e36102de366004613209565b610ad8565b60405161026591906132ac565b3480156102fc57600080fd5b50600354610310906001600160a01b031681565b6040516001600160a01b039091168152602001610265565b34801561033457600080fd5b506103776103433660046132bf565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610265565b34801561039157600080fd5b5061028e6103a03660046132d8565b610b90565b3480156103b157600080fd5b5061028e6103c03660046132d8565b610bd4565b6102e36103d3366004613304565b610c25565b3480156103e457600080fd5b5061028e610d11565b61028e6103fb3660046133f5565b610d46565b34801561040c57600080fd5b5061028e61041b366004613486565b610d65565b34801561042c57600080fd5b50610377611065565b34801561044157600080fd5b50600254610310906001600160a01b031681565b34801561046157600080fd5b50600154610310906001600160a01b031681565b34801561048157600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610259565b3480156104b857600080fd5b506103777f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b61028e6104ee3660046134f5565b611094565b61028e6105013660046131a2565b611256565b34801561051257600080fd5b5061028e611425565b34801561052757600080fd5b506102596105363660046132d8565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561058c57600080fd5b5061028e61059b3660046130be565b611457565b3480156105ac57600080fd5b50610377600081565b3480156105c157600080fd5b5061037761040081565b3480156105d757600080fd5b506103777f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561060b57600080fd5b5061028e61061a366004613555565b61156e565b34801561062b57600080fd5b506102e36040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b34801561067457600080fd5b5061028e6106833660046130be565b611717565b34801561069457600080fd5b5061028e6106a33660046135ed565b6117f2565b61028e6106b6366004613630565b611ab9565b3480156106c757600080fd5b5061028e6106d63660046136a3565b611ca1565b3480156106e757600080fd5b5061028e6106f63660046132d8565b611dec565b34801561070757600080fd5b50600054610310906001600160a01b031681565b34801561072757600080fd5b506103777f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806107e257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60006107f381611e30565b6001600160a01b03821661081a5760405163d92e233d60e01b815260040160405180910390fd5b6002546001600160a01b03161561085d576040517f0c8dc01600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108877f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611e3a565b5050600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6108cb611f27565b6108d3611f85565b8260000361090d576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166109345760405163d92e233d60e01b815260040160405180910390fd5b610400610944606083018361372e565b9050111561097e576040517f386691aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610989338385612006565b836001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c8585856040516109d0939291906138ad565b60405180910390a3610a0160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050565b610a0f611f27565b610a17611f85565b6001600160a01b038416610a3e5760405163d92e233d60e01b815260040160405180910390fd5b610400610a4e606083018361372e565b610a599150846138e3565b1115610a91576040517f386691aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167fd34634f30f94a646fdf4ce7078f38fc5fa0d3f0b193658facea4e3e43330d9748585856040516109d09392919061391d565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610b0481611e30565b610b0c611f27565b6001600160a01b038516610b335760405163d92e233d60e01b815260040160405180910390fd5b6000610b4086868661214d565b9050856001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f348787604051610b7f93929190613943565b60405180910390a295945050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610bca81611e30565b610a018383611e3a565b6001600160a01b0381163314610c16576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c208282612200565b505050565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610c5181611e30565b610c59611f27565b610c61611f85565b6001600160a01b038516610c885760405163d92e233d60e01b815260040160405180910390fd5b6060610c96878787876122c4565b9050856001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f348787604051610cd593929190613943565b60405180910390a29150610d0860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50949350505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610d3b81611e30565b610d43612347565b50565b610d4e6123d7565b610d57826124a7565b610d6182826124b2565b5050565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9610d8f81611e30565b610d97611f27565b610d9f611f85565b83600003610dd9576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038516610e005760405163d92e233d60e01b815260040160405180910390fd5b610e0a86866125b8565b610e40576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905287169063095ea7b3906044016020604051808303816000875af1158015610ea8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ecc919061395d565b610f02576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f0d85848461214d565b50610f1886866125b8565b610f4e576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610fae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd2919061397a565b90508015610fe457610fe48782612648565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b738287878760405161102b93929190613943565b60405180910390a35061105d60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b600061106f61286e565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b61109c611f27565b6110a4611f85565b346000036110de576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166111055760405163d92e233d60e01b815260040160405180910390fd5b610400611115606083018361372e565b9050111561114f576040517f386691aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d806000811461119c576040519150601f19603f3d011682016040523d82523d6000602084013e6111a1565b606091505b50509050806111dc576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c34600086604051611224939291906138ad565b60405180910390a350610d6160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b61125e611f27565b611266611f85565b346000036112a0576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166112c75760405163d92e233d60e01b815260040160405180910390fd5b6104006112d7606083018361372e565b6112e29150846138e3565b111561131a576040517f386691aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114611367576040519150601f19603f3d011682016040523d82523d6000602084013e61136c565b606091505b50509050806113a7576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c3460008888886040516113f3959493929190613993565b60405180910390a350610a0160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61144f81611e30565b610d436128d0565b600061146281611e30565b6001600160a01b0382166114895760405163d92e233d60e01b815260040160405180910390fd5b6001546114c0907f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb906001600160a01b0316612200565b506114eb7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb83611e3a565b50600154604080516001600160a01b03928316815291841660208301527f3a7b8d6372645f474fe60c115a2ef21421306a3ed4664fa0023c461413c08579910160405180910390a150600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b961159881611e30565b6115a0611f27565b6115a8611f85565b846000036115e2576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0386166116095760405163d92e233d60e01b815260040160405180910390fd5b61161d6001600160a01b0388168787612949565b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063c9028a3690611662908590600401613a36565b600060405180830381600087803b15801561167c57600080fd5b505af1158015611690573d6000803e3d6000fd5b50505050866001600160a01b0316866001600160a01b03167fde7603a6ed5d07c9f43597ccfe9043d15b66d3284f0de321f5cdf56329e6e035878787876040516116dd9493929190613a49565b60405180910390a361170e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050505050565b600061172281611e30565b6001600160a01b0382166117495760405163d92e233d60e01b815260040160405180910390fd5b6000546001600160a01b03161561178c576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117b67f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611e3a565b5050600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff1660008115801561183d5750825b905060008267ffffffffffffffff16600114801561185a5750303b155b905081158015611868575080155b1561189f576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156119005784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038816158061191d57506001600160a01b038716155b1561193b5760405163d92e233d60e01b815260040160405180910390fd5b6119436129bd565b61194b6129c5565b6119536129bd565b61195b6129d5565b611966600087611e3a565b506119917f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611e3a565b506119bc7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a89611e3a565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a16179055611a1a7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb89611e3a565b50600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0389161790558315611aaf5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb611ae381611e30565b611aeb611f27565b611af3611f85565b6001600160a01b038516611b1a5760405163d92e233d60e01b815260040160405180910390fd5b6000856001600160a01b03163460405160006040518083038185875af1925050503d8060008114611b67576040519150601f19603f3d011682016040523d82523d6000602084013e611b6c565b606091505b5050905080611ba7576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063c9028a3690611bec908690600401613a36565b600060405180830381600087803b158015611c0657600080fd5b505af1158015611c1a573d6000803e3d6000fd5b5050505060006001600160a01b0316866001600160a01b03167fde7603a6ed5d07c9f43597ccfe9043d15b66d3284f0de321f5cdf56329e6e03534888888604051611c689493929190613a49565b60405180910390a350611c9a60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b611ca9611f27565b611cb1611f85565b84600003611ceb576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038616611d125760405163d92e233d60e01b815260040160405180910390fd5b610400611d22606083018361372e565b611d2d9150846138e3565b1115611d65576040517f386691aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d70338587612006565b856001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c8787878787604051611dbb959493929190613993565b60405180910390a361105d60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154611e2681611e30565b610a018383612200565b610d4381336129e5565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611f1d576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611ed33390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506107e2565b60009150506107e2565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611f83576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01612000576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6003546001600160a01b039081169083160361204e576040517fe4dd681d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301529091169063d936547e90602401602060405180830381865afa1580156120b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d5919061395d565b61210b576040517fac2175f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610c20906001600160a01b038481169186911684612a72565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60606121598383612aab565b600080856001600160a01b0316348686604051612177929190613a80565b60006040518083038185875af1925050503d80600081146121b4576040519150601f19603f3d011682016040523d82523d6000602084013e6121b9565b606091505b5091509150816121f5576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611f1d576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506107e2565b6060836001600160a01b031663676cc054348786866040518563ffffffff1660e01b81526004016122f793929190613a90565b60006040518083038185885af1158015612315573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261233e9190810190613abb565b95945050505050565b61234f612bab565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061247057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166124647f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611f83576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d6181611e30565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561250c575060408051601f3d908101601f191682019092526125099181019061397a565b60015b612552576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146125ae576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401612549565b610c208383612c06565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015612624573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f9919061395d565b6003546001600160a01b0390811690831603612797576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af11580156126ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ee919061395d565b612724576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561278357600080fd5b505af115801561105d573d6000803e3d6000fd5b6000546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301529091169063d936547e90602401602060405180830381865afa1580156127fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061281e919061395d565b612854576040517fac2175f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610d61906001600160a01b03848116911683612949565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611f83576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6128d8611f27565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258336123b9565b6040516001600160a01b03838116602483015260448201839052610c2091859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612c5c565b611f83612cd8565b6129cd612cd8565b611f83612d3f565b6129dd612cd8565b611f83612d47565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610d61576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401612549565b6040516001600160a01b038481166024830152838116604483015260648201839052610a019186918216906323b872dd90608401612976565b60048110610d615781357f98933fac000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000821601612b30576040517fed69977500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f36fd75ca000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000821601610c20576040517ff3459a9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611f83576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612c0f82612d98565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115612c5457610c208282612e40565b610d61612ead565b6000612c716001600160a01b03841683612ee5565b90508051600014158015612c96575080806020019051810190612c94919061395d565b155b15610c20576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401612549565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611f83576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612127612cd8565b612d4f612cd8565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b806001600160a01b03163b600003612de7576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401612549565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051612e5d9190613b29565b600060405180830381855af49150503d8060008114612e98576040519150601f19603f3d011682016040523d82523d6000602084013e612e9d565b606091505b509150915061233e858383612ef3565b3415611f83576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60606121f983836000612f68565b606082612f0857612f038261301e565b6121f9565b8151158015612f1f57506001600160a01b0384163b155b15612f61576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401612549565b50806121f9565b606081471015612fa6576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401612549565b600080856001600160a01b03168486604051612fc29190613b29565b60006040518083038185875af1925050503d8060008114612fff576040519150601f19603f3d011682016040523d82523d6000602084013e613004565b606091505b5091509150613014868383612ef3565b9695505050505050565b80511561302e5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561307257600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146121f957600080fd5b80356001600160a01b03811681146130b957600080fd5b919050565b6000602082840312156130d057600080fd5b6121f9826130a2565b600060a082840312156130eb57600080fd5b50919050565b6000806000806080858703121561310757600080fd5b613110856130a2565b935060208501359250613125604086016130a2565b9150606085013567ffffffffffffffff81111561314157600080fd5b61314d878288016130d9565b91505092959194509250565b60008083601f84011261316b57600080fd5b50813567ffffffffffffffff81111561318357600080fd5b60208301915083602082850101111561319b57600080fd5b9250929050565b600080600080606085870312156131b857600080fd5b6131c1856130a2565b9350602085013567ffffffffffffffff8111156131dd57600080fd5b6131e987828801613159565b909450925050604085013567ffffffffffffffff81111561314157600080fd5b60008060006040848603121561321e57600080fd5b613227846130a2565b9250602084013567ffffffffffffffff81111561324357600080fd5b61324f86828701613159565b9497909650939450505050565b60005b8381101561327757818101518382015260200161325f565b50506000910152565b6000815180845261329881602086016020860161325c565b601f01601f19169290920160200192915050565b6020815260006121f96020830184613280565b6000602082840312156132d157600080fd5b5035919050565b600080604083850312156132eb57600080fd5b823591506132fb602084016130a2565b90509250929050565b600080600080848603606081121561331b57600080fd5b602081121561332957600080fd5b50849350613339602086016130a2565b9250604085013567ffffffffffffffff81111561335557600080fd5b61336187828801613159565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156133c5576133c561336d565b604052919050565b600067ffffffffffffffff8211156133e7576133e761336d565b50601f01601f191660200190565b6000806040838503121561340857600080fd5b613411836130a2565b9150602083013567ffffffffffffffff81111561342d57600080fd5b8301601f8101851361343e57600080fd5b803561345161344c826133cd565b61339c565b81815286602083850101111561346657600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008060008060006080868803121561349e57600080fd5b6134a7866130a2565b94506134b5602087016130a2565b935060408601359250606086013567ffffffffffffffff8111156134d857600080fd5b6134e488828901613159565b969995985093965092949392505050565b6000806040838503121561350857600080fd5b613511836130a2565b9150602083013567ffffffffffffffff81111561352d57600080fd5b613539858286016130d9565b9150509250929050565b6000608082840312156130eb57600080fd5b60008060008060008060a0878903121561356e57600080fd5b613577876130a2565b9550613585602088016130a2565b945060408701359350606087013567ffffffffffffffff8111156135a857600080fd5b6135b489828a01613159565b909450925050608087013567ffffffffffffffff8111156135d457600080fd5b6135e089828a01613543565b9150509295509295509295565b60008060006060848603121561360257600080fd5b61360b846130a2565b9250613619602085016130a2565b9150613627604085016130a2565b90509250925092565b6000806000806060858703121561364657600080fd5b61364f856130a2565b9350602085013567ffffffffffffffff81111561366b57600080fd5b61367787828801613159565b909450925050604085013567ffffffffffffffff81111561369757600080fd5b61314d87828801613543565b60008060008060008060a087890312156136bc57600080fd5b6136c5876130a2565b9550602087013594506136da604088016130a2565b9350606087013567ffffffffffffffff8111156136f657600080fd5b61370289828a01613159565b909450925050608087013567ffffffffffffffff81111561372257600080fd5b6135e089828a016130d9565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261376357600080fd5b83018035915067ffffffffffffffff82111561377e57600080fd5b60200191503681900382131561319b57600080fd5b8015158114610d4357600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126137d657600080fd5b830160208101925035905067ffffffffffffffff8111156137f657600080fd5b80360382131561319b57600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6001600160a01b03613841826130a2565b1682526000602082013561385481613793565b151560208401526001600160a01b0361386f604084016130a2565b16604084015261388260608301836137a1565b60a0606086015261389760a086018284613805565b6080948501359590940194909452509092915050565b8381526001600160a01b0383166020820152608060408201526000608082015260a06060820152600061233e60a0830184613830565b808201808211156107e2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b604081526000613931604083018587613805565b82810360208401526130148185613830565b83815260406020820152600061233e604083018486613805565b60006020828403121561396f57600080fd5b81516121f981613793565b60006020828403121561398c57600080fd5b5051919050565b8581526001600160a01b03851660208201526080604082015260006139bc608083018587613805565b82810360608401526139ce8185613830565b98975050505050505050565b6001600160a01b036139eb826130a2565b1682526001600160a01b03613a02602083016130a2565b166020830152604081810135908301526000613a2160608301836137a1565b6080606086015261233e608086018284613805565b6020815260006121f960208301846139da565b848152606060208201526000613a63606083018587613805565b8281036040840152613a7581856139da565b979650505050505050565b8183823760009101908152919050565b6001600160a01b03613aa1856130a2565b16815260406020820152600061233e604083018486613805565b600060208284031215613acd57600080fd5b815167ffffffffffffffff811115613ae457600080fd5b8201601f81018413613af557600080fd5b8051613b0361344c826133cd565b818152856020838501011115613b1857600080fd5b61233e82602083016020860161325c565b60008251613b3b81846020870161325c565b919091019291505056fea264697066735822122011e723341eafd6e49af6ad7eff161105cb552538a0be0b5c04955ebefdc2615164736f6c634300081a0033", + Bin: "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051613b7b6100fd600039600081816123e20152818161240b01526128790152613b7b6000f3fe6080604052600436106102345760003560e01c80635d62c86011610138578063aa0c0fc1116100b0578063cb7ba8e51161007f578063d547741f11610064578063d547741f146106db578063dda79b75146106fb578063e63ab1e91461071b57600080fd5b8063cb7ba8e5146106a8578063d09e3b78146106bb57600080fd5b8063aa0c0fc1146105ff578063ad3cb1cc1461061f578063ae7a3a6f14610668578063c0c53b8b1461068857600080fd5b806391d1485411610107578063a217fddf116100ec578063a217fddf146105a0578063a2ba1934146105b5578063a783c789146105cb57600080fd5b806391d148541461051b578063950837aa1461058057600080fd5b80635d62c860146104ac578063726ac97c146104e0578063744b9b8b146104f35780638456cb591461050657600080fd5b806336568abe116101cb5780635131ab591161019a57806357bec62f1161017f57806357bec62f146104355780635b112591146104555780635c975abb1461047557600080fd5b80635131ab591461040057806352d1902d1461042057600080fd5b806336568abe146103a557806338e22527146103c55780633f4ba83a146103d85780634f1ef286146103ed57600080fd5b80631cff79cd116102075780631cff79cd146102d057806321e093b1146102f0578063248a9ca3146103285780632f2ff15d1461038557600080fd5b806301ffc9a71461023957806310188aef1461026e578063102614b0146102905780631becceb4146102b0575b600080fd5b34801561024557600080fd5b50610259610254366004613060565b61074f565b60405190151581526020015b60405180910390f35b34801561027a57600080fd5b5061028e6102893660046130be565b6107e8565b005b34801561029c57600080fd5b5061028e6102ab3660046130f1565b6108c3565b3480156102bc57600080fd5b5061028e6102cb3660046131a2565b610a07565b6102e36102de366004613209565b610ad8565b60405161026591906132ac565b3480156102fc57600080fd5b50600354610310906001600160a01b031681565b6040516001600160a01b039091168152602001610265565b34801561033457600080fd5b506103776103433660046132bf565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610265565b34801561039157600080fd5b5061028e6103a03660046132d8565b610b90565b3480156103b157600080fd5b5061028e6103c03660046132d8565b610bd4565b6102e36103d3366004613304565b610c25565b3480156103e457600080fd5b5061028e610d11565b61028e6103fb3660046133f5565b610d46565b34801561040c57600080fd5b5061028e61041b366004613486565b610d65565b34801561042c57600080fd5b50610377611065565b34801561044157600080fd5b50600254610310906001600160a01b031681565b34801561046157600080fd5b50600154610310906001600160a01b031681565b34801561048157600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610259565b3480156104b857600080fd5b506103777f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b61028e6104ee3660046134f5565b611094565b61028e6105013660046131a2565b611256565b34801561051257600080fd5b5061028e611425565b34801561052757600080fd5b506102596105363660046132d8565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561058c57600080fd5b5061028e61059b3660046130be565b611457565b3480156105ac57600080fd5b50610377600081565b3480156105c157600080fd5b5061037761040081565b3480156105d757600080fd5b506103777f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561060b57600080fd5b5061028e61061a366004613555565b61156e565b34801561062b57600080fd5b506102e36040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b34801561067457600080fd5b5061028e6106833660046130be565b611717565b34801561069457600080fd5b5061028e6106a33660046135ed565b6117f2565b61028e6106b6366004613630565b611ab9565b3480156106c757600080fd5b5061028e6106d63660046136a3565b611ca1565b3480156106e757600080fd5b5061028e6106f63660046132d8565b611dec565b34801561070757600080fd5b50600054610310906001600160a01b031681565b34801561072757600080fd5b506103777f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806107e257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60006107f381611e30565b6001600160a01b03821661081a5760405163d92e233d60e01b815260040160405180910390fd5b6002546001600160a01b03161561085d576040517f0c8dc01600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108877f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611e3a565b5050600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6108cb611f27565b6108d3611f85565b8260000361090d576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166109345760405163d92e233d60e01b815260040160405180910390fd5b610400610944606083018361372e565b9050111561097e576040517f386691aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610989338385612006565b836001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c8585856040516109d0939291906138ad565b60405180910390a3610a0160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050565b610a0f611f27565b610a17611f85565b6001600160a01b038416610a3e5760405163d92e233d60e01b815260040160405180910390fd5b610400610a4e606083018361372e565b610a599150846138e3565b1115610a91576040517f386691aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167fd34634f30f94a646fdf4ce7078f38fc5fa0d3f0b193658facea4e3e43330d9748585856040516109d09392919061391d565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610b0481611e30565b610b0c611f27565b6001600160a01b038516610b335760405163d92e233d60e01b815260040160405180910390fd5b6000610b4086868661214d565b9050856001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f348787604051610b7f93929190613943565b60405180910390a295945050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610bca81611e30565b610a018383611e3a565b6001600160a01b0381163314610c16576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c208282612200565b505050565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610c5181611e30565b610c59611f27565b610c61611f85565b6001600160a01b038516610c885760405163d92e233d60e01b815260040160405180910390fd5b6060610c96878787876122c4565b9050856001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f348787604051610cd593929190613943565b60405180910390a29150610d0860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50949350505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610d3b81611e30565b610d43612347565b50565b610d4e6123d7565b610d57826124a7565b610d6182826124b2565b5050565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9610d8f81611e30565b610d97611f27565b610d9f611f85565b83600003610dd9576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038516610e005760405163d92e233d60e01b815260040160405180910390fd5b610e0a86866125b8565b610e40576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905287169063095ea7b3906044016020604051808303816000875af1158015610ea8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ecc919061395d565b610f02576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f0d85848461214d565b50610f1886866125b8565b610f4e576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610fae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd2919061397a565b90508015610fe457610fe48782612648565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b738287878760405161102b93929190613943565b60405180910390a35061105d60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b600061106f61286e565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b61109c611f27565b6110a4611f85565b346000036110de576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166111055760405163d92e233d60e01b815260040160405180910390fd5b610400611115606083018361372e565b9050111561114f576040517f386691aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d806000811461119c576040519150601f19603f3d011682016040523d82523d6000602084013e6111a1565b606091505b50509050806111dc576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c34600086604051611224939291906138ad565b60405180910390a350610d6160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b61125e611f27565b611266611f85565b346000036112a0576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166112c75760405163d92e233d60e01b815260040160405180910390fd5b6104006112d7606083018361372e565b6112e29150846138e3565b111561131a576040517f386691aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114611367576040519150601f19603f3d011682016040523d82523d6000602084013e61136c565b606091505b50509050806113a7576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c3460008888886040516113f3959493929190613993565b60405180910390a350610a0160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61144f81611e30565b610d436128d0565b600061146281611e30565b6001600160a01b0382166114895760405163d92e233d60e01b815260040160405180910390fd5b6001546114c0907f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb906001600160a01b0316612200565b506114eb7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb83611e3a565b50600154604080516001600160a01b03928316815291841660208301527f3a7b8d6372645f474fe60c115a2ef21421306a3ed4664fa0023c461413c08579910160405180910390a150600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b961159881611e30565b6115a0611f27565b6115a8611f85565b846000036115e2576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0386166116095760405163d92e233d60e01b815260040160405180910390fd5b61161d6001600160a01b0388168787612949565b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063c9028a3690611662908590600401613a36565b600060405180830381600087803b15801561167c57600080fd5b505af1158015611690573d6000803e3d6000fd5b50505050866001600160a01b0316866001600160a01b03167fde7603a6ed5d07c9f43597ccfe9043d15b66d3284f0de321f5cdf56329e6e035878787876040516116dd9493929190613a49565b60405180910390a361170e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050505050565b600061172281611e30565b6001600160a01b0382166117495760405163d92e233d60e01b815260040160405180910390fd5b6000546001600160a01b03161561178c576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117b67f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611e3a565b5050600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff1660008115801561183d5750825b905060008267ffffffffffffffff16600114801561185a5750303b155b905081158015611868575080155b1561189f576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156119005784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038816158061191d57506001600160a01b038716155b1561193b5760405163d92e233d60e01b815260040160405180910390fd5b6119436129bd565b61194b6129c5565b6119536129bd565b61195b6129d5565b611966600087611e3a565b506119917f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611e3a565b506119bc7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a89611e3a565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a16179055611a1a7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb89611e3a565b50600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0389161790558315611aaf5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb611ae381611e30565b611aeb611f27565b611af3611f85565b6001600160a01b038516611b1a5760405163d92e233d60e01b815260040160405180910390fd5b6000856001600160a01b03163460405160006040518083038185875af1925050503d8060008114611b67576040519150601f19603f3d011682016040523d82523d6000602084013e611b6c565b606091505b5050905080611ba7576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063c9028a3690611bec908690600401613a36565b600060405180830381600087803b158015611c0657600080fd5b505af1158015611c1a573d6000803e3d6000fd5b5050505060006001600160a01b0316866001600160a01b03167fde7603a6ed5d07c9f43597ccfe9043d15b66d3284f0de321f5cdf56329e6e03534888888604051611c689493929190613a49565b60405180910390a350611c9a60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b611ca9611f27565b611cb1611f85565b84600003611ceb576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038616611d125760405163d92e233d60e01b815260040160405180910390fd5b610400611d22606083018361372e565b611d2d9150846138e3565b1115611d65576040517f386691aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d70338587612006565b856001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c8787878787604051611dbb959493929190613993565b60405180910390a361105d60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154611e2681611e30565b610a018383612200565b610d4381336129e5565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611f1d576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611ed33390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506107e2565b60009150506107e2565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611f83576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01612000576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6003546001600160a01b039081169083160361204e576040517fe4dd681d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301529091169063d936547e90602401602060405180830381865afa1580156120b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d5919061395d565b61210b576040517fac2175f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610c20906001600160a01b038481169186911684612a72565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60606121598383612aab565b600080856001600160a01b0316348686604051612177929190613a80565b60006040518083038185875af1925050503d80600081146121b4576040519150601f19603f3d011682016040523d82523d6000602084013e6121b9565b606091505b5091509150816121f5576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611f1d576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506107e2565b6060836001600160a01b031663676cc054348786866040518563ffffffff1660e01b81526004016122f793929190613a90565b60006040518083038185885af1158015612315573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261233e9190810190613abb565b95945050505050565b61234f612bab565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061247057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166124647f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611f83576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d6181611e30565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561250c575060408051601f3d908101601f191682019092526125099181019061397a565b60015b612552576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146125ae576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401612549565b610c208383612c06565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015612624573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f9919061395d565b6003546001600160a01b0390811690831603612797576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af11580156126ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ee919061395d565b612724576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561278357600080fd5b505af115801561105d573d6000803e3d6000fd5b6000546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301529091169063d936547e90602401602060405180830381865afa1580156127fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061281e919061395d565b612854576040517fac2175f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610d61906001600160a01b03848116911683612949565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611f83576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6128d8611f27565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258336123b9565b6040516001600160a01b03838116602483015260448201839052610c2091859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612c5c565b611f83612cd8565b6129cd612cd8565b611f83612d3f565b6129dd612cd8565b611f83612d47565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610d61576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401612549565b6040516001600160a01b038481166024830152838116604483015260648201839052610a019186918216906323b872dd90608401612976565b60048110610d615781357f98933fac000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000821601612b30576040517fed69977500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f36fd75ca000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000821601610c20576040517ff3459a9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611f83576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612c0f82612d98565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115612c5457610c208282612e40565b610d61612ead565b6000612c716001600160a01b03841683612ee5565b90508051600014158015612c96575080806020019051810190612c94919061395d565b155b15610c20576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401612549565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611f83576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612127612cd8565b612d4f612cd8565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b806001600160a01b03163b600003612de7576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401612549565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051612e5d9190613b29565b600060405180830381855af49150503d8060008114612e98576040519150601f19603f3d011682016040523d82523d6000602084013e612e9d565b606091505b509150915061233e858383612ef3565b3415611f83576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60606121f983836000612f68565b606082612f0857612f038261301e565b6121f9565b8151158015612f1f57506001600160a01b0384163b155b15612f61576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401612549565b50806121f9565b606081471015612fa6576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401612549565b600080856001600160a01b03168486604051612fc29190613b29565b60006040518083038185875af1925050503d8060008114612fff576040519150601f19603f3d011682016040523d82523d6000602084013e613004565b606091505b5091509150613014868383612ef3565b9695505050505050565b80511561302e5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561307257600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146121f957600080fd5b80356001600160a01b03811681146130b957600080fd5b919050565b6000602082840312156130d057600080fd5b6121f9826130a2565b600060a082840312156130eb57600080fd5b50919050565b6000806000806080858703121561310757600080fd5b613110856130a2565b935060208501359250613125604086016130a2565b9150606085013567ffffffffffffffff81111561314157600080fd5b61314d878288016130d9565b91505092959194509250565b60008083601f84011261316b57600080fd5b50813567ffffffffffffffff81111561318357600080fd5b60208301915083602082850101111561319b57600080fd5b9250929050565b600080600080606085870312156131b857600080fd5b6131c1856130a2565b9350602085013567ffffffffffffffff8111156131dd57600080fd5b6131e987828801613159565b909450925050604085013567ffffffffffffffff81111561314157600080fd5b60008060006040848603121561321e57600080fd5b613227846130a2565b9250602084013567ffffffffffffffff81111561324357600080fd5b61324f86828701613159565b9497909650939450505050565b60005b8381101561327757818101518382015260200161325f565b50506000910152565b6000815180845261329881602086016020860161325c565b601f01601f19169290920160200192915050565b6020815260006121f96020830184613280565b6000602082840312156132d157600080fd5b5035919050565b600080604083850312156132eb57600080fd5b823591506132fb602084016130a2565b90509250929050565b600080600080848603606081121561331b57600080fd5b602081121561332957600080fd5b50849350613339602086016130a2565b9250604085013567ffffffffffffffff81111561335557600080fd5b61336187828801613159565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156133c5576133c561336d565b604052919050565b600067ffffffffffffffff8211156133e7576133e761336d565b50601f01601f191660200190565b6000806040838503121561340857600080fd5b613411836130a2565b9150602083013567ffffffffffffffff81111561342d57600080fd5b8301601f8101851361343e57600080fd5b803561345161344c826133cd565b61339c565b81815286602083850101111561346657600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008060008060006080868803121561349e57600080fd5b6134a7866130a2565b94506134b5602087016130a2565b935060408601359250606086013567ffffffffffffffff8111156134d857600080fd5b6134e488828901613159565b969995985093965092949392505050565b6000806040838503121561350857600080fd5b613511836130a2565b9150602083013567ffffffffffffffff81111561352d57600080fd5b613539858286016130d9565b9150509250929050565b6000608082840312156130eb57600080fd5b60008060008060008060a0878903121561356e57600080fd5b613577876130a2565b9550613585602088016130a2565b945060408701359350606087013567ffffffffffffffff8111156135a857600080fd5b6135b489828a01613159565b909450925050608087013567ffffffffffffffff8111156135d457600080fd5b6135e089828a01613543565b9150509295509295509295565b60008060006060848603121561360257600080fd5b61360b846130a2565b9250613619602085016130a2565b9150613627604085016130a2565b90509250925092565b6000806000806060858703121561364657600080fd5b61364f856130a2565b9350602085013567ffffffffffffffff81111561366b57600080fd5b61367787828801613159565b909450925050604085013567ffffffffffffffff81111561369757600080fd5b61314d87828801613543565b60008060008060008060a087890312156136bc57600080fd5b6136c5876130a2565b9550602087013594506136da604088016130a2565b9350606087013567ffffffffffffffff8111156136f657600080fd5b61370289828a01613159565b909450925050608087013567ffffffffffffffff81111561372257600080fd5b6135e089828a016130d9565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261376357600080fd5b83018035915067ffffffffffffffff82111561377e57600080fd5b60200191503681900382131561319b57600080fd5b8015158114610d4357600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126137d657600080fd5b830160208101925035905067ffffffffffffffff8111156137f657600080fd5b80360382131561319b57600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6001600160a01b03613841826130a2565b1682526000602082013561385481613793565b151560208401526001600160a01b0361386f604084016130a2565b16604084015261388260608301836137a1565b60a0606086015261389760a086018284613805565b6080948501359590940194909452509092915050565b8381526001600160a01b0383166020820152608060408201526000608082015260a06060820152600061233e60a0830184613830565b808201808211156107e2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b604081526000613931604083018587613805565b82810360208401526130148185613830565b83815260406020820152600061233e604083018486613805565b60006020828403121561396f57600080fd5b81516121f981613793565b60006020828403121561398c57600080fd5b5051919050565b8581526001600160a01b03851660208201526080604082015260006139bc608083018587613805565b82810360608401526139ce8185613830565b98975050505050505050565b6001600160a01b036139eb826130a2565b1682526001600160a01b03613a02602083016130a2565b166020830152604081810135908301526000613a2160608301836137a1565b6080606086015261233e608086018284613805565b6020815260006121f960208301846139da565b848152606060208201526000613a63606083018587613805565b8281036040840152613a7581856139da565b979650505050505050565b8183823760009101908152919050565b6001600160a01b03613aa1856130a2565b16815260406020820152600061233e604083018486613805565b600060208284031215613acd57600080fd5b815167ffffffffffffffff811115613ae457600080fd5b8201601f81018413613af557600080fd5b8051613b0361344c826133cd565b818152856020838501011115613b1857600080fd5b61233e82602083016020860161325c565b60008251613b3b81846020870161325c565b919091019291505056fea26469706673582212201229b7b25024e7ca203b587177014870919846d3750c5162ab31d92af37e129664736f6c634300081a0033", } // 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 c787006a4..6da06a0f4 100644 --- a/v2/pkg/gatewayevm.t.sol/gatewayevminboundtest.go +++ b/v2/pkg/gatewayevm.t.sol/gatewayevminboundtest.go @@ -67,7 +67,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\":\"testCallWithPayloadFailsIfDestinationIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testCallWithPayloadFailsIfPayloadSizeExceeded\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositERC20ToCustody\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositERC20ToCustodyFailsIfPayloadSizeExceeded\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositERC20ToCustodyFailsIfTokenIsNotWhitelisted\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositERC20ToCustodyWithPayload\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositERC20ToCustodyWithPayloadFailsIfPayloadSizeExceeded\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositERC20ToCustodyWithPayloadFailsIfTokenIsNotWhitelisted\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositEthToTss\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositEthToTssWithPayload\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositEthToTssWithPayloadFailsIfPayloadSizeExceeded\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZetaToConnector\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testFailDepositERC20ToCustodyIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testFailDepositERC20ToCustodyIfReceiverIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testFailDepositERC20ToCustodyWithPayloadIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testFailDepositERC20ToCustodyWithPayloadIfReceiverIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testFailDepositEthToTssIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testFailDepositEthToTssIfPayloadSizeExceeded\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testFailDepositEthToTssIfReceiverIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testFailDepositEthToTssWithPayloadIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testFailDepositEthToTssWithPayloadIfReceiverIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Called\",\"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\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposited\",\"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\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\":\"ReceivedOnCall\",\"inputs\":[],\"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\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedGatewayTSSAddress\",\"inputs\":[{\"name\":\"oldTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"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\":\"ConnectorInitialized\",\"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\":\"NotAllowedToCallOnCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotAllowedToCallOnRevert\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotWhitelistedInCustody\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PayloadSizeExceeded\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZETANotSupported\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055620f4240602c55348015603357600080fd5b5061bf49806100436000396000f3fe608060405234801561001057600080fd5b50600436106102415760003560e01c8063916a17c611610145578063ba414fa6116100bd578063e20c9f711161008c578063e85c5a0711610071578063e85c5a07146103a2578063f96c02df146103aa578063fa7626d4146103b257600080fd5b8063e20c9f7114610392578063e306a9781461039a57600080fd5b8063ba414fa614610362578063bb93f11e1461037a578063c13d738f14610382578063d896e2611461038a57600080fd5b8063aa030c1c11610114578063b1409f71116100f9578063b1409f711461034a578063b284906314610352578063b5508aa91461035a57600080fd5b8063aa030c1c1461033a578063b0464fdc1461034257600080fd5b8063916a17c61461030d57806395cd0445146103225780639fd1e5971461032a578063a48abc2a1461033257600080fd5b80633e5e3c23116101d857806351da903d116101a757806366d9a9a01161018c57806366d9a9a0146102db5780637478fda0146102f057806385226c81146102f857600080fd5b806351da903d146102cb5780636459542a146102d357600080fd5b80633e5e3c23146102ab5780633f7286f4146102b3578063466f332e146102bb5780634ce25c0a146102c357600080fd5b80631806a9a5116102145780631806a9a5146102685780631ed7831c146102705780632ade38801461028e57806330f7c04f146102a357600080fd5b806305a898e21461024657806306978ca3146102505780630724d8e3146102585780630a9254e414610260575b600080fd5b61024e6103bf565b005b61024e610576565b61024e61068e565b61024e610842565b61024e61138b565b610278611488565b6040516102859190618649565b60405180910390f35b6102966114ea565b60405161028591906186e5565b61024e61162c565b610278611a9f565b610278611aff565b61024e611b5f565b61024e611e51565b61024e6120ed565b61024e61224e565b6102e3612647565b604051610285919061884b565b61024e6127c9565b6103006128cc565b60405161028591906188e9565b61031561299c565b6040516102859190618960565b61024e612a97565b61024e612ded565b61024e61300f565b61024e613203565b6103156133c0565b61024e6134bb565b61024e61376d565b61030061397b565b61036a613a4b565b6040519015158152602001610285565b61024e613b1f565b61024e613c16565b61024e613d0d565b610278613e88565b61024e613ee8565b61024e6140ce565b61024e61434f565b601f5461036a9060ff1681565b6026546040516001600160a01b03909116602482015260019060009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb3906104b7906004016020808252600b908201527f5a65726f41646472657373000000000000000000000000000000000000000000604082015260600190565b600060405180830381600087803b1580156104d157600080fd5b505af11580156104e5573d6000803e3d6000fd5b50506020546023546040517fd09e3b780000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063d09e3b7893506105409260009288929116908790602890600401618b33565b600060405180830381600087803b15801561055a57600080fd5b505af115801561056e573d6000803e3d6000fd5b505050505050565b6040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f496e73756666696369656e74455448416d6f756e7400000000000000000000006044820152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390606401600060405180830381600087803b15801561060c57600080fd5b505af1158015610620573d6000803e3d6000fd5b50506020546026546040517f726ac97c0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063726ac97c93508592610675921690602890600401618b88565b6000604051808303818588803b15801561055a57600080fd5b6027546020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039182166084820152620186a092919091163190737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561072a57600080fd5b505af115801561073e573d6000803e3d6000fd5b50506026546025546040516001600160a01b039283169450911691507fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c9061078d908690600090602890618baa565b60405180910390a36020546026546040517f726ac97c0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169263726ac97c9286926107e89290911690602890600401618b88565b6000604051808303818588803b15801561080157600080fd5b505af1158015610815573d6000803e3d6000fd5b50506027546001600160a01b031631925061083d915061083790508484618c0f565b82614465565b505050565b602580547fffffffffffffffffffffffff000000000000000000000000000000000000000090811630179091556026805482166112341790556027805490911661567817905560405161089490618576565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610919573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602754604051911690819061096290618583565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015610995573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c000000000000000000000000000000000000602082015260275460255492519086169481019490945260448401929092529092166064820152610a8791906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc0c53b8b000000000000000000000000000000000000000000000000000000001790526144e4565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff000000000000000000000000000000000000000090911681178255604080518082018252601081527f4552433230437573746f64792e736f6c000000000000000000000000000000009381019390935260275460255491516024810193909352841660448301529092166064830152610b5791608401610a2a565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602180549190920483167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116179055604080518082018252601a81527f5a657461436f6e6e6563746f724e6f6e4e61746976652e736f6c00000000000060208083019190915254602480546027546025549551938716928401929092528516604483015284166064820152919092166084820152610c90919060a40160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff8c8765e000000000000000000000000000000000000000000000000000000001790526144e4565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602280549190920483167fffffffffffffffffffffffff00000000000000000000000000000000000000009091161790556027546040517fca669fa700000000000000000000000000000000000000000000000000000000815291166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015610d6857600080fd5b505af1158015610d7c573d6000803e3d6000fd5b5050602480546027546022546040517f15d57fd40000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152908216938101939093521692506315d57fd49150604401600060405180830381600087803b158015610def57600080fd5b505af1158015610e03573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610e8757600080fd5b505af1158015610e9b573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610f1157600080fd5b505af1158015610f25573d6000803e3d6000fd5b50506020546021546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b158015610f8b57600080fd5b505af1158015610f9f573d6000803e3d6000fd5b50506020546022546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b15801561100557600080fd5b505af1158015611019573d6000803e3d6000fd5b50506021546023546040517f9b19251a0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015291169250639b19251a9150602401600060405180830381600087803b15801561107f57600080fd5b505af1158015611093573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156110f557600080fd5b505af1158015611109573d6000803e3d6000fd5b5050602354602554602c546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810191909152911692506340c10f199150604401600060405180830381600087803b15801561117a57600080fd5b505af115801561118e573d6000803e3d6000fd5b50506027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561120457600080fd5b505af1158015611218573d6000803e3d6000fd5b5050602254602554602c546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810191909152600060448201529116925063106e62909150606401600060405180830381600087803b15801561129057600080fd5b505af11580156112a4573d6000803e3d6000fd5b50506040805160a08101825261032180825260016020808401918252838501928352845190810190945260008085526060840185905260808401528251602880549251151574010000000000000000000000000000000000000000027fffffffffffffffffffffff0000000000000000000000000000000000000000009093166001600160a01b0392831617929092178255915160298054919093167fffffffffffffffffffffffff000000000000000000000000000000000000000091909116179091559093509150602a9061137b9082618c98565b5060808201518160030155905050565b6040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a65726f416464726573730000000000000000000000000000000000000000006044820152600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390606401600060405180830381600087803b15801561142157600080fd5b505af1158015611435573d6000803e3d6000fd5b50506020546040517f726ac97c0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116925063726ac97c9150839061067590600090602890600401618b88565b606060168054806020026020016040519081016040528092919081815260200182805480156114e057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116114c2575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561162357600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561160c57838290600052602060002001805461157f906189f7565b80601f01602080910402602001604051908101604052809291908181526020018280546115ab906189f7565b80156115f85780601f106115cd576101008083540402835291602001916115f8565b820191906000526020600020905b8154815290600101906020018083116115db57829003601f168201915b505050505081526020019060010190611560565b50505050815250508152602001906001019061150e565b50505050905090565b6023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09260009216906370a0823190602401602060405180830381865afa158015611698573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116bc9190618d57565b90506116c9600082614465565b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052602354905491517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015260248101879052929350169063095ea7b3906044016020604051808303816000875af11580156117ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d09190618d70565b506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561185f57600080fd5b505af1158015611873573d6000803e3d6000fd5b50506026546025546023546040516001600160a01b03938416955091831693507fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c926118c9928992909116908790602890618d92565b60405180910390a36020546026546023546040517fd09e3b780000000000000000000000000000000000000000000000000000000081526001600160a01b039384169363d09e3b789361192d93908216928992909116908790602890600401618b33565b600060405180830381600087803b15801561194757600080fd5b505af115801561195b573d6000803e3d6000fd5b50506023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156119c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119eb9190618d57565b90506119f78482614465565b6023546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611a61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a859190618d57565b9050611a9885602c546108379190618dcc565b5050505050565b606060188054806020026020016040519081016040528092919081815260200182805480156114e0576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116114c2575050505050905090565b606060178054806020026020016040519081016040528092919081815260200182805480156114e0576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116114c2575050505050905090565b60208054604080517fa2ba19340000000000000000000000000000000000000000000000000000000081529051620186a0936000936002936001600160a01b039091169263a2ba1934926004808401939192918290030181865afa158015611bcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bef9190618d57565b611bf99190618ddf565b67ffffffffffffffff811115611c1157611c11618c22565b6040519080825280601f01601f191660200182016040528015611c3b576020820181803683370190505b5060208054604080517fa2ba193400000000000000000000000000000000000000000000000000000000815290519394506002936001600160a01b039092169263a2ba1934926004808401938290030181865afa158015611ca0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cc49190618d57565b611cce9190618ddf565b611cd9906001618c0f565b67ffffffffffffffff811115611cf157611cf1618c22565b6040519080825280601f01601f191660200182016040528015611d1b576020820181803683370190505b50602a90611d299082618c98565b506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f386691aa000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015b600060405180830381600087803b158015611db057600080fd5b505af1158015611dc4573d6000803e3d6000fd5b50506020546026546040517f744b9b8b0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063744b9b8b93508692611e1b9216908690602890600401618e1a565b6000604051808303818588803b158015611e3457600080fd5b505af1158015611e48573d6000803e3d6000fd5b50505050505050565b6023546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a06024820181905292919091169063095ea7b3906044016020604051808303816000875af1158015611ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eea9190618d70565b5060208054604080517fa2ba193400000000000000000000000000000000000000000000000000000000815290516001600160a01b039092169263a2ba1934926004808401938290030181865afa158015611f49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f6d9190618d57565b611f78906001618c0f565b67ffffffffffffffff811115611f9057611f90618c22565b6040519080825280601f01601f191660200182016040528015611fba576020820181803683370190505b50602a90611fc89082618c98565b506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f386691aa000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015b600060405180830381600087803b15801561204f57600080fd5b505af1158015612063573d6000803e3d6000fd5b50506020546026546023546040517f102614b00000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063102614b094506120bf939283169287921690602890600401618e4e565b600060405180830381600087803b1580156120d957600080fd5b505af1158015611a98573d6000803e3d6000fd5b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156121e757600080fd5b505af11580156121fb573d6000803e3d6000fd5b50506020546040517f1becceb40000000000000000000000000000000000000000000000000000000081526001600160a01b039091169250631becceb491506120bf906000908590602890600401618e1a565b6023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09260009216906370a0823190602401602060405180830381865afa1580156122ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122de9190618d57565b90506122eb600082614465565b6023546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810185905291169063095ea7b3906044016020604051808303816000875af1158015612359573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061237d9190618d70565b506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561240c57600080fd5b505af1158015612420573d6000803e3d6000fd5b50506026546025546023546040516001600160a01b03938416955091831693507fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c9261247492889290911690602890618baa565b60405180910390a36020546026546023546040517f102614b00000000000000000000000000000000000000000000000000000000081526001600160a01b039384169363102614b0936124d69390821692889290911690602890600401618e4e565b600060405180830381600087803b1580156124f057600080fd5b505af1158015612504573d6000803e3d6000fd5b50506023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015612570573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125949190618d57565b90506125a08382614465565b6023546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801561260a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061262e9190618d57565b905061264184602c546108379190618dcc565b50505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015611623578382906000526020600020906002020160405180604001604052908160008201805461269e906189f7565b80601f01602080910402602001604051908101604052809291908181526020018280546126ca906189f7565b80156127175780601f106126ec57610100808354040283529160200191612717565b820191906000526020600020905b8154815290600101906020018083116126fa57829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156127b157602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161275e5790505b5050505050815250508152602001906001019061266b565b6040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a65726f416464726573730000000000000000000000000000000000000000006044820152600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390606401600060405180830381600087803b15801561285f57600080fd5b505af1158015612873573d6000803e3d6000fd5b50506020546023546040517f102614b00000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063102614b093506120bf926000928792911690602890600401618e4e565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101561162357838290600052602060002001805461290f906189f7565b80601f016020809104026020016040519081016040528092919081815260200182805461293b906189f7565b80156129885780601f1061295d57610100808354040283529160200191612988565b820191906000526020600020905b81548152906001019060200180831161296b57829003601f168201915b5050505050815260200190600101906128f0565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156116235760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015612a7f57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411612a2c5790505b505050505081525050815260200190600101906129c0565b60208054604080517fa2ba19340000000000000000000000000000000000000000000000000000000081529051620186a0936000936002936001600160a01b039091169263a2ba1934926004808401939192918290030181865afa158015612b03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b279190618d57565b612b319190618ddf565b67ffffffffffffffff811115612b4957612b49618c22565b6040519080825280601f01601f191660200182016040528015612b73576020820181803683370190505b5060208054604080517fa2ba193400000000000000000000000000000000000000000000000000000000815290519394506002936001600160a01b039092169263a2ba1934926004808401938290030181865afa158015612bd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bfc9190618d57565b612c069190618ddf565b612c11906001618c0f565b67ffffffffffffffff811115612c2957612c29618c22565b6040519080825280601f01601f191660200182016040528015612c53576020820181803683370190505b50602a90612c619082618c98565b506023546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810185905291169063095ea7b3906044016020604051808303816000875af1158015612cd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf49190618d70565b506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f386691aa000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015b600060405180830381600087803b158015612d7b57600080fd5b505af1158015612d8f573d6000803e3d6000fd5b50506020546026546023546040517fd09e3b780000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063d09e3b7894506105409392831692889216908790602890600401618b33565b6027546026546040516001600160a01b039182166024820152620186a09291909116319060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015612efe57600080fd5b505af1158015612f12573d6000803e3d6000fd5b50506026546025546040516001600160a01b039283169450911691507fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c90612f639087906000908790602890618d92565b60405180910390a36020546026546040517f744b9b8b0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169263744b9b8b928792612fc092909116908690602890600401618e1a565b6000604051808303818588803b158015612fd957600080fd5b505af1158015612fed573d6000803e3d6000fd5b50506027546001600160a01b0316319250612641915061083790508585618c0f565b60208054604080517fa2ba193400000000000000000000000000000000000000000000000000000000815290516001600160a01b039092169263a2ba1934926004808401938290030181865afa15801561306d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130919190618d57565b61309c906001618c0f565b67ffffffffffffffff8111156130b4576130b4618c22565b6040519080825280601f01601f1916602001820160405280156130de576020820181803683370190505b50602a906130ec9082618c98565b506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f5061796c6f616453697a654578636565646564000000000000000000000000006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390606401600060405180830381600087803b15801561318057600080fd5b505af1158015613194573d6000803e3d6000fd5b50506020546026546040517f726ac97c0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063726ac97c93506001926131ea921690602890600401618b88565b6000604051808303818588803b1580156120d957600080fd5b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561330657600080fd5b505af115801561331a573d6000803e3d6000fd5b50506026546025546040516001600160a01b039283169450911691507fd34634f30f94a646fdf4ce7078f38fc5fa0d3f0b193658facea4e3e43330d97490613366908590602890618e85565b60405180910390a36020546026546040517f1becceb40000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692631becceb4926120bf929116908590602890600401618e1a565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156116235760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156134a357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116134505790505b505050505081525050815260200190600101906133e4565b60208054604080517fa2ba193400000000000000000000000000000000000000000000000000000000815290516000936002936001600160a01b03169263a2ba193492600480830193928290030181865afa15801561351e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135429190618d57565b61354c9190618ddf565b67ffffffffffffffff81111561356457613564618c22565b6040519080825280601f01601f19166020018201604052801561358e576020820181803683370190505b5060208054604080517fa2ba193400000000000000000000000000000000000000000000000000000000815290519394506002936001600160a01b039092169263a2ba1934926004808401938290030181865afa1580156135f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136179190618d57565b6136219190618ddf565b61362c906001618c0f565b67ffffffffffffffff81111561364457613644618c22565b6040519080825280601f01601f19166020018201604052801561366e576020820181803683370190505b50602a9061367c9082618c98565b506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f386691aa000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561370257600080fd5b505af1158015613716573d6000803e3d6000fd5b50506020546026546040517f1becceb40000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631becceb493506120bf92909116908590602890600401618e1a565b6023546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a06024820181905292919091169063095ea7b3906044016020604051808303816000875af11580156137e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138069190618d70565b506025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561387957600080fd5b505af115801561388d573d6000803e3d6000fd5b50506021546023546040517f9a5904270000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015291169250639a5904279150602401600060405180830381600087803b1580156138f357600080fd5b505af1158015613907573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fac2175f1000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401612035565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156116235783829060005260206000200180546139be906189f7565b80601f01602080910402602001604051908101604052809291908181526020018280546139ea906189f7565b8015613a375780601f10613a0c57610100808354040283529160200191613a37565b820191906000526020600020905b815481529060010190602001808311613a1a57829003601f168201915b50505050508152602001906001019061399f565b60085460009060ff1615613a63575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015613af4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b189190618d57565b1415905090565b6026546040516001600160a01b039091166024820152600090819060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390612d619060040160208082526017908201527f496e73756666696369656e744552433230416d6f756e74000000000000000000604082015260600190565b6026546040516001600160a01b039091166024820152600090819060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390611d969060040160208082526015908201527f496e73756666696369656e74455448416d6f756e740000000000000000000000604082015260600190565b6026546040516001600160a01b03909116602482015260019060009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390613e05906004016020808252600b908201527f5a65726f41646472657373000000000000000000000000000000000000000000604082015260600190565b600060405180830381600087803b158015613e1f57600080fd5b505af1158015613e33573d6000803e3d6000fd5b50506020546040517f744b9b8b0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116925063744b9b8b91508490611e1b906000908690602890600401618e1a565b606060158054806020026020016040519081016040528092919081815260200182805480156114e0576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116114c2575050505050905090565b602480546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a093810184905291169063095ea7b3906044016020604051808303816000875af1158015613f5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f7e9190618d70565b506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561400457600080fd5b505af1158015614018573d6000803e3d6000fd5b50506026546025546024546040516001600160a01b03938416955091831693507fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c9261406c92879290911690602890618baa565b60405180910390a36020546026546024546040517f102614b00000000000000000000000000000000000000000000000000000000081526001600160a01b039384169363102614b0936120bf9390821692879290911690602890600401618e4e565b6026546040516001600160a01b039091166024820152620186a09060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052602354905491517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015260248101869052929350169063095ea7b3906044016020604051808303816000875af11580156141b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141da9190618d70565b506025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561424d57600080fd5b505af1158015614261573d6000803e3d6000fd5b50506021546023546040517f9a5904270000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015291169250639a5904279150602401600060405180830381600087803b1580156142c757600080fd5b505af11580156142db573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fac2175f1000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401612d61565b6023546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260006024820181905292919091169063095ea7b3906044016020604051808303816000875af11580156143c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143e69190618d70565b506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e73756666696369656e744552433230416d6f756e740000000000000000006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390606401612035565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b1580156144d057600080fd5b505afa15801561056e573d6000803e3d6000fd5b60006144ee618590565b6144f9848483614503565b9150505b92915050565b600080614510858461457e565b90506145736040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f7879000000815250828660405160200161455e929190618eaa565b6040516020818303038152906040528561458a565b9150505b9392505050565b600061457783836145b8565b60c081015151600090156145ae576145a784848460c001516145d3565b9050614577565b6145a78484614779565b60006145c48383614864565b6145778383602001518461458a565b6000806145de614874565b905060006145ec8683614947565b905060006146038260600151836020015185614ded565b9050600061461383838989614fff565b9050600061462082615e7c565b602081015181519192509060030b156146935789826040015160405160200161464a929190618ecc565b60408051601f19818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261468a91600401618f4d565b60405180910390fd5b60006146d66040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a20000000000000000000000081525083600161604b565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90614729908490600401618f4d565b602060405180830381865afa158015614746573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061476a9190618f60565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc925906147ce908790600401618f4d565b600060405180830381865afa1580156147eb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526148139190810190619042565b90506000614841828560405160200161482d929190619077565b60405160208183030381529060405261624b565b90506001600160a01b0381166144f957848460405160200161464a9291906190a6565b6148708282600061625e565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c906148fb908490600401619151565b600060405180830381865afa158015614918573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526149409190810190619198565b9250505090565b6149796040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d90506149c46040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6149cd85616361565b602082015260006149dd86616746565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015614a1f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614a479190810190619198565b86838560200151604051602001614a6194939291906191e1565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190614ab9908590600401618f4d565b600060405180830381865afa158015614ad6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614afe9190810190619198565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690614b469084906004016192e5565b602060405180830381865afa158015614b63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614b879190618d70565b614b9c578160405160200161464a9190619337565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890614be19084906004016193c9565b600060405180830381865afa158015614bfe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614c269190810190619198565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690614c6d90849060040161941b565b602060405180830381865afa158015614c8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614cae9190618d70565b15614d43576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890614cf890849060040161941b565b600060405180830381865afa158015614d15573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614d3d9190810190619198565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001614d68919061946d565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401614d949291906194d9565b600060405180830381865afa158015614db1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614dd99190810190619198565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081614e095790505090506040518060400160405280600481526020017f677265700000000000000000000000000000000000000000000000000000000081525081600081518110614e6957614e696194fe565b60200260200101819052506040518060400160405280600381526020017f2d726c000000000000000000000000000000000000000000000000000000000081525081600181518110614ebd57614ebd6194fe565b602002602001018190525084604051602001614ed9919061952d565b60405160208183030381529060405281600281518110614efb57614efb6194fe565b602002602001018190525082604051602001614f179190619599565b60405160208183030381529060405281600381518110614f3957614f396194fe565b60200260200101819052506000614f4f82615e7c565b602080820151604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000008185019081528251808401845260008082529086015282518084019093529051825292810192909252919250614fe090604080518082018252600080825260209182015281518083019092528451825280850190820152906169c9565b614ff5578560405160200161464a91906195da565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d901561504f565b511590565b6151c35782602001511561510b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a40161468a565b8260c00151156151c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a40161468a565b6040805160ff8082526120008201909252600091816020015b60608152602001906001900390816151dc57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806152379061966b565b935060ff168151811061524c5761524c6194fe565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e370000000000000000000000000000000000000081525060405160200161529d919061968a565b6040516020818303038152906040528282806152b89061966b565b935060ff16815181106152cd576152cd6194fe565b60200260200101819052506040518060400160405280600681526020017f6465706c6f79000000000000000000000000000000000000000000000000000081525082828061531a9061966b565b935060ff168151811061532f5761532f6194fe565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d6500000000000000000000000000000000000081525082828061537c9061966b565b935060ff1681518110615391576153916194fe565b602002602001018190525087602001518282806153ad9061966b565b935060ff16815181106153c2576153c26194fe565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163745061746800000000000000000000000000000000000081525082828061540f9061966b565b935060ff1681518110615424576154246194fe565b60209081029190910101528751828261543c8161966b565b935060ff1681518110615451576154516194fe565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e4964000000000000000000000000000000000000000000000081525082828061549e9061966b565b935060ff16815181106154b3576154b36194fe565b60200260200101819052506154c746616a2a565b82826154d28161966b565b935060ff16815181106154e7576154e76194fe565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c6500000000000000000000000000000000008152508282806155349061966b565b935060ff1681518110615549576155496194fe565b6020026020010181905250868282806155619061966b565b935060ff1681518110615576576155766194fe565b602090810291909101015285511561569d5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826155c78161966b565b935060ff16815181106155dc576155dc6194fe565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d9061562c908990600401618f4d565b600060405180830381865afa158015615649573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526156719190810190619198565b828261567c8161966b565b935060ff1681518110615691576156916194fe565b60200260200101819052505b84602001511561576d5760408051808201909152601281527f2d2d766572696679536f75726365436f64650000000000000000000000000000602082015282826156e68161966b565b935060ff16815181106156fb576156fb6194fe565b60200260200101819052506040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152508282806157489061966b565b935060ff168151811061575d5761575d6194fe565b6020026020010181905250615934565b6157a561504a8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6158385760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826157e88161966b565b935060ff16815181106157fd576157fd6194fe565b60200260200101819052508460a0015160405160200161581d919061952d565b6040516020818303038152906040528282806157489061966b565b8460c0015115801561587b57506040808901518151808301835260008082526020918201528251808401909352815183529081019082015261587990511590565b155b156159345760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826158bf8161966b565b935060ff16815181106158d4576158d46194fe565b60200260200101819052506158e888616aca565b6040516020016158f8919061952d565b6040516020818303038152906040528282806159139061966b565b935060ff1681518110615928576159286194fe565b60200260200101819052505b6040808601518151808301835260008082526020918201528251808401909352815183529081019082015261596890511590565b6159fd5760408051808201909152600b81527f2d2d72656c617965724964000000000000000000000000000000000000000000602082015282826159ab8161966b565b935060ff16815181106159c0576159c06194fe565b602002602001018190525084604001518282806159dc9061966b565b935060ff16815181106159f1576159f16194fe565b60200260200101819052505b606085015115615b1e5760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282615a468161966b565b935060ff1681518110615a5b57615a5b6194fe565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015615aca573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615af29190810190619198565b8282615afd8161966b565b935060ff1681518110615b1257615b126194fe565b60200260200101819052505b60e08501515115615bc55760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282615b688161966b565b935060ff1681518110615b7d57615b7d6194fe565b6020026020010181905250615b998560e0015160000151616a2a565b8282615ba48161966b565b935060ff1681518110615bb957615bb96194fe565b60200260200101819052505b60e08501516020015115615c6f5760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282615c128161966b565b935060ff1681518110615c2757615c276194fe565b6020026020010181905250615c438560e0015160200151616a2a565b8282615c4e8161966b565b935060ff1681518110615c6357615c636194fe565b60200260200101819052505b60e08501516040015115615d195760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282615cbc8161966b565b935060ff1681518110615cd157615cd16194fe565b6020026020010181905250615ced8560e0015160400151616a2a565b8282615cf88161966b565b935060ff1681518110615d0d57615d0d6194fe565b60200260200101819052505b60e08501516060015115615dc35760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282615d668161966b565b935060ff1681518110615d7b57615d7b6194fe565b6020026020010181905250615d978560e0015160600151616a2a565b8282615da28161966b565b935060ff1681518110615db757615db76194fe565b60200260200101819052505b60008160ff1667ffffffffffffffff811115615de157615de1618c22565b604051908082528060200260200182016040528015615e1457816020015b6060815260200190600190039081615dff5790505b50905060005b8260ff168160ff161015615e6d57838160ff1681518110615e3d57615e3d6194fe565b6020026020010151828260ff1681518110615e5a57615e5a6194fe565b6020908102919091010152600101615e1a565b5093505050505b949350505050565b615ea36040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c91615f29918691016196f5565b600060405180830381865afa158015615f46573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615f6e9190810190619198565b90506000615f7c86836175b9565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401615fac91906188e9565b6000604051808303816000875af1158015615fcb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615ff3919081019061973c565b805190915060030b1580159061600c5750602081015151155b801561601b5750604081015151155b15614ff55781600081518110616033576160336194fe565b602002602001015160405160200161464a91906197f2565b606060006160808560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506160b79082905b9061770e565b156162145760006161348261612e846161286160fa8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90617735565b90617797565b604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061619890829061770e565b1561620257604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526161ff905b829061781c565b90505b61620b81617842565b92505050614577565b821561622d57848460405160200161464a9291906199de565b5050604080516020810190915260008152614577565b509392505050565b6000808251602084016000f09392505050565b8160a001511561626d57505050565b600061627a8484846178ab565b9050600061628782615e7c565b602081015181519192509060030b1580156163235750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616323906040805180820182526000808252602091820152815180830190925284518252808501908201526160b1565b1561633057505050505050565b6040820151511561635057816040015160405160200161464a9190619a85565b8060405160200161464a9190619ae3565b606060006163968360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506163fb905b82906169c9565b1561646a57604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261457790616465908390617e46565b617842565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526164cc905b8290617ed0565b60010361659957604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616532906161f8565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261457790616465905b839061781c565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526165f8906163f4565b1561672f57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290616660908390617f6a565b9050600081600183516166739190618dcc565b81518110616683576166836194fe565b602002602001015190506167266164656166f96040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290617e46565b95945050505050565b8260405160200161464a9190619b4e565b50919050565b6060600061677b8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506167dd906163f4565b156167eb5761457781617842565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261684a906164c5565b6001036168b457604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526145779061646590616592565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616913906163f4565b1561672f57604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061697b908390617f6a565b90506001815111156169b75780600282516169969190618dcc565b815181106169a6576169a66194fe565b602002602001015192505050919050565b508260405160200161464a9190619b4e565b8051825160009111156169de575060006144fd565b815183516020850151600092916169f491618c0f565b6169fe9190618dcc565b905082602001518103616a155760019150506144fd565b82516020840151819020912014905092915050565b60606000616a378361800f565b600101905060008167ffffffffffffffff811115616a5757616a57618c22565b6040519080825280601f01601f191660200182016040528015616a81576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084616a8b57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091616b56905b82906180f1565b15616b9657505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616bf590616b4f565b15616c3557505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616c9490616b4f565b15616cd457505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616d3390616b4f565b80616d985750604080518082018252601081527f47504c2d322e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616d9890616b4f565b15616dd857505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616e3790616b4f565b80616e9c5750604080518082018252601081527f47504c2d332e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616e9c90616b4f565b15616edc57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616f3b90616b4f565b80616fa05750604080518082018252601181527f4c47504c2d322e312d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616fa090616b4f565b15616fe057505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261703f90616b4f565b806170a45750604080518082018252601181527f4c47504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526170a490616b4f565b156170e457505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261714390616b4f565b1561718357505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526171e290616b4f565b1561722257505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261728190616b4f565b156172c157505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261732090616b4f565b1561736057505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e3000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526173bf90616b4f565b156173ff57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261745e90616b4f565b806174c35750604080518082018252601181527f4147504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526174c390616b4f565b1561750357505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261756290616b4f565b156175a257505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b6040808401518451915161464a9290602001619c2c565b60608060005b845181101561764457818582815181106175db576175db6194fe565b60200260200101516040516020016175f4929190619077565b6040516020818303038152906040529150600185516176139190618dcc565b811461763c578160405160200161762a9190619d95565b60405160208183030381529060405291505b6001016175bf565b5060408051600380825260808201909252600091816020015b606081526020019060019003908161765d5790505090508381600081518110617688576176886194fe565b60200260200101819052506040518060400160405280600281526020017f2d63000000000000000000000000000000000000000000000000000000000000815250816001815181106176dc576176dc6194fe565b602002602001018190525081816002815181106176fb576176fb6194fe565b6020908102919091010152949350505050565b602080830151835183519284015160009361772c9291849190618105565b14159392505050565b604080518082019091526000808252602082015260006177678460000151856020015185600001518660200151618216565b90508360200151816177799190618dcc565b84518590617788908390618dcc565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156177bc5750816144fd565b60208083015190840151600191146177e35750815160208481015190840151829020919020145b8015617814578251845185906177fa908390618dcc565b9052508251602085018051617810908390618c0f565b9052505b509192915050565b604080518082019091526000808252602082015261783b838383618336565b5092915050565b60606000826000015167ffffffffffffffff81111561786357617863618c22565b6040519080825280601f01601f19166020018201604052801561788d576020820181803683370190505b509050600060208201905061783b81856020015186600001516183e1565b606060006178b7614874565b6040805160ff808252612000820190925291925060009190816020015b60608152602001906001900390816178d457905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061792f9061966b565b935060ff1681518110617944576179446194fe565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e33000000000000000000000000000000000000000000000000008152506040516020016179959190619dd6565b6040516020818303038152906040528282806179b09061966b565b935060ff16815181106179c5576179c56194fe565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280617a129061966b565b935060ff1681518110617a2757617a276194fe565b602002602001018190525082604051602001617a439190619599565b604051602081830303815290604052828280617a5e9061966b565b935060ff1681518110617a7357617a736194fe565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280617ac09061966b565b935060ff1681518110617ad557617ad56194fe565b6020026020010181905250617aea878461845b565b8282617af58161966b565b935060ff1681518110617b0a57617b0a6194fe565b602090810291909101015285515115617bb65760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282617b5c8161966b565b935060ff1681518110617b7157617b716194fe565b6020026020010181905250617b8a86600001518461845b565b8282617b958161966b565b935060ff1681518110617baa57617baa6194fe565b60200260200101819052505b856080015115617c245760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282617bff8161966b565b935060ff1681518110617c1457617c146194fe565b6020026020010181905250617c8a565b8415617c8a5760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282617c698161966b565b935060ff1681518110617c7e57617c7e6194fe565b60200260200101819052505b60408601515115617d265760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282617cd48161966b565b935060ff1681518110617ce957617ce96194fe565b60200260200101819052508560400151828280617d059061966b565b935060ff1681518110617d1a57617d1a6194fe565b60200260200101819052505b856060015115617d905760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282617d6f8161966b565b935060ff1681518110617d8457617d846194fe565b60200260200101819052505b60008160ff1667ffffffffffffffff811115617dae57617dae618c22565b604051908082528060200260200182016040528015617de157816020015b6060815260200190600190039081617dcc5790505b50905060005b8260ff168160ff161015617e3a57838160ff1681518110617e0a57617e0a6194fe565b6020026020010151828260ff1681518110617e2757617e276194fe565b6020908102919091010152600101617de7565b50979650505050505050565b6040805180820190915260008082526020820152815183511015617e6b5750816144fd565b81518351602085015160009291617e8191618c0f565b617e8b9190618dcc565b60208401519091506001908214617eac575082516020840151819020908220145b8015617ec757835185518690617ec3908390618dcc565b9052505b50929392505050565b6000808260000151617ef48560000151866020015186600001518760200151618216565b617efe9190618c0f565b90505b83516020850151617f129190618c0f565b811161783b5781617f2281619e1b565b9250508260000151617f59856020015183617f3d9190618dcc565b8651617f499190618dcc565b8386600001518760200151618216565b617f639190618c0f565b9050617f01565b60606000617f788484617ed0565b617f83906001618c0f565b67ffffffffffffffff811115617f9b57617f9b618c22565b604051908082528060200260200182016040528015617fce57816020015b6060815260200190600190039081617fb95790505b50905060005b815181101561624357617fea616465868661781c565b828281518110617ffc57617ffc6194fe565b6020908102919091010152600101617fd4565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310618058577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310618084576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106180a257662386f26fc10000830492506010015b6305f5e10083106180ba576305f5e100830492506008015b61271083106180ce57612710830492506004015b606483106180e0576064830492506002015b600a83106144fd5760010192915050565b60006180fd838361849b565b159392505050565b60008085841161820c57602084116181b8576000841561815057600161812c866020618dcc565b618137906008619e35565b618142906002619f33565b61814c9190618dcc565b1990505b835181168561815f8989618c0f565b6181699190618dcc565b805190935082165b8181146181a35787841161818b5787945050505050615e74565b8361819581619f3f565b945050828451169050618171565b6181ad8785618c0f565b945050505050615e74565b8383206181c58588618dcc565b6181cf9087618c0f565b91505b85821061820a578482208082036181f7576181ed8684618c0f565b9350505050615e74565b618202600184618dcc565b9250506181d2565b505b5092949350505050565b6000838186851161832157602085116182d0576000851561826257600161823e876020618dcc565b618249906008619e35565b618254906002619f33565b61825e9190618dcc565b1990505b845181166000876182738b8b618c0f565b61827d9190618dcc565b855190915083165b8281146182c2578186106182aa5761829d8b8b618c0f565b9650505050505050615e74565b856182b481619e1b565b965050838651169050618285565b859650505050505050615e74565b508383206000905b6182e28689618dcc565b821161831f578583208082036182fe5783945050505050615e74565b618309600185618c0f565b935050818061831790619e1b565b9250506182d8565b505b61832b8787618c0f565b979650505050505050565b604080518082019091526000808252602082015260006183688560000151866020015186600001518760200151618216565b6020808701805191860191909152519091506183849082618dcc565b8352845160208601516183979190618c0f565b81036183a657600085526183d8565b835183516183b49190618c0f565b855186906183c3908390618dcc565b90525083516183d29082618c0f565b60208601525b50909392505050565b6020811061841957815183526183f8602084618c0f565b9250618405602083618c0f565b9150618412602082618dcc565b90506183e1565b600019811561844857600161842f836020618dcc565b61843b90610100619f33565b6184459190618dcc565b90505b9151835183169219169190911790915250565b606060006184698484614947565b805160208083015160405193945061848393909101619f56565b60405160208183030381529060405291505092915050565b81518151600091908111156184ae575081515b6020808501519084015160005b838110156185675782518251808214618537576000196020871015618516576001846184e8896020618dcc565b6184f29190618c0f565b6184fd906008619e35565b618508906002619f33565b6185129190618dcc565b1990505b81811683821681810391146185345797506144fd9650505050505050565b50505b618542602086618c0f565b945061854f602085618c0f565b935050506020816185609190618c0f565b90506184bb565b5084518651614ff59190619fae565b610c9f80619fcf83390190565b6112a68061ac6e83390190565b6040518060e001604052806060815260200160608152602001606081526020016000151581526020016000151581526020016000151581526020016185d36185d8565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016185d36040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b8181101561868a5783516001600160a01b0316835260209384019390920191600101618663565b509095945050505050565b60005b838110156186b0578181015183820152602001618698565b50506000910152565b600081518084526186d1816020860160208601618695565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156187e1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b818110156187c7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a85030183526187b18486516186b9565b6020958601959094509290920191600101618777565b50919750505060209485019492909201915060010161870d565b50929695505050505050565b600081518084526020840193506020830160005b828110156188415781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101618801565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156187e1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281518051604087526188b760408801826186b9565b90506020820151915086810360208801526188d281836187ed565b965050506020938401939190910190600101618873565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156187e1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845261894b8583516186b9565b94506020938401939190910190600101618911565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156187e1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b03815116865260208101519050604060208701526189e160408701826187ed565b9550506020938401939190910190600101618988565b600181811c90821680618a0b57607f821691505b602082108103616740577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600081546001600160a01b038116845260ff8160a01c1615156020850152506001600160a01b0360018301541660408401526002820160a0606085015260008154618a8e816189f7565b8060a08801526001821660008114618aad5760018114618ae757618b1b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831660c089015260c082151560051b8901019350618b1b565b84600052602060002060005b83811015618b125781548a820160c00152600190910190602001618af3565b890160c0019450505b50505060038401546080860152809250505092915050565b6001600160a01b03861681528460208201526001600160a01b038416604082015260a060608201526000618b6a60a08301856186b9565b8281036080840152618b7c8185618a44565b98975050505050505050565b6001600160a01b0383168152604060208201526000615e746040830184618a44565b8381526001600160a01b0383166020820152608060408201526000608082015260a06060820152600061672660a0830184618a44565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156144fd576144fd618be0565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b601f82111561083d57806000526020600020601f840160051c81016020851015618c785750805b601f840160051c820191505b81811015611a985760008155600101618c84565b815167ffffffffffffffff811115618cb257618cb2618c22565b618cc681618cc084546189f7565b84618c51565b6020601f821160018114618cfa5760008315618ce25750848201515b600019600385901b1c1916600184901b178455611a98565b600084815260208120601f198516915b82811015618d2a5787850151825560209485019460019092019101618d0a565b5084821015618d485786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b600060208284031215618d6957600080fd5b5051919050565b600060208284031215618d8257600080fd5b8151801515811461457757600080fd5b8481526001600160a01b0384166020820152608060408201526000618dba60808301856186b9565b828103606084015261832b8185618a44565b818103818111156144fd576144fd618be0565b600082618e15577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6001600160a01b0384168152606060208201526000618e3c60608301856186b9565b8281036040840152614ff58185618a44565b6001600160a01b03851681528360208201526001600160a01b0383166040820152608060608201526000614ff56080830184618a44565b604081526000618e9860408301856186b9565b82810360208401526145738185618a44565b6001600160a01b0383168152604060208201526000615e7460408301846186b9565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351618f0481601a850160208801618695565b7f3a20000000000000000000000000000000000000000000000000000000000000601a918401918201528351618f4181601c840160208801618695565b01601c01949350505050565b60208152600061457760208301846186b9565b600060208284031215618f7257600080fd5b81516001600160a01b038116811461457757600080fd5b6040516060810167ffffffffffffffff81118282101715618fac57618fac618c22565b60405290565b60008067ffffffffffffffff841115618fcd57618fcd618c22565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715618ffc57618ffc618c22565b60405283815290508082840185101561901457600080fd5b616243846020830185618695565b600082601f83011261903357600080fd5b61457783835160208501618fb2565b60006020828403121561905457600080fd5b815167ffffffffffffffff81111561906b57600080fd5b6144f984828501619022565b60008351619089818460208801618695565b83519083019061909d818360208801618695565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516190de81601a850160208801618695565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161911b816033840160208801618695565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f5554000000000000000000000000000000000000000000606082015260806020820152600061457760808301846186b9565b6000602082840312156191aa57600080fd5b815167ffffffffffffffff8111156191c157600080fd5b8201601f810184136191d257600080fd5b6144f984825160208401618fb2565b600085516191f3818460208a01618695565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161922d816001840160208a01618695565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161926b816002840160208901618695565b6001818301019150507f2f00000000000000000000000000000000000000000000000000000000000000600182015283516192ad816002840160208801618695565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b6040815260006192f860408301846186b9565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161936f81601f850160208701618695565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b6040815260006193dc60408301846186b9565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061942e60408301846186b9565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b270000000000000000000000008152600082516194a5816014850160208701618695565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b6040815260006194ec60408301856186b9565b828103602084015261457381856186b9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f2200000000000000000000000000000000000000000000000000000000000000815260008251619565816001850160208701618695565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b600082516195ab818460208701618695565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161965e81604b850160208701618695565b91909101604b0192915050565b600060ff821660ff810361968157619681618be0565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c694000000000000000000000000000000000000000000000006020820152600082516196e8816029850160208701618695565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061457760808301846186b9565b60006020828403121561974e57600080fd5b815167ffffffffffffffff81111561976557600080fd5b82016060818503121561977757600080fd5b61977f618f89565b81518060030b811461979057600080fd5b8152602082015167ffffffffffffffff8111156197ac57600080fd5b6197b886828501619022565b602083015250604082015167ffffffffffffffff8111156197d857600080fd5b6197e486828501619022565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f2200000000000000000000000000000000000000000000000000000000000000602082015260008251619850816021850160208701618695565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351619a3c816021850160208801618695565b7f2720696e206f75747075743a20000000000000000000000000000000000000006021918401918201528351619a7981602e840160208801618695565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a2000000000000000000000000000000000000000000000006020820152600082516196e8816029850160208701618695565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251619b41816022850160208701618695565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251619b8681600e850160208701618695565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351619c64816018850160208801618695565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351619ca181601c840160208801618695565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251619da7818460208701618695565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f72654000000000815260008251619e0e81601c850160208701618695565b91909101601c0192915050565b60006000198203619e2e57619e2e618be0565b5060010190565b80820281158282048414176144fd576144fd618be0565b6001815b6001841115619e8757808504811115619e6b57619e6b618be0565b6001841615619e7957908102905b60019390931c928002619e50565b935093915050565b600082619e9e575060016144fd565b81619eab575060006144fd565b8160018114619ec15760028114619ecb57619ee7565b60019150506144fd565b60ff841115619edc57619edc618be0565b50506001821b6144fd565b5060208310610133831016604e8410600b8410161715619f0a575081810a6144fd565b619f176000198484619e4c565b8060001904821115619f2b57619f2b618be0565b029392505050565b60006145778383619e8f565b600081619f4e57619f4e618be0565b506000190190565b60008351619f68818460208801618695565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351619fa2816001840160208801618695565b01600101949350505050565b818103600083128015838313168383128216171561783b5761783b618be056fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212205f76808fb3dc6dacf4bd766b2d0bf9d6beb64856c952cec8e267368511bd936a64736f6c634300081a0033608060405234801561001057600080fd5b506040516112a63803806112a683398101604081905261002f91610110565b604051806040016040528060048152602001635a65746160e01b815250604051806040016040528060048152602001635a45544160e01b815250816003908161007891906101e2565b50600461008582826101e2565b5050506001600160a01b03821615806100a557506001600160a01b038116155b156100c35760405163e6c4247b60e01b815260040160405180910390fd5b600680546001600160a01b039384166001600160a01b031991821617909155600780549290931691161790556102a0565b80516001600160a01b038116811461010b57600080fd5b919050565b6000806040838503121561012357600080fd5b61012c836100f4565b915061013a602084016100f4565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061016d57607f821691505b60208210810361018d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101dd57806000526020600020601f840160051c810160208510156101ba5750805b601f840160051c820191505b818110156101da57600081556001016101c6565b50505b505050565b81516001600160401b038111156101fb576101fb610143565b61020f816102098454610159565b84610193565b6020601f821160018114610243576000831561022b5750848201515b600019600385901b1c1916600184901b1784556101da565b600084815260208120601f198516915b828110156102735787850151825560209485019460019092019101610253565b50848210156102915786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610ff7806102af6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806342966c68116100b257806379cc679011610081578063a9059cbb11610066578063a9059cbb1461028e578063bff9662a146102a1578063dd62ed3e146102c157600080fd5b806379cc67901461027357806395d89b411461028657600080fd5b806342966c68146102025780635b1125911461021557806370a0823114610235578063779e3b631461026b57600080fd5b80631e458bee116100ee5780631e458bee1461018857806323b872dd1461019b578063313ce567146101ae578063328a01d0146101bd57600080fd5b806306fdde0314610120578063095ea7b31461013e57806315d57fd41461016157806318160ddd14610176575b600080fd5b610128610307565b6040516101359190610d97565b60405180910390f35b61015161014c366004610e2c565b610399565b6040519015158152602001610135565b61017461016f366004610e56565b6103b3565b005b6002545b604051908152602001610135565b610174610196366004610e89565b61057e565b6101516101a9366004610ebc565b610631565b60405160128152602001610135565b6007546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610135565b610174610210366004610ef9565b610655565b6006546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a610243366004610f12565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b610174610662565b610174610281366004610e2c565b610786565b610128610837565b61015161029c366004610e2c565b610846565b6005546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a6102cf366004610e56565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461031690610f34565b80601f016020809104026020016040519081016040528092919081815260200182805461034290610f34565b801561038f5780601f106103645761010080835404028352916020019161038f565b820191906000526020600020905b81548152906001019060200180831161037257829003601f168201915b5050505050905090565b6000336103a7818585610854565b60019150505b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff1633148015906103f3575060065473ffffffffffffffffffffffffffffffffffffffff163314155b15610431576040517fcdfcef970000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82161580610468575073ffffffffffffffffffffffffffffffffffffffff8116155b1561049f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006805473ffffffffffffffffffffffffffffffffffffffff8481167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316811790935560058054918516919092161790556040805133815260208101929092527fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff910160405180910390a16040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f1b9352454524a57a51f24f67dc66d898f616922cd1f7a12d73570ece12b1975c910160405180910390a15050565b60055473ffffffffffffffffffffffffffffffffffffffff1633146105d1576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6105db8383610866565b808373ffffffffffffffffffffffffffffffffffffffff167fc263b302aec62d29105026245f19e16f8e0137066ccd4a8bd941f716bd4096bb8460405161062491815260200190565b60405180910390a3505050565b60003361063f8582856108c6565b61064a858585610995565b506001949350505050565b61065f3382610a40565b50565b60075473ffffffffffffffffffffffffffffffffffffffff1633146106b5576040517fe700765e000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b60065473ffffffffffffffffffffffffffffffffffffffff16610704576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0910160405180910390a1565b60055473ffffffffffffffffffffffffffffffffffffffff1633146107d9576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6107e38282610a9c565b8173ffffffffffffffffffffffffffffffffffffffff167f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b18260405161082b91815260200190565b60405180910390a25050565b60606004805461031690610f34565b6000336103a7818585610995565b6108618383836001610ab1565b505050565b73ffffffffffffffffffffffffffffffffffffffff82166108b6576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c260008383610bf9565b5050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461098f5781811015610980576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401610428565b61098f84848484036000610ab1565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166109e5576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8216610a35576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b610861838383610bf9565b73ffffffffffffffffffffffffffffffffffffffff8216610a90576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c282600083610bf9565b610aa78233836108c6565b6108c28282610a40565b73ffffffffffffffffffffffffffffffffffffffff8416610b01576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8316610b51576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160209081526040808320938716835292905220829055801561098f578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610beb91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8316610c31578060026000828254610c269190610f87565b90915550610ce39050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610cb7576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810182905260448101839052606401610428565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff8216610d0c57600280548290039055610d38565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161062491815260200190565b602081526000825180602084015260005b81811015610dc55760208186018101516040868401015201610da8565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e2757600080fd5b919050565b60008060408385031215610e3f57600080fd5b610e4883610e03565b946020939093013593505050565b60008060408385031215610e6957600080fd5b610e7283610e03565b9150610e8060208401610e03565b90509250929050565b600080600060608486031215610e9e57600080fd5b610ea784610e03565b95602085013595506040909401359392505050565b600080600060608486031215610ed157600080fd5b610eda84610e03565b9250610ee860208501610e03565b929592945050506040919091013590565b600060208284031215610f0b57600080fd5b5035919050565b600060208284031215610f2457600080fd5b610f2d82610e03565b9392505050565b600181811c90821680610f4857607f821691505b602082108103610f81577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156103ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220e8a1f6a00b1b9c77fd6d8724e3829463441aaedd6b65190c6dc6c18bcc5810e364736f6c634300081a0033a26469706673582212205cf8c322b3d404e875d9731570f4985f7efd5e5310d541acb1a9eb110c2e35b564736f6c634300081a0033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055620f4240602c55348015603357600080fd5b5061bf49806100436000396000f3fe608060405234801561001057600080fd5b50600436106102415760003560e01c8063916a17c611610145578063ba414fa6116100bd578063e20c9f711161008c578063e85c5a0711610071578063e85c5a07146103a2578063f96c02df146103aa578063fa7626d4146103b257600080fd5b8063e20c9f7114610392578063e306a9781461039a57600080fd5b8063ba414fa614610362578063bb93f11e1461037a578063c13d738f14610382578063d896e2611461038a57600080fd5b8063aa030c1c11610114578063b1409f71116100f9578063b1409f711461034a578063b284906314610352578063b5508aa91461035a57600080fd5b8063aa030c1c1461033a578063b0464fdc1461034257600080fd5b8063916a17c61461030d57806395cd0445146103225780639fd1e5971461032a578063a48abc2a1461033257600080fd5b80633e5e3c23116101d857806351da903d116101a757806366d9a9a01161018c57806366d9a9a0146102db5780637478fda0146102f057806385226c81146102f857600080fd5b806351da903d146102cb5780636459542a146102d357600080fd5b80633e5e3c23146102ab5780633f7286f4146102b3578063466f332e146102bb5780634ce25c0a146102c357600080fd5b80631806a9a5116102145780631806a9a5146102685780631ed7831c146102705780632ade38801461028e57806330f7c04f146102a357600080fd5b806305a898e21461024657806306978ca3146102505780630724d8e3146102585780630a9254e414610260575b600080fd5b61024e6103bf565b005b61024e610576565b61024e61068e565b61024e610842565b61024e61138b565b610278611488565b6040516102859190618649565b60405180910390f35b6102966114ea565b60405161028591906186e5565b61024e61162c565b610278611a9f565b610278611aff565b61024e611b5f565b61024e611e51565b61024e6120ed565b61024e61224e565b6102e3612647565b604051610285919061884b565b61024e6127c9565b6103006128cc565b60405161028591906188e9565b61031561299c565b6040516102859190618960565b61024e612a97565b61024e612ded565b61024e61300f565b61024e613203565b6103156133c0565b61024e6134bb565b61024e61376d565b61030061397b565b61036a613a4b565b6040519015158152602001610285565b61024e613b1f565b61024e613c16565b61024e613d0d565b610278613e88565b61024e613ee8565b61024e6140ce565b61024e61434f565b601f5461036a9060ff1681565b6026546040516001600160a01b03909116602482015260019060009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb3906104b7906004016020808252600b908201527f5a65726f41646472657373000000000000000000000000000000000000000000604082015260600190565b600060405180830381600087803b1580156104d157600080fd5b505af11580156104e5573d6000803e3d6000fd5b50506020546023546040517fd09e3b780000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063d09e3b7893506105409260009288929116908790602890600401618b33565b600060405180830381600087803b15801561055a57600080fd5b505af115801561056e573d6000803e3d6000fd5b505050505050565b6040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f496e73756666696369656e74455448416d6f756e7400000000000000000000006044820152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390606401600060405180830381600087803b15801561060c57600080fd5b505af1158015610620573d6000803e3d6000fd5b50506020546026546040517f726ac97c0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063726ac97c93508592610675921690602890600401618b88565b6000604051808303818588803b15801561055a57600080fd5b6027546020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039182166084820152620186a092919091163190737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561072a57600080fd5b505af115801561073e573d6000803e3d6000fd5b50506026546025546040516001600160a01b039283169450911691507fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c9061078d908690600090602890618baa565b60405180910390a36020546026546040517f726ac97c0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169263726ac97c9286926107e89290911690602890600401618b88565b6000604051808303818588803b15801561080157600080fd5b505af1158015610815573d6000803e3d6000fd5b50506027546001600160a01b031631925061083d915061083790508484618c0f565b82614465565b505050565b602580547fffffffffffffffffffffffff000000000000000000000000000000000000000090811630179091556026805482166112341790556027805490911661567817905560405161089490618576565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610919573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602754604051911690819061096290618583565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015610995573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c000000000000000000000000000000000000602082015260275460255492519086169481019490945260448401929092529092166064820152610a8791906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc0c53b8b000000000000000000000000000000000000000000000000000000001790526144e4565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff000000000000000000000000000000000000000090911681178255604080518082018252601081527f4552433230437573746f64792e736f6c000000000000000000000000000000009381019390935260275460255491516024810193909352841660448301529092166064830152610b5791608401610a2a565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602180549190920483167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116179055604080518082018252601a81527f5a657461436f6e6e6563746f724e6f6e4e61746976652e736f6c00000000000060208083019190915254602480546027546025549551938716928401929092528516604483015284166064820152919092166084820152610c90919060a40160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff8c8765e000000000000000000000000000000000000000000000000000000001790526144e4565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602280549190920483167fffffffffffffffffffffffff00000000000000000000000000000000000000009091161790556027546040517fca669fa700000000000000000000000000000000000000000000000000000000815291166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015610d6857600080fd5b505af1158015610d7c573d6000803e3d6000fd5b5050602480546027546022546040517f15d57fd40000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152908216938101939093521692506315d57fd49150604401600060405180830381600087803b158015610def57600080fd5b505af1158015610e03573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610e8757600080fd5b505af1158015610e9b573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610f1157600080fd5b505af1158015610f25573d6000803e3d6000fd5b50506020546021546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b158015610f8b57600080fd5b505af1158015610f9f573d6000803e3d6000fd5b50506020546022546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b15801561100557600080fd5b505af1158015611019573d6000803e3d6000fd5b50506021546023546040517f9b19251a0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015291169250639b19251a9150602401600060405180830381600087803b15801561107f57600080fd5b505af1158015611093573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156110f557600080fd5b505af1158015611109573d6000803e3d6000fd5b5050602354602554602c546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810191909152911692506340c10f199150604401600060405180830381600087803b15801561117a57600080fd5b505af115801561118e573d6000803e3d6000fd5b50506027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561120457600080fd5b505af1158015611218573d6000803e3d6000fd5b5050602254602554602c546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810191909152600060448201529116925063106e62909150606401600060405180830381600087803b15801561129057600080fd5b505af11580156112a4573d6000803e3d6000fd5b50506040805160a08101825261032180825260016020808401918252838501928352845190810190945260008085526060840185905260808401528251602880549251151574010000000000000000000000000000000000000000027fffffffffffffffffffffff0000000000000000000000000000000000000000009093166001600160a01b0392831617929092178255915160298054919093167fffffffffffffffffffffffff000000000000000000000000000000000000000091909116179091559093509150602a9061137b9082618c98565b5060808201518160030155905050565b6040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a65726f416464726573730000000000000000000000000000000000000000006044820152600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390606401600060405180830381600087803b15801561142157600080fd5b505af1158015611435573d6000803e3d6000fd5b50506020546040517f726ac97c0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116925063726ac97c9150839061067590600090602890600401618b88565b606060168054806020026020016040519081016040528092919081815260200182805480156114e057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116114c2575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561162357600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561160c57838290600052602060002001805461157f906189f7565b80601f01602080910402602001604051908101604052809291908181526020018280546115ab906189f7565b80156115f85780601f106115cd576101008083540402835291602001916115f8565b820191906000526020600020905b8154815290600101906020018083116115db57829003601f168201915b505050505081526020019060010190611560565b50505050815250508152602001906001019061150e565b50505050905090565b6023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09260009216906370a0823190602401602060405180830381865afa158015611698573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116bc9190618d57565b90506116c9600082614465565b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052602354905491517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015260248101879052929350169063095ea7b3906044016020604051808303816000875af11580156117ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d09190618d70565b506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561185f57600080fd5b505af1158015611873573d6000803e3d6000fd5b50506026546025546023546040516001600160a01b03938416955091831693507fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c926118c9928992909116908790602890618d92565b60405180910390a36020546026546023546040517fd09e3b780000000000000000000000000000000000000000000000000000000081526001600160a01b039384169363d09e3b789361192d93908216928992909116908790602890600401618b33565b600060405180830381600087803b15801561194757600080fd5b505af115801561195b573d6000803e3d6000fd5b50506023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156119c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119eb9190618d57565b90506119f78482614465565b6023546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611a61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a859190618d57565b9050611a9885602c546108379190618dcc565b5050505050565b606060188054806020026020016040519081016040528092919081815260200182805480156114e0576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116114c2575050505050905090565b606060178054806020026020016040519081016040528092919081815260200182805480156114e0576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116114c2575050505050905090565b60208054604080517fa2ba19340000000000000000000000000000000000000000000000000000000081529051620186a0936000936002936001600160a01b039091169263a2ba1934926004808401939192918290030181865afa158015611bcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bef9190618d57565b611bf99190618ddf565b67ffffffffffffffff811115611c1157611c11618c22565b6040519080825280601f01601f191660200182016040528015611c3b576020820181803683370190505b5060208054604080517fa2ba193400000000000000000000000000000000000000000000000000000000815290519394506002936001600160a01b039092169263a2ba1934926004808401938290030181865afa158015611ca0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cc49190618d57565b611cce9190618ddf565b611cd9906001618c0f565b67ffffffffffffffff811115611cf157611cf1618c22565b6040519080825280601f01601f191660200182016040528015611d1b576020820181803683370190505b50602a90611d299082618c98565b506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f386691aa000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015b600060405180830381600087803b158015611db057600080fd5b505af1158015611dc4573d6000803e3d6000fd5b50506020546026546040517f744b9b8b0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063744b9b8b93508692611e1b9216908690602890600401618e1a565b6000604051808303818588803b158015611e3457600080fd5b505af1158015611e48573d6000803e3d6000fd5b50505050505050565b6023546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a06024820181905292919091169063095ea7b3906044016020604051808303816000875af1158015611ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eea9190618d70565b5060208054604080517fa2ba193400000000000000000000000000000000000000000000000000000000815290516001600160a01b039092169263a2ba1934926004808401938290030181865afa158015611f49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f6d9190618d57565b611f78906001618c0f565b67ffffffffffffffff811115611f9057611f90618c22565b6040519080825280601f01601f191660200182016040528015611fba576020820181803683370190505b50602a90611fc89082618c98565b506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f386691aa000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015b600060405180830381600087803b15801561204f57600080fd5b505af1158015612063573d6000803e3d6000fd5b50506020546026546023546040517f102614b00000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063102614b094506120bf939283169287921690602890600401618e4e565b600060405180830381600087803b1580156120d957600080fd5b505af1158015611a98573d6000803e3d6000fd5b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156121e757600080fd5b505af11580156121fb573d6000803e3d6000fd5b50506020546040517f1becceb40000000000000000000000000000000000000000000000000000000081526001600160a01b039091169250631becceb491506120bf906000908590602890600401618e1a565b6023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09260009216906370a0823190602401602060405180830381865afa1580156122ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122de9190618d57565b90506122eb600082614465565b6023546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810185905291169063095ea7b3906044016020604051808303816000875af1158015612359573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061237d9190618d70565b506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561240c57600080fd5b505af1158015612420573d6000803e3d6000fd5b50506026546025546023546040516001600160a01b03938416955091831693507fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c9261247492889290911690602890618baa565b60405180910390a36020546026546023546040517f102614b00000000000000000000000000000000000000000000000000000000081526001600160a01b039384169363102614b0936124d69390821692889290911690602890600401618e4e565b600060405180830381600087803b1580156124f057600080fd5b505af1158015612504573d6000803e3d6000fd5b50506023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015612570573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125949190618d57565b90506125a08382614465565b6023546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801561260a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061262e9190618d57565b905061264184602c546108379190618dcc565b50505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015611623578382906000526020600020906002020160405180604001604052908160008201805461269e906189f7565b80601f01602080910402602001604051908101604052809291908181526020018280546126ca906189f7565b80156127175780601f106126ec57610100808354040283529160200191612717565b820191906000526020600020905b8154815290600101906020018083116126fa57829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156127b157602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161275e5790505b5050505050815250508152602001906001019061266b565b6040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a65726f416464726573730000000000000000000000000000000000000000006044820152600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390606401600060405180830381600087803b15801561285f57600080fd5b505af1158015612873573d6000803e3d6000fd5b50506020546023546040517f102614b00000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063102614b093506120bf926000928792911690602890600401618e4e565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101561162357838290600052602060002001805461290f906189f7565b80601f016020809104026020016040519081016040528092919081815260200182805461293b906189f7565b80156129885780601f1061295d57610100808354040283529160200191612988565b820191906000526020600020905b81548152906001019060200180831161296b57829003601f168201915b5050505050815260200190600101906128f0565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156116235760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015612a7f57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411612a2c5790505b505050505081525050815260200190600101906129c0565b60208054604080517fa2ba19340000000000000000000000000000000000000000000000000000000081529051620186a0936000936002936001600160a01b039091169263a2ba1934926004808401939192918290030181865afa158015612b03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b279190618d57565b612b319190618ddf565b67ffffffffffffffff811115612b4957612b49618c22565b6040519080825280601f01601f191660200182016040528015612b73576020820181803683370190505b5060208054604080517fa2ba193400000000000000000000000000000000000000000000000000000000815290519394506002936001600160a01b039092169263a2ba1934926004808401938290030181865afa158015612bd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bfc9190618d57565b612c069190618ddf565b612c11906001618c0f565b67ffffffffffffffff811115612c2957612c29618c22565b6040519080825280601f01601f191660200182016040528015612c53576020820181803683370190505b50602a90612c619082618c98565b506023546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810185905291169063095ea7b3906044016020604051808303816000875af1158015612cd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf49190618d70565b506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f386691aa000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015b600060405180830381600087803b158015612d7b57600080fd5b505af1158015612d8f573d6000803e3d6000fd5b50506020546026546023546040517fd09e3b780000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063d09e3b7894506105409392831692889216908790602890600401618b33565b6027546026546040516001600160a01b039182166024820152620186a09291909116319060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015612efe57600080fd5b505af1158015612f12573d6000803e3d6000fd5b50506026546025546040516001600160a01b039283169450911691507fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c90612f639087906000908790602890618d92565b60405180910390a36020546026546040517f744b9b8b0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169263744b9b8b928792612fc092909116908690602890600401618e1a565b6000604051808303818588803b158015612fd957600080fd5b505af1158015612fed573d6000803e3d6000fd5b50506027546001600160a01b0316319250612641915061083790508585618c0f565b60208054604080517fa2ba193400000000000000000000000000000000000000000000000000000000815290516001600160a01b039092169263a2ba1934926004808401938290030181865afa15801561306d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130919190618d57565b61309c906001618c0f565b67ffffffffffffffff8111156130b4576130b4618c22565b6040519080825280601f01601f1916602001820160405280156130de576020820181803683370190505b50602a906130ec9082618c98565b506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f5061796c6f616453697a654578636565646564000000000000000000000000006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390606401600060405180830381600087803b15801561318057600080fd5b505af1158015613194573d6000803e3d6000fd5b50506020546026546040517f726ac97c0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063726ac97c93506001926131ea921690602890600401618b88565b6000604051808303818588803b1580156120d957600080fd5b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561330657600080fd5b505af115801561331a573d6000803e3d6000fd5b50506026546025546040516001600160a01b039283169450911691507fd34634f30f94a646fdf4ce7078f38fc5fa0d3f0b193658facea4e3e43330d97490613366908590602890618e85565b60405180910390a36020546026546040517f1becceb40000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692631becceb4926120bf929116908590602890600401618e1a565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156116235760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156134a357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116134505790505b505050505081525050815260200190600101906133e4565b60208054604080517fa2ba193400000000000000000000000000000000000000000000000000000000815290516000936002936001600160a01b03169263a2ba193492600480830193928290030181865afa15801561351e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135429190618d57565b61354c9190618ddf565b67ffffffffffffffff81111561356457613564618c22565b6040519080825280601f01601f19166020018201604052801561358e576020820181803683370190505b5060208054604080517fa2ba193400000000000000000000000000000000000000000000000000000000815290519394506002936001600160a01b039092169263a2ba1934926004808401938290030181865afa1580156135f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136179190618d57565b6136219190618ddf565b61362c906001618c0f565b67ffffffffffffffff81111561364457613644618c22565b6040519080825280601f01601f19166020018201604052801561366e576020820181803683370190505b50602a9061367c9082618c98565b506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f386691aa000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561370257600080fd5b505af1158015613716573d6000803e3d6000fd5b50506020546026546040517f1becceb40000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631becceb493506120bf92909116908590602890600401618e1a565b6023546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a06024820181905292919091169063095ea7b3906044016020604051808303816000875af11580156137e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138069190618d70565b506025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561387957600080fd5b505af115801561388d573d6000803e3d6000fd5b50506021546023546040517f9a5904270000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015291169250639a5904279150602401600060405180830381600087803b1580156138f357600080fd5b505af1158015613907573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fac2175f1000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401612035565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156116235783829060005260206000200180546139be906189f7565b80601f01602080910402602001604051908101604052809291908181526020018280546139ea906189f7565b8015613a375780601f10613a0c57610100808354040283529160200191613a37565b820191906000526020600020905b815481529060010190602001808311613a1a57829003601f168201915b50505050508152602001906001019061399f565b60085460009060ff1615613a63575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015613af4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b189190618d57565b1415905090565b6026546040516001600160a01b039091166024820152600090819060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390612d619060040160208082526017908201527f496e73756666696369656e744552433230416d6f756e74000000000000000000604082015260600190565b6026546040516001600160a01b039091166024820152600090819060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390611d969060040160208082526015908201527f496e73756666696369656e74455448416d6f756e740000000000000000000000604082015260600190565b6026546040516001600160a01b03909116602482015260019060009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390613e05906004016020808252600b908201527f5a65726f41646472657373000000000000000000000000000000000000000000604082015260600190565b600060405180830381600087803b158015613e1f57600080fd5b505af1158015613e33573d6000803e3d6000fd5b50506020546040517f744b9b8b0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116925063744b9b8b91508490611e1b906000908690602890600401618e1a565b606060158054806020026020016040519081016040528092919081815260200182805480156114e0576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116114c2575050505050905090565b602480546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a093810184905291169063095ea7b3906044016020604051808303816000875af1158015613f5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f7e9190618d70565b506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561400457600080fd5b505af1158015614018573d6000803e3d6000fd5b50506026546025546024546040516001600160a01b03938416955091831693507fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c9261406c92879290911690602890618baa565b60405180910390a36020546026546024546040517f102614b00000000000000000000000000000000000000000000000000000000081526001600160a01b039384169363102614b0936120bf9390821692879290911690602890600401618e4e565b6026546040516001600160a01b039091166024820152620186a09060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052602354905491517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015260248101869052929350169063095ea7b3906044016020604051808303816000875af11580156141b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141da9190618d70565b506025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561424d57600080fd5b505af1158015614261573d6000803e3d6000fd5b50506021546023546040517f9a5904270000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015291169250639a5904279150602401600060405180830381600087803b1580156142c757600080fd5b505af11580156142db573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fac2175f1000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401612d61565b6023546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260006024820181905292919091169063095ea7b3906044016020604051808303816000875af11580156143c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143e69190618d70565b506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e73756666696369656e744552433230416d6f756e740000000000000000006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390606401612035565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b1580156144d057600080fd5b505afa15801561056e573d6000803e3d6000fd5b60006144ee618590565b6144f9848483614503565b9150505b92915050565b600080614510858461457e565b90506145736040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f7879000000815250828660405160200161455e929190618eaa565b6040516020818303038152906040528561458a565b9150505b9392505050565b600061457783836145b8565b60c081015151600090156145ae576145a784848460c001516145d3565b9050614577565b6145a78484614779565b60006145c48383614864565b6145778383602001518461458a565b6000806145de614874565b905060006145ec8683614947565b905060006146038260600151836020015185614ded565b9050600061461383838989614fff565b9050600061462082615e7c565b602081015181519192509060030b156146935789826040015160405160200161464a929190618ecc565b60408051601f19818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261468a91600401618f4d565b60405180910390fd5b60006146d66040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a20000000000000000000000081525083600161604b565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90614729908490600401618f4d565b602060405180830381865afa158015614746573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061476a9190618f60565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc925906147ce908790600401618f4d565b600060405180830381865afa1580156147eb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526148139190810190619042565b90506000614841828560405160200161482d929190619077565b60405160208183030381529060405261624b565b90506001600160a01b0381166144f957848460405160200161464a9291906190a6565b6148708282600061625e565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c906148fb908490600401619151565b600060405180830381865afa158015614918573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526149409190810190619198565b9250505090565b6149796040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d90506149c46040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6149cd85616361565b602082015260006149dd86616746565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015614a1f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614a479190810190619198565b86838560200151604051602001614a6194939291906191e1565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190614ab9908590600401618f4d565b600060405180830381865afa158015614ad6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614afe9190810190619198565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690614b469084906004016192e5565b602060405180830381865afa158015614b63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614b879190618d70565b614b9c578160405160200161464a9190619337565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890614be19084906004016193c9565b600060405180830381865afa158015614bfe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614c269190810190619198565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690614c6d90849060040161941b565b602060405180830381865afa158015614c8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614cae9190618d70565b15614d43576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890614cf890849060040161941b565b600060405180830381865afa158015614d15573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614d3d9190810190619198565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001614d68919061946d565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401614d949291906194d9565b600060405180830381865afa158015614db1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614dd99190810190619198565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081614e095790505090506040518060400160405280600481526020017f677265700000000000000000000000000000000000000000000000000000000081525081600081518110614e6957614e696194fe565b60200260200101819052506040518060400160405280600381526020017f2d726c000000000000000000000000000000000000000000000000000000000081525081600181518110614ebd57614ebd6194fe565b602002602001018190525084604051602001614ed9919061952d565b60405160208183030381529060405281600281518110614efb57614efb6194fe565b602002602001018190525082604051602001614f179190619599565b60405160208183030381529060405281600381518110614f3957614f396194fe565b60200260200101819052506000614f4f82615e7c565b602080820151604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000008185019081528251808401845260008082529086015282518084019093529051825292810192909252919250614fe090604080518082018252600080825260209182015281518083019092528451825280850190820152906169c9565b614ff5578560405160200161464a91906195da565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d901561504f565b511590565b6151c35782602001511561510b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a40161468a565b8260c00151156151c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a40161468a565b6040805160ff8082526120008201909252600091816020015b60608152602001906001900390816151dc57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806152379061966b565b935060ff168151811061524c5761524c6194fe565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e370000000000000000000000000000000000000081525060405160200161529d919061968a565b6040516020818303038152906040528282806152b89061966b565b935060ff16815181106152cd576152cd6194fe565b60200260200101819052506040518060400160405280600681526020017f6465706c6f79000000000000000000000000000000000000000000000000000081525082828061531a9061966b565b935060ff168151811061532f5761532f6194fe565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d6500000000000000000000000000000000000081525082828061537c9061966b565b935060ff1681518110615391576153916194fe565b602002602001018190525087602001518282806153ad9061966b565b935060ff16815181106153c2576153c26194fe565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163745061746800000000000000000000000000000000000081525082828061540f9061966b565b935060ff1681518110615424576154246194fe565b60209081029190910101528751828261543c8161966b565b935060ff1681518110615451576154516194fe565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e4964000000000000000000000000000000000000000000000081525082828061549e9061966b565b935060ff16815181106154b3576154b36194fe565b60200260200101819052506154c746616a2a565b82826154d28161966b565b935060ff16815181106154e7576154e76194fe565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c6500000000000000000000000000000000008152508282806155349061966b565b935060ff1681518110615549576155496194fe565b6020026020010181905250868282806155619061966b565b935060ff1681518110615576576155766194fe565b602090810291909101015285511561569d5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826155c78161966b565b935060ff16815181106155dc576155dc6194fe565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d9061562c908990600401618f4d565b600060405180830381865afa158015615649573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526156719190810190619198565b828261567c8161966b565b935060ff1681518110615691576156916194fe565b60200260200101819052505b84602001511561576d5760408051808201909152601281527f2d2d766572696679536f75726365436f64650000000000000000000000000000602082015282826156e68161966b565b935060ff16815181106156fb576156fb6194fe565b60200260200101819052506040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152508282806157489061966b565b935060ff168151811061575d5761575d6194fe565b6020026020010181905250615934565b6157a561504a8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6158385760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826157e88161966b565b935060ff16815181106157fd576157fd6194fe565b60200260200101819052508460a0015160405160200161581d919061952d565b6040516020818303038152906040528282806157489061966b565b8460c0015115801561587b57506040808901518151808301835260008082526020918201528251808401909352815183529081019082015261587990511590565b155b156159345760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826158bf8161966b565b935060ff16815181106158d4576158d46194fe565b60200260200101819052506158e888616aca565b6040516020016158f8919061952d565b6040516020818303038152906040528282806159139061966b565b935060ff1681518110615928576159286194fe565b60200260200101819052505b6040808601518151808301835260008082526020918201528251808401909352815183529081019082015261596890511590565b6159fd5760408051808201909152600b81527f2d2d72656c617965724964000000000000000000000000000000000000000000602082015282826159ab8161966b565b935060ff16815181106159c0576159c06194fe565b602002602001018190525084604001518282806159dc9061966b565b935060ff16815181106159f1576159f16194fe565b60200260200101819052505b606085015115615b1e5760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282615a468161966b565b935060ff1681518110615a5b57615a5b6194fe565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015615aca573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615af29190810190619198565b8282615afd8161966b565b935060ff1681518110615b1257615b126194fe565b60200260200101819052505b60e08501515115615bc55760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282615b688161966b565b935060ff1681518110615b7d57615b7d6194fe565b6020026020010181905250615b998560e0015160000151616a2a565b8282615ba48161966b565b935060ff1681518110615bb957615bb96194fe565b60200260200101819052505b60e08501516020015115615c6f5760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282615c128161966b565b935060ff1681518110615c2757615c276194fe565b6020026020010181905250615c438560e0015160200151616a2a565b8282615c4e8161966b565b935060ff1681518110615c6357615c636194fe565b60200260200101819052505b60e08501516040015115615d195760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282615cbc8161966b565b935060ff1681518110615cd157615cd16194fe565b6020026020010181905250615ced8560e0015160400151616a2a565b8282615cf88161966b565b935060ff1681518110615d0d57615d0d6194fe565b60200260200101819052505b60e08501516060015115615dc35760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282615d668161966b565b935060ff1681518110615d7b57615d7b6194fe565b6020026020010181905250615d978560e0015160600151616a2a565b8282615da28161966b565b935060ff1681518110615db757615db76194fe565b60200260200101819052505b60008160ff1667ffffffffffffffff811115615de157615de1618c22565b604051908082528060200260200182016040528015615e1457816020015b6060815260200190600190039081615dff5790505b50905060005b8260ff168160ff161015615e6d57838160ff1681518110615e3d57615e3d6194fe565b6020026020010151828260ff1681518110615e5a57615e5a6194fe565b6020908102919091010152600101615e1a565b5093505050505b949350505050565b615ea36040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c91615f29918691016196f5565b600060405180830381865afa158015615f46573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615f6e9190810190619198565b90506000615f7c86836175b9565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401615fac91906188e9565b6000604051808303816000875af1158015615fcb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615ff3919081019061973c565b805190915060030b1580159061600c5750602081015151155b801561601b5750604081015151155b15614ff55781600081518110616033576160336194fe565b602002602001015160405160200161464a91906197f2565b606060006160808560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506160b79082905b9061770e565b156162145760006161348261612e846161286160fa8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90617735565b90617797565b604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061619890829061770e565b1561620257604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526161ff905b829061781c565b90505b61620b81617842565b92505050614577565b821561622d57848460405160200161464a9291906199de565b5050604080516020810190915260008152614577565b509392505050565b6000808251602084016000f09392505050565b8160a001511561626d57505050565b600061627a8484846178ab565b9050600061628782615e7c565b602081015181519192509060030b1580156163235750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616323906040805180820182526000808252602091820152815180830190925284518252808501908201526160b1565b1561633057505050505050565b6040820151511561635057816040015160405160200161464a9190619a85565b8060405160200161464a9190619ae3565b606060006163968360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506163fb905b82906169c9565b1561646a57604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261457790616465908390617e46565b617842565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526164cc905b8290617ed0565b60010361659957604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616532906161f8565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261457790616465905b839061781c565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526165f8906163f4565b1561672f57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290616660908390617f6a565b9050600081600183516166739190618dcc565b81518110616683576166836194fe565b602002602001015190506167266164656166f96040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290617e46565b95945050505050565b8260405160200161464a9190619b4e565b50919050565b6060600061677b8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506167dd906163f4565b156167eb5761457781617842565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261684a906164c5565b6001036168b457604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526145779061646590616592565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616913906163f4565b1561672f57604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061697b908390617f6a565b90506001815111156169b75780600282516169969190618dcc565b815181106169a6576169a66194fe565b602002602001015192505050919050565b508260405160200161464a9190619b4e565b8051825160009111156169de575060006144fd565b815183516020850151600092916169f491618c0f565b6169fe9190618dcc565b905082602001518103616a155760019150506144fd565b82516020840151819020912014905092915050565b60606000616a378361800f565b600101905060008167ffffffffffffffff811115616a5757616a57618c22565b6040519080825280601f01601f191660200182016040528015616a81576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084616a8b57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091616b56905b82906180f1565b15616b9657505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616bf590616b4f565b15616c3557505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616c9490616b4f565b15616cd457505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616d3390616b4f565b80616d985750604080518082018252601081527f47504c2d322e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616d9890616b4f565b15616dd857505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616e3790616b4f565b80616e9c5750604080518082018252601081527f47504c2d332e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616e9c90616b4f565b15616edc57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616f3b90616b4f565b80616fa05750604080518082018252601181527f4c47504c2d322e312d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616fa090616b4f565b15616fe057505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261703f90616b4f565b806170a45750604080518082018252601181527f4c47504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526170a490616b4f565b156170e457505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261714390616b4f565b1561718357505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526171e290616b4f565b1561722257505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261728190616b4f565b156172c157505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261732090616b4f565b1561736057505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e3000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526173bf90616b4f565b156173ff57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261745e90616b4f565b806174c35750604080518082018252601181527f4147504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526174c390616b4f565b1561750357505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261756290616b4f565b156175a257505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b6040808401518451915161464a9290602001619c2c565b60608060005b845181101561764457818582815181106175db576175db6194fe565b60200260200101516040516020016175f4929190619077565b6040516020818303038152906040529150600185516176139190618dcc565b811461763c578160405160200161762a9190619d95565b60405160208183030381529060405291505b6001016175bf565b5060408051600380825260808201909252600091816020015b606081526020019060019003908161765d5790505090508381600081518110617688576176886194fe565b60200260200101819052506040518060400160405280600281526020017f2d63000000000000000000000000000000000000000000000000000000000000815250816001815181106176dc576176dc6194fe565b602002602001018190525081816002815181106176fb576176fb6194fe565b6020908102919091010152949350505050565b602080830151835183519284015160009361772c9291849190618105565b14159392505050565b604080518082019091526000808252602082015260006177678460000151856020015185600001518660200151618216565b90508360200151816177799190618dcc565b84518590617788908390618dcc565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156177bc5750816144fd565b60208083015190840151600191146177e35750815160208481015190840151829020919020145b8015617814578251845185906177fa908390618dcc565b9052508251602085018051617810908390618c0f565b9052505b509192915050565b604080518082019091526000808252602082015261783b838383618336565b5092915050565b60606000826000015167ffffffffffffffff81111561786357617863618c22565b6040519080825280601f01601f19166020018201604052801561788d576020820181803683370190505b509050600060208201905061783b81856020015186600001516183e1565b606060006178b7614874565b6040805160ff808252612000820190925291925060009190816020015b60608152602001906001900390816178d457905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061792f9061966b565b935060ff1681518110617944576179446194fe565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e33000000000000000000000000000000000000000000000000008152506040516020016179959190619dd6565b6040516020818303038152906040528282806179b09061966b565b935060ff16815181106179c5576179c56194fe565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280617a129061966b565b935060ff1681518110617a2757617a276194fe565b602002602001018190525082604051602001617a439190619599565b604051602081830303815290604052828280617a5e9061966b565b935060ff1681518110617a7357617a736194fe565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280617ac09061966b565b935060ff1681518110617ad557617ad56194fe565b6020026020010181905250617aea878461845b565b8282617af58161966b565b935060ff1681518110617b0a57617b0a6194fe565b602090810291909101015285515115617bb65760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282617b5c8161966b565b935060ff1681518110617b7157617b716194fe565b6020026020010181905250617b8a86600001518461845b565b8282617b958161966b565b935060ff1681518110617baa57617baa6194fe565b60200260200101819052505b856080015115617c245760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282617bff8161966b565b935060ff1681518110617c1457617c146194fe565b6020026020010181905250617c8a565b8415617c8a5760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282617c698161966b565b935060ff1681518110617c7e57617c7e6194fe565b60200260200101819052505b60408601515115617d265760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282617cd48161966b565b935060ff1681518110617ce957617ce96194fe565b60200260200101819052508560400151828280617d059061966b565b935060ff1681518110617d1a57617d1a6194fe565b60200260200101819052505b856060015115617d905760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282617d6f8161966b565b935060ff1681518110617d8457617d846194fe565b60200260200101819052505b60008160ff1667ffffffffffffffff811115617dae57617dae618c22565b604051908082528060200260200182016040528015617de157816020015b6060815260200190600190039081617dcc5790505b50905060005b8260ff168160ff161015617e3a57838160ff1681518110617e0a57617e0a6194fe565b6020026020010151828260ff1681518110617e2757617e276194fe565b6020908102919091010152600101617de7565b50979650505050505050565b6040805180820190915260008082526020820152815183511015617e6b5750816144fd565b81518351602085015160009291617e8191618c0f565b617e8b9190618dcc565b60208401519091506001908214617eac575082516020840151819020908220145b8015617ec757835185518690617ec3908390618dcc565b9052505b50929392505050565b6000808260000151617ef48560000151866020015186600001518760200151618216565b617efe9190618c0f565b90505b83516020850151617f129190618c0f565b811161783b5781617f2281619e1b565b9250508260000151617f59856020015183617f3d9190618dcc565b8651617f499190618dcc565b8386600001518760200151618216565b617f639190618c0f565b9050617f01565b60606000617f788484617ed0565b617f83906001618c0f565b67ffffffffffffffff811115617f9b57617f9b618c22565b604051908082528060200260200182016040528015617fce57816020015b6060815260200190600190039081617fb95790505b50905060005b815181101561624357617fea616465868661781c565b828281518110617ffc57617ffc6194fe565b6020908102919091010152600101617fd4565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310618058577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310618084576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106180a257662386f26fc10000830492506010015b6305f5e10083106180ba576305f5e100830492506008015b61271083106180ce57612710830492506004015b606483106180e0576064830492506002015b600a83106144fd5760010192915050565b60006180fd838361849b565b159392505050565b60008085841161820c57602084116181b8576000841561815057600161812c866020618dcc565b618137906008619e35565b618142906002619f33565b61814c9190618dcc565b1990505b835181168561815f8989618c0f565b6181699190618dcc565b805190935082165b8181146181a35787841161818b5787945050505050615e74565b8361819581619f3f565b945050828451169050618171565b6181ad8785618c0f565b945050505050615e74565b8383206181c58588618dcc565b6181cf9087618c0f565b91505b85821061820a578482208082036181f7576181ed8684618c0f565b9350505050615e74565b618202600184618dcc565b9250506181d2565b505b5092949350505050565b6000838186851161832157602085116182d0576000851561826257600161823e876020618dcc565b618249906008619e35565b618254906002619f33565b61825e9190618dcc565b1990505b845181166000876182738b8b618c0f565b61827d9190618dcc565b855190915083165b8281146182c2578186106182aa5761829d8b8b618c0f565b9650505050505050615e74565b856182b481619e1b565b965050838651169050618285565b859650505050505050615e74565b508383206000905b6182e28689618dcc565b821161831f578583208082036182fe5783945050505050615e74565b618309600185618c0f565b935050818061831790619e1b565b9250506182d8565b505b61832b8787618c0f565b979650505050505050565b604080518082019091526000808252602082015260006183688560000151866020015186600001518760200151618216565b6020808701805191860191909152519091506183849082618dcc565b8352845160208601516183979190618c0f565b81036183a657600085526183d8565b835183516183b49190618c0f565b855186906183c3908390618dcc565b90525083516183d29082618c0f565b60208601525b50909392505050565b6020811061841957815183526183f8602084618c0f565b9250618405602083618c0f565b9150618412602082618dcc565b90506183e1565b600019811561844857600161842f836020618dcc565b61843b90610100619f33565b6184459190618dcc565b90505b9151835183169219169190911790915250565b606060006184698484614947565b805160208083015160405193945061848393909101619f56565b60405160208183030381529060405291505092915050565b81518151600091908111156184ae575081515b6020808501519084015160005b838110156185675782518251808214618537576000196020871015618516576001846184e8896020618dcc565b6184f29190618c0f565b6184fd906008619e35565b618508906002619f33565b6185129190618dcc565b1990505b81811683821681810391146185345797506144fd9650505050505050565b50505b618542602086618c0f565b945061854f602085618c0f565b935050506020816185609190618c0f565b90506184bb565b5084518651614ff59190619fae565b610c9f80619fcf83390190565b6112a68061ac6e83390190565b6040518060e001604052806060815260200160608152602001606081526020016000151581526020016000151581526020016000151581526020016185d36185d8565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016185d36040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b8181101561868a5783516001600160a01b0316835260209384019390920191600101618663565b509095945050505050565b60005b838110156186b0578181015183820152602001618698565b50506000910152565b600081518084526186d1816020860160208601618695565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156187e1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b818110156187c7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a85030183526187b18486516186b9565b6020958601959094509290920191600101618777565b50919750505060209485019492909201915060010161870d565b50929695505050505050565b600081518084526020840193506020830160005b828110156188415781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101618801565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156187e1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281518051604087526188b760408801826186b9565b90506020820151915086810360208801526188d281836187ed565b965050506020938401939190910190600101618873565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156187e1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845261894b8583516186b9565b94506020938401939190910190600101618911565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156187e1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b03815116865260208101519050604060208701526189e160408701826187ed565b9550506020938401939190910190600101618988565b600181811c90821680618a0b57607f821691505b602082108103616740577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600081546001600160a01b038116845260ff8160a01c1615156020850152506001600160a01b0360018301541660408401526002820160a0606085015260008154618a8e816189f7565b8060a08801526001821660008114618aad5760018114618ae757618b1b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831660c089015260c082151560051b8901019350618b1b565b84600052602060002060005b83811015618b125781548a820160c00152600190910190602001618af3565b890160c0019450505b50505060038401546080860152809250505092915050565b6001600160a01b03861681528460208201526001600160a01b038416604082015260a060608201526000618b6a60a08301856186b9565b8281036080840152618b7c8185618a44565b98975050505050505050565b6001600160a01b0383168152604060208201526000615e746040830184618a44565b8381526001600160a01b0383166020820152608060408201526000608082015260a06060820152600061672660a0830184618a44565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156144fd576144fd618be0565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b601f82111561083d57806000526020600020601f840160051c81016020851015618c785750805b601f840160051c820191505b81811015611a985760008155600101618c84565b815167ffffffffffffffff811115618cb257618cb2618c22565b618cc681618cc084546189f7565b84618c51565b6020601f821160018114618cfa5760008315618ce25750848201515b600019600385901b1c1916600184901b178455611a98565b600084815260208120601f198516915b82811015618d2a5787850151825560209485019460019092019101618d0a565b5084821015618d485786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b600060208284031215618d6957600080fd5b5051919050565b600060208284031215618d8257600080fd5b8151801515811461457757600080fd5b8481526001600160a01b0384166020820152608060408201526000618dba60808301856186b9565b828103606084015261832b8185618a44565b818103818111156144fd576144fd618be0565b600082618e15577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6001600160a01b0384168152606060208201526000618e3c60608301856186b9565b8281036040840152614ff58185618a44565b6001600160a01b03851681528360208201526001600160a01b0383166040820152608060608201526000614ff56080830184618a44565b604081526000618e9860408301856186b9565b82810360208401526145738185618a44565b6001600160a01b0383168152604060208201526000615e7460408301846186b9565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351618f0481601a850160208801618695565b7f3a20000000000000000000000000000000000000000000000000000000000000601a918401918201528351618f4181601c840160208801618695565b01601c01949350505050565b60208152600061457760208301846186b9565b600060208284031215618f7257600080fd5b81516001600160a01b038116811461457757600080fd5b6040516060810167ffffffffffffffff81118282101715618fac57618fac618c22565b60405290565b60008067ffffffffffffffff841115618fcd57618fcd618c22565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715618ffc57618ffc618c22565b60405283815290508082840185101561901457600080fd5b616243846020830185618695565b600082601f83011261903357600080fd5b61457783835160208501618fb2565b60006020828403121561905457600080fd5b815167ffffffffffffffff81111561906b57600080fd5b6144f984828501619022565b60008351619089818460208801618695565b83519083019061909d818360208801618695565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516190de81601a850160208801618695565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161911b816033840160208801618695565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f5554000000000000000000000000000000000000000000606082015260806020820152600061457760808301846186b9565b6000602082840312156191aa57600080fd5b815167ffffffffffffffff8111156191c157600080fd5b8201601f810184136191d257600080fd5b6144f984825160208401618fb2565b600085516191f3818460208a01618695565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161922d816001840160208a01618695565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161926b816002840160208901618695565b6001818301019150507f2f00000000000000000000000000000000000000000000000000000000000000600182015283516192ad816002840160208801618695565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b6040815260006192f860408301846186b9565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161936f81601f850160208701618695565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b6040815260006193dc60408301846186b9565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061942e60408301846186b9565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b270000000000000000000000008152600082516194a5816014850160208701618695565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b6040815260006194ec60408301856186b9565b828103602084015261457381856186b9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f2200000000000000000000000000000000000000000000000000000000000000815260008251619565816001850160208701618695565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b600082516195ab818460208701618695565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161965e81604b850160208701618695565b91909101604b0192915050565b600060ff821660ff810361968157619681618be0565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c694000000000000000000000000000000000000000000000006020820152600082516196e8816029850160208701618695565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061457760808301846186b9565b60006020828403121561974e57600080fd5b815167ffffffffffffffff81111561976557600080fd5b82016060818503121561977757600080fd5b61977f618f89565b81518060030b811461979057600080fd5b8152602082015167ffffffffffffffff8111156197ac57600080fd5b6197b886828501619022565b602083015250604082015167ffffffffffffffff8111156197d857600080fd5b6197e486828501619022565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f2200000000000000000000000000000000000000000000000000000000000000602082015260008251619850816021850160208701618695565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351619a3c816021850160208801618695565b7f2720696e206f75747075743a20000000000000000000000000000000000000006021918401918201528351619a7981602e840160208801618695565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a2000000000000000000000000000000000000000000000006020820152600082516196e8816029850160208701618695565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251619b41816022850160208701618695565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251619b8681600e850160208701618695565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351619c64816018850160208801618695565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351619ca181601c840160208801618695565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251619da7818460208701618695565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f72654000000000815260008251619e0e81601c850160208701618695565b91909101601c0192915050565b60006000198203619e2e57619e2e618be0565b5060010190565b80820281158282048414176144fd576144fd618be0565b6001815b6001841115619e8757808504811115619e6b57619e6b618be0565b6001841615619e7957908102905b60019390931c928002619e50565b935093915050565b600082619e9e575060016144fd565b81619eab575060006144fd565b8160018114619ec15760028114619ecb57619ee7565b60019150506144fd565b60ff841115619edc57619edc618be0565b50506001821b6144fd565b5060208310610133831016604e8410600b8410161715619f0a575081810a6144fd565b619f176000198484619e4c565b8060001904821115619f2b57619f2b618be0565b029392505050565b60006145778383619e8f565b600081619f4e57619f4e618be0565b506000190190565b60008351619f68818460208801618695565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351619fa2816001840160208801618695565b01600101949350505050565b818103600083128015838313168383128216171561783b5761783b618be056fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220a043c41353215fce25ecb67a8a4f6f724aaa86dea8dcb0a6975bfb1f10ff3beb64736f6c634300081a0033608060405234801561001057600080fd5b506040516112a63803806112a683398101604081905261002f91610110565b604051806040016040528060048152602001635a65746160e01b815250604051806040016040528060048152602001635a45544160e01b815250816003908161007891906101e2565b50600461008582826101e2565b5050506001600160a01b03821615806100a557506001600160a01b038116155b156100c35760405163e6c4247b60e01b815260040160405180910390fd5b600680546001600160a01b039384166001600160a01b031991821617909155600780549290931691161790556102a0565b80516001600160a01b038116811461010b57600080fd5b919050565b6000806040838503121561012357600080fd5b61012c836100f4565b915061013a602084016100f4565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061016d57607f821691505b60208210810361018d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101dd57806000526020600020601f840160051c810160208510156101ba5750805b601f840160051c820191505b818110156101da57600081556001016101c6565b50505b505050565b81516001600160401b038111156101fb576101fb610143565b61020f816102098454610159565b84610193565b6020601f821160018114610243576000831561022b5750848201515b600019600385901b1c1916600184901b1784556101da565b600084815260208120601f198516915b828110156102735787850151825560209485019460019092019101610253565b50848210156102915786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610ff7806102af6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806342966c68116100b257806379cc679011610081578063a9059cbb11610066578063a9059cbb1461028e578063bff9662a146102a1578063dd62ed3e146102c157600080fd5b806379cc67901461027357806395d89b411461028657600080fd5b806342966c68146102025780635b1125911461021557806370a0823114610235578063779e3b631461026b57600080fd5b80631e458bee116100ee5780631e458bee1461018857806323b872dd1461019b578063313ce567146101ae578063328a01d0146101bd57600080fd5b806306fdde0314610120578063095ea7b31461013e57806315d57fd41461016157806318160ddd14610176575b600080fd5b610128610307565b6040516101359190610d97565b60405180910390f35b61015161014c366004610e2c565b610399565b6040519015158152602001610135565b61017461016f366004610e56565b6103b3565b005b6002545b604051908152602001610135565b610174610196366004610e89565b61057e565b6101516101a9366004610ebc565b610631565b60405160128152602001610135565b6007546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610135565b610174610210366004610ef9565b610655565b6006546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a610243366004610f12565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b610174610662565b610174610281366004610e2c565b610786565b610128610837565b61015161029c366004610e2c565b610846565b6005546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a6102cf366004610e56565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461031690610f34565b80601f016020809104026020016040519081016040528092919081815260200182805461034290610f34565b801561038f5780601f106103645761010080835404028352916020019161038f565b820191906000526020600020905b81548152906001019060200180831161037257829003601f168201915b5050505050905090565b6000336103a7818585610854565b60019150505b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff1633148015906103f3575060065473ffffffffffffffffffffffffffffffffffffffff163314155b15610431576040517fcdfcef970000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82161580610468575073ffffffffffffffffffffffffffffffffffffffff8116155b1561049f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006805473ffffffffffffffffffffffffffffffffffffffff8481167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316811790935560058054918516919092161790556040805133815260208101929092527fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff910160405180910390a16040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f1b9352454524a57a51f24f67dc66d898f616922cd1f7a12d73570ece12b1975c910160405180910390a15050565b60055473ffffffffffffffffffffffffffffffffffffffff1633146105d1576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6105db8383610866565b808373ffffffffffffffffffffffffffffffffffffffff167fc263b302aec62d29105026245f19e16f8e0137066ccd4a8bd941f716bd4096bb8460405161062491815260200190565b60405180910390a3505050565b60003361063f8582856108c6565b61064a858585610995565b506001949350505050565b61065f3382610a40565b50565b60075473ffffffffffffffffffffffffffffffffffffffff1633146106b5576040517fe700765e000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b60065473ffffffffffffffffffffffffffffffffffffffff16610704576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0910160405180910390a1565b60055473ffffffffffffffffffffffffffffffffffffffff1633146107d9576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6107e38282610a9c565b8173ffffffffffffffffffffffffffffffffffffffff167f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b18260405161082b91815260200190565b60405180910390a25050565b60606004805461031690610f34565b6000336103a7818585610995565b6108618383836001610ab1565b505050565b73ffffffffffffffffffffffffffffffffffffffff82166108b6576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c260008383610bf9565b5050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461098f5781811015610980576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401610428565b61098f84848484036000610ab1565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166109e5576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8216610a35576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b610861838383610bf9565b73ffffffffffffffffffffffffffffffffffffffff8216610a90576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c282600083610bf9565b610aa78233836108c6565b6108c28282610a40565b73ffffffffffffffffffffffffffffffffffffffff8416610b01576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8316610b51576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160209081526040808320938716835292905220829055801561098f578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610beb91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8316610c31578060026000828254610c269190610f87565b90915550610ce39050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610cb7576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810182905260448101839052606401610428565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff8216610d0c57600280548290039055610d38565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161062491815260200190565b602081526000825180602084015260005b81811015610dc55760208186018101516040868401015201610da8565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e2757600080fd5b919050565b60008060408385031215610e3f57600080fd5b610e4883610e03565b946020939093013593505050565b60008060408385031215610e6957600080fd5b610e7283610e03565b9150610e8060208401610e03565b90509250929050565b600080600060608486031215610e9e57600080fd5b610ea784610e03565b95602085013595506040909401359392505050565b600080600060608486031215610ed157600080fd5b610eda84610e03565b9250610ee860208501610e03565b929592945050506040919091013590565b600060208284031215610f0b57600080fd5b5035919050565b600060208284031215610f2457600080fd5b610f2d82610e03565b9392505050565b600181811c90821680610f4857607f821691505b602082108103610f81577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156103ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea264697066735822122001ec0ce060384773f3d3389fab7bed652c6b8ee389a7471cce10d00d87a75a0c64736f6c634300081a0033a264697066735822122012f083735e58619bafe4d5497340408ed87df3e833a42d0bbd35442c56bd802964736f6c634300081a0033", } // 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 7bf27de71..8282ea91c 100644 --- a/v2/pkg/gatewayevm.t.sol/gatewayevmtest.go +++ b/v2/pkg/gatewayevm.t.sol/gatewayevmtest.go @@ -67,7 +67,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\":\"DEFAULT_ADMIN_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\":\"testExecuteFailsIfDestinationIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteRevert\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteRevertFailsIfReceiverIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteRevertFailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteWithERC20FailsIfNotCustodyOrConnector\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteWithMsgContextFailsIfDestinationIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveNoParams\",\"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\":\"testForwardCallToReceiveNonPayableWithMsgContextFailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveOnCallFails\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveOnCallUsingAuthCall\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveOnRevertFails\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceivePayable\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testRevertWithERC20FailsIfNotCustodyOrConnector\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testSetConnectorFailsIfSenderIsNotAdmin\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testSetConnectorFailsIfSet\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testSetConnectorFailsIfZero\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testSetCustodyFailsIfSenderIsNotAdmin\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testSetCustodyFailsIfSet\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testSetCustodyFailsIfZero\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTSSUpgrade\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTSSUpgradeFailsIfSenderIsNotTSSUpdater\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTSSUpgradeFailsIfZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpgradeAndForwardCallToReceivePayable\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Called\",\"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\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposited\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposited\",\"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\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\":\"ReceivedOnCall\",\"inputs\":[],\"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\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unwhitelisted\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedCustodyTSSAddress\",\"inputs\":[{\"name\":\"oldTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedGatewayTSSAddress\",\"inputs\":[{\"name\":\"oldTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Whitelisted\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawn\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawnAndCalled\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"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\":\"WithdrawnAndReverted\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"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\":\"ConnectorInitialized\",\"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\":\"NotAllowedToCallOnCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotAllowedToCallOnRevert\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotWhitelistedInCustody\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PayloadSizeExceeded\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061ef8a8061003c6000396000f3fe608060405234801561001057600080fd5b50600436106102f45760003560e01c806385f438c111610191578063ce5871e1116100e3578063e63ab1e911610097578063fa18c09b11610071578063fa18c09b14610527578063fa7626d41461052f578063fe7bdbb21461053c57600080fd5b8063e63ab1e9146104f0578063e6afc79014610517578063f68bd1c01461051f57600080fd5b8063d38b66cd116100c8578063d38b66cd146104d8578063dd51e82f146104e0578063e20c9f71146104e857600080fd5b8063ce5871e1146104c8578063cebad2a6146104d057600080fd5b8063a783c78911610145578063b5508aa91161011f578063b5508aa9146104a0578063ba414fa6146104a8578063ccf20616146104c057600080fd5b8063a783c78914610469578063b0464fdc14610490578063b124dbf51461049857600080fd5b8063a217fddf11610176578063a217fddf14610451578063a397ffd214610459578063a56f7a4b1461046157600080fd5b806385f438c114610415578063916a17c61461043c57600080fd5b806344671b941161024a57806366d9a9a0116101fe5780637d7f772a116101d85780637d7f772a146103f05780637ebf744f146103f857806385226c811461040057600080fd5b806366d9a9a0146103cb5780636bdd212b146103e05780637a380ebf146103e857600080fd5b806351010e491161022f57806351010e491461038657806352ff59391461038e5780635d62c8601461039657600080fd5b806344671b94146103765780634df42da11461037e57600080fd5b80631855c337116102ac5780633e5e3c23116102865780633e5e3c231461035e5780633f7286f41461036657806343fd8c7d1461036e57600080fd5b80631855c337146103235780631ed7831c1461032b5780632ade38801461034957600080fd5b80630a9254e4116102dd5780630a9254e41461030b5780631226c65514610313578063130daf591461031b57600080fd5b806304b974f9146102f9578063070f2ad014610303575b600080fd5b610301610544565b005b610301610740565b610301610931565b610301611360565b6103016114d5565b61030161168c565b610333611806565b604051610340919061a6bc565b60405180910390f35b610351611868565b604051610340919061a758565b6103336119aa565b610333611a0a565b610301611a6a565b610301611db6565b610301612079565b6103016121ee565b6103016123ce565b6103bd7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b604051908152602001610340565b6103d3612936565b604051610340919061a8be565b610301612aa3565b610301612c62565b610301613282565b610301613572565b6104086136ec565b604051610340919061a9b8565b6103bd7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6104446137bc565b604051610340919061a9cb565b6103bd600081565b6103016138a2565b610301613bb5565b6103bd7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b610444613cf2565b610301613dd8565b61040861405c565b6104b061412c565b6040519015158152602001610340565b610301614200565b61030161433d565b6103016144b2565b6103016146c6565b61030161480c565b610333614fc7565b6103bd7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b610301615027565b610301615272565b61030161562a565b601f546104b09060ff1681565b61030161596f565b6040805160048082526024820183526020820180516001600160e01b03167f6ed7016900000000000000000000000000000000000000000000000000000000179052602754925163ca669fa760e01b81529192737109709ecfa91a80626ff3989d68f67f5b1dd12d9263ca669fa7926105d6926001600160a01b031691016001600160a01b0391909116815260200190565b600060405180830381600087803b1580156105f057600080fd5b505af1158015610604573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561068d57600080fd5b505af11580156106a1573d6000803e3d6000fd5b5050601f546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b03169250631cff79cd91506106f590600090859060040161aa62565b6000604051808303816000875af1158015610714573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261073c919081019061ab6c565b5050565b6027546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156107b257600080fd5b505af11580156107c6573d6000803e3d6000fd5b5050602754604080516001600160a01b039092166024830152600060448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061087d919060040161aba1565b600060405180830381600087803b15801561089757600080fd5b505af11580156108ab573d6000803e3d6000fd5b5050601f546025546040517f950837aa0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261010090920416925063950837aa91506024015b600060405180830381600087803b15801561091757600080fd5b505af115801561092b573d6000803e3d6000fd5b50505050565b602580547fffffffffffffffffffffffff000000000000000000000000000000000000000090811630179091556026805482166112341790556027805482166156781790556028805490911661987617905560405161098f9061a5dc565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610a14573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556027546040519116908190610a5d9061a5e9565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015610a90573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c000000000000000000000000000000000000602082015260275460255492519086169481019490945260448401929092529092166064820152600091610b6f916084015b60408051601f198184030181529190526020810180516001600160e01b03167fc0c53b8b00000000000000000000000000000000000000000000000000000000179052615dae565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0384811682029290921792839055604080518082018252601081527f4552433230437573746f64792e736f6c0000000000000000000000000000000060208201526027546025549251939095048416602484015293831660448301529091166064820152919250610c1291608401610b27565b602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383811691909117909155604080518082018252601a81527f5a657461436f6e6e6563746f724e6f6e4e61746976652e736f6c0000000000006020820152601f546024805460275460255495516101009094048716928401929092528516604483015284166064820152919092166084820152919250610d049160a40160408051601f198184030181529190526020810180516001600160e01b03167ff8c8765e00000000000000000000000000000000000000000000000000000000179052615dae565b602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038381169190911790915560275460405163ca669fa760e01b815291166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015610d8f57600080fd5b505af1158015610da3573d6000803e3d6000fd5b5050602480546027546022546040517f15d57fd40000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152908216938101939093521692506315d57fd49150604401600060405180830381600087803b158015610e1657600080fd5b505af1158015610e2a573d6000803e3d6000fd5b50505050604051610e3a9061a5f6565b604051809103906000f080158015610e56573d6000803e3d6000fd5b50602080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556027546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b158015610f0257600080fd5b505af1158015610f16573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610f8c57600080fd5b505af1158015610fa0573d6000803e3d6000fd5b5050601f546021546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261010090920416925063ae7a3a6f9150602401600060405180830381600087803b15801561100b57600080fd5b505af115801561101f573d6000803e3d6000fd5b5050601f546022546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526101009092041692506310188aef9150602401600060405180830381600087803b15801561108a57600080fd5b505af115801561109e573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561110057600080fd5b505af1158015611114573d6000803e3d6000fd5b50506023546025546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f42406024820152911692506340c10f199150604401600060405180830381600087803b15801561118357600080fd5b505af1158015611197573d6000803e3d6000fd5b50506023546021546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12060248201529116925063a9059cbb91506044016020604051808303816000875af115801561120b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122f919061abb4565b506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b1580156112b057600080fd5b505af11580156112c4573d6000803e3d6000fd5b5050604080516080810182526025546001600160a01b039081168252602354811660208084019182526001848601908152855191820190955260008152606084018190528351602d80549185167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161781559251602e8054919095169116179092559251602f5590935090915060309061092b908261ac6a565b6025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156113d257600080fd5b505af11580156113e6573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561146f57600080fd5b505af1158015611483573d6000803e3d6000fd5b5050601f546040517fae7a3a6f000000000000000000000000000000000000000000000000000000008152600060048201526101009091046001600160a01b0316925063ae7a3a6f91506024016108fd565b6040805160048082526024820183526020820180516001600160e01b03167fc9028a3600000000000000000000000000000000000000000000000000000000179052602754925163ca669fa760e01b81529192737109709ecfa91a80626ff3989d68f67f5b1dd12d9263ca669fa792611567926001600160a01b031691016001600160a01b0391909116815260200190565b600060405180830381600087803b15801561158157600080fd5b505af1158015611595573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527ff3459a96000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b15801561161f57600080fd5b505af1158015611633573d6000803e3d6000fd5b5050601f546020546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526101009092046001600160a01b039081169450631cff79cd93506106f592911690859060040161aa62565b6025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156116fe57600080fd5b505af1158015611712573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fb337f378000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b15801561179c57600080fd5b505af11580156117b0573d6000803e3d6000fd5b5050601f546021546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261010090920416925063ae7a3a6f91506024016108fd565b6060601680548060200260200160405190810160405280929190818152602001828054801561185e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611840575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b828210156119a157600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561198a5783829060005260206000200180546118fd9061abd6565b80601f01602080910402602001604051908101604052809291908181526020018280546119299061abd6565b80156119765780601f1061194b57610100808354040283529160200191611976565b820191906000526020600020905b81548152906001019060200180831161195957829003601f168201915b5050505050815260200190600101906118de565b50505050815250508152602001906001019061188c565b50505050905090565b6060601880548060200260200160405190810160405280929190818152602001828054801561185e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611840575050505050905090565b6060601780548060200260200160405190810160405280929190818152602001828054801561185e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611840575050505050905090565b604080516001808252818301909252600091816020015b6060815260200190600190039081611a815790505090506040518060400160405280600f81526020017f48656c6c6f2c20466f756e64727921000000000000000000000000000000000081525081600081518110611ae157611ae161ad29565b6020908102919091010152604080516001808252818301909252600091816020016020820280368337019050509050602a81600081518110611b2557611b2561ad29565b6020908102919091010152604051600190600090611b4b9085908590859060240161ad8a565b60408051601f198184030181529181526020820180516001600160e01b03167ff05b6abf00000000000000000000000000000000000000000000000000000000179052602554905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611be957600080fd5b505af1158015611bfd573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250611cd3919060040161aba1565b600060405180830381600087803b158015611ced57600080fd5b505af1158015611d01573d6000803e3d6000fd5b5050601f54604080516020808201835261012382525491517f38e225270000000000000000000000000000000000000000000000000000000081526101009093046001600160a01b0390811695506338e225279450611d689391921690869060040161adc2565b6000604051808303816000875af1158015611d87573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611daf919081019061ab6c565b5050505050565b604080516004808252602482018352602080830180516001600160e01b03167f6ed70169000000000000000000000000000000000000000000000000000000001790525492517ff30c7ba30000000000000000000000000000000000000000000000000000000081529192737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba392611e56926001600160a01b03169160009187910161adf4565b600060405180830381600087803b158015611e7057600080fd5b505af1158015611e84573d6000803e3d6000fd5b50506020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015611efd57600080fd5b505af1158015611f11573d6000803e3d6000fd5b5050601f546040516101009091046001600160a01b031681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09250602001905060405180910390a1601f546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611fd357600080fd5b505af1158015611fe7573d6000803e3d6000fd5b50506020546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f915061202d90600090859061ae1c565b60405180910390a260275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401611605565b6025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156120eb57600080fd5b505af11580156120ff573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561218857600080fd5b505af115801561219c573d6000803e3d6000fd5b5050601f546040517f950837aa000000000000000000000000000000000000000000000000000000008152600060048201526101009091046001600160a01b0316925063950837aa91506024016108fd565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152670de0b6b3a76400009060009060250160408051808303601f190181529082905260275463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561228e57600080fd5b505af11580156122a2573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561232b57600080fd5b505af115801561233f573d6000803e3d6000fd5b5050601f546040517fcb7ba8e50000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b0316925063cb7ba8e591508490612398906000908690602d9060040161af12565b6000604051808303818588803b1580156123b157600080fd5b505af11580156123c5573d6000803e3d6000fd5b50505050505050565b601f546040517f91d148540000000000000000000000000000000000000000000000000000000081527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb600482015261432160248201819052916000916101009091046001600160a01b0316906391d1485490604401602060405180830381865afa158015612461573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612485919061abb4565b905061249081615dcd565b601f546027546040517f91d148540000000000000000000000000000000000000000000000000000000081527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60048201526001600160a01b0391821660248201526000926101009004909116906391d1485490604401602060405180830381865afa158015612524573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612548919061abb4565b905061255381615e47565b6025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156125c557600080fd5b505af11580156125d9573d6000803e3d6000fd5b5050601f546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561265657600080fd5b505af115801561266a573d6000803e3d6000fd5b5050602754604080516001600160a01b03928316815291871660208301527f3a7b8d6372645f474fe60c115a2ef21421306a3ed4664fa0023c461413c08579935001905060405180910390a1601f546040517f950837aa0000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526101009092049091169063950837aa90602401600060405180830381600087803b15801561271c57600080fd5b505af1158015612730573d6000803e3d6000fd5b505050506127b483601f60019054906101000a90046001600160a01b03166001600160a01b0316635b1125916040518163ffffffff1660e01b8152600401602060405180830381865afa15801561278b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127af919061af46565b615e99565b601f546040517f91d148540000000000000000000000000000000000000000000000000000000081527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60048201526001600160a01b038581166024830152610100909204909116906391d1485490604401602060405180830381865afa158015612843573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612867919061abb4565b915061287282615e47565b601f546027546040517f91d148540000000000000000000000000000000000000000000000000000000081527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60048201526001600160a01b03918216602482015261010090920416906391d1485490604401602060405180830381865afa158015612902573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612926919061abb4565b905061293181615dcd565b505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156119a1578382906000526020600020906002020160405180604001604052908160008201805461298d9061abd6565b80601f01602080910402602001604051908101604052809291908181526020018280546129b99061abd6565b8015612a065780601f106129db57610100808354040283529160200191612a06565b820191906000526020600020905b8154815290600101906020018083116129e957829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015612a8b57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411612a4d5790505b5050505050815250508152602001906001019061295a565b6040805160048082526024820183526020820180516001600160e01b03167f6ed7016900000000000000000000000000000000000000000000000000000000179052602754925163ca669fa760e01b81529192737109709ecfa91a80626ff3989d68f67f5b1dd12d9263ca669fa792612b35926001600160a01b031691016001600160a01b0391909116815260200190565b600060405180830381600087803b158015612b4f57600080fd5b505af1158015612b63573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015612bec57600080fd5b505af1158015612c00573d6000803e3d6000fd5b5050601f5460408051602081018252610123815290517f38e225270000000000000000000000000000000000000000000000000000000081526101009092046001600160a01b031693506338e2252792506106f591600090869060040161adc2565b601f54604080518082018252601981527f4761746577617945564d55706772616465546573742e736f6c00000000000000602080830191909152825190810190925260008252602554612cc7936001600160a01b036101009091048116939116615f22565b601f54604080517fdda79b7500000000000000000000000000000000000000000000000000000000815290516101009092046001600160a01b031691600091839163dda79b75916004808201926020929091908290030181865afa158015612d33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d57919061af46565b90506000601f60019054906101000a90046001600160a01b03166001600160a01b0316635b1125916040518163ffffffff1660e01b8152600401602060405180830381865afa158015612dae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dd2919061af46565b604080518082018252600f81527f48656c6c6f2c20466f756e6472792100000000000000000000000000000000006020820152905191925090602a90600190670de0b6b3a764000090600090612e309086908690869060240161af6f565b60408051601f19818403018152918152602080830180516001600160e01b03167fe04d4f97000000000000000000000000000000000000000000000000000000001790525490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391612ed6916001600160a01b0391909116908690869060040161adf4565b600060405180830381600087803b158015612ef057600080fd5b505af1158015612f04573d6000803e3d6000fd5b50506020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015612f7d57600080fd5b505af1158015612f91573d6000803e3d6000fd5b505050507f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa601f60019054906101000a90046001600160a01b031683878787604051612fe195949392919061af99565b60405180910390a1601f546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561306257600080fd5b505af1158015613076573d6000803e3d6000fd5b50506020546040516001600160a01b0390911692507f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e854691506130bb908590859061ae1c565b60405180910390a260275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561311c57600080fd5b505af1158015613130573d6000803e3d6000fd5b50506020546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b03808d169450631cff79cd9350869261318292911690869060040161aa62565b60006040518083038185885af11580156131a0573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526131c9919081019061ab6c565b5061322187601f60019054906101000a90046001600160a01b03166001600160a01b031663dda79b756040518163ffffffff1660e01b8152600401602060405180830381865afa15801561278b573d6000803e3d6000fd5b61327886601f60019054906101000a90046001600160a01b03166001600160a01b0316635b1125916040518163ffffffff1660e01b8152600401602060405180830381865afa15801561278b573d6000803e3d6000fd5b5050505050505050565b604080516001808252818301909252600091816020015b60608152602001906001900390816132995790505090506040518060400160405280600f81526020017f48656c6c6f2c20466f756e647279210000000000000000000000000000000000815250816000815181106132f9576132f961ad29565b6020908102919091010152604080516001808252818301909252600091816020016020820280368337019050509050602a8160008151811061333d5761333d61ad29565b60209081029190910101526040516001906000906133639085908590859060240161ad8a565b60408051601f198184030181529181526020820180516001600160e01b03167ff05b6abf00000000000000000000000000000000000000000000000000000000179052602554905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561340157600080fd5b505af1158015613415573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506134eb919060040161aba1565b600060405180830381600087803b15801561350557600080fd5b505af1158015613519573d6000803e3d6000fd5b5050601f546020546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526101009092046001600160a01b039081169450631cff79cd9350611d6892911690859060040161aa62565b6025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156135e457600080fd5b505af11580156135f8573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f0c8dc016000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b15801561368257600080fd5b505af1158015613696573d6000803e3d6000fd5b5050601f546022546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526101009092041692506310188aef91506024016108fd565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156119a157838290600052602060002001805461372f9061abd6565b80601f016020809104026020016040519081016040528092919081815260200182805461375b9061abd6565b80156137a85780601f1061377d576101008083540402835291602001916137a8565b820191906000526020600020905b81548152906001019060200180831161378b57829003601f168201915b505050505081526020019060010190613710565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156119a15760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561388a57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161384c5790505b505050505081525050815260200190600101906137e0565b6020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561391757600080fd5b505af115801561392b573d6000803e3d6000fd5b50506040517f3658b46bab672c7672b69c2f0feda706eabdb7d2231421c96e9049b2db5e7eee925060009150a1601f546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156139d157600080fd5b505af11580156139e5573d6000803e3d6000fd5b505060208054604080518082018252600181527f310000000000000000000000000000000000000000000000000000000000000093810193909352516001600160a01b0390911693507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9250613a5d9160009161ae1c565b60405180910390a260275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613abe57600080fd5b505af1158015613ad2573d6000803e3d6000fd5b5050601f5460408051602080820183526101238252805483518085018552600181527f31000000000000000000000000000000000000000000000000000000000000009281019290925292517f38e225270000000000000000000000000000000000000000000000000000000081526101009094046001600160a01b0390811696506338e225279550613b6b949293169160040161adc2565b6000604051808303816000875af1158015613b8a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613bb2919081019061ab6c565b50565b6027546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b158015613c2757600080fd5b505af1158015613c3b573d6000803e3d6000fd5b5050602754604080516001600160a01b039092166024830152600060448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250611782919060040161aba1565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156119a15760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015613dc057602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411613d825790505b50505050508152505081526020019060010190613d16565b602354602654604051620186a0602482018190526001600160a01b03938416604483015292909116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a200000000000000000000000000000000000000000000000000000000179052602554905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613ea957600080fd5b505af1158015613ebd573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b960448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250613f93919060040161aba1565b600060405180830381600087803b158015613fad57600080fd5b505af1158015613fc1573d6000803e3d6000fd5b5050601f546023546026546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526101009093046001600160a01b03908116955063aa0c0fc19450614026939281169291169087908790602d9060040161afda565b600060405180830381600087803b15801561404057600080fd5b505af1158015614054573d6000803e3d6000fd5b505050505050565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156119a157838290600052602060002001805461409f9061abd6565b80601f01602080910402602001604051908101604052809291908181526020018280546140cb9061abd6565b80156141185780601f106140ed57610100808354040283529160200191614118565b820191906000526020600020905b8154815290600101906020018083116140fb57829003601f168201915b505050505081526020019060010190614080565b60085460009060ff1615614144575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa1580156141d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141f9919061b02f565b1415905090565b6027546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b15801561427257600080fd5b505af1158015614286573d6000803e3d6000fd5b5050602754604080516001600160a01b039092166024830152600060448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250613668919060040161aba1565b6025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156143af57600080fd5b505af11580156143c3573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561444c57600080fd5b505af1158015614460573d6000803e3d6000fd5b5050601f546040517f10188aef000000000000000000000000000000000000000000000000000000008152600060048201526101009091046001600160a01b031692506310188aef91506024016108fd565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152670de0b6b3a76400009060009060250160408051808303601f190181529082905260255463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561455257600080fd5b505af1158015614566573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061463c919060040161aba1565b600060405180830381600087803b15801561465657600080fd5b505af115801561466a573d6000803e3d6000fd5b5050601f546020546040517fcb7ba8e50000000000000000000000000000000000000000000000000000000081526001600160a01b036101009093048316945063cb7ba8e5935086926123989216908690602d9060040161af12565b60408051602081018252600080825291516146e691607b9160240161aa62565b60408051601f198184030181529181526020820180516001600160e01b03167f676cc05400000000000000000000000000000000000000000000000000000000179052602754905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561478457600080fd5b505af1158015614798573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fed699775000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401611605565b60285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561486557600080fd5b505af1158015614879573d6000803e3d6000fd5b5050602854604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061494f919060040161aba1565b600060405180830381600087803b15801561496957600080fd5b505af115801561497d573d6000803e3d6000fd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156149d157600080fd5b505af11580156149e5573d6000803e3d6000fd5b505060285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015614a4257600080fd5b505af1158015614a56573d6000803e3d6000fd5b5050602854604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250614b2c919060040161aba1565b600060405180830381600087803b158015614b4657600080fd5b505af1158015614b5a573d6000803e3d6000fd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015614bae57600080fd5b505af1158015614bc2573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015614c1f57600080fd5b505af1158015614c33573d6000803e3d6000fd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b158015614c8757600080fd5b505af1158015614c9b573d6000803e3d6000fd5b5050604080516004808252602480830184526020830180516001600160e01b03167f6ed701690000000000000000000000000000000000000000000000000000000017905292517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd93c06650000000000000000000000000000000000000000000000000000000091810191909152909350737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09101600060405180830381600087803b158015614d6857600080fd5b505af1158015614d7c573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015614dd957600080fd5b505af1158015614ded573d6000803e3d6000fd5b5050601f546020546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526101009092046001600160a01b039081169450631cff79cd9350614e4692911690859060040161aa62565b6000604051808303816000875af1158015614e65573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614e8d919081019061ab6c565b5060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614ee757600080fd5b505af1158015614efb573d6000803e3d6000fd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015614f4f57600080fd5b505af1158015614f63573d6000803e3d6000fd5b50506020546040517ff30c7ba3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f30c7ba39250611e56916001600160a01b031690600090869060040161adf4565b6060601580548060200260200160405190810160405280929190818152602001828054801561185e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611840575050505050905090565b602354602654604051620186a0602482018190526001600160a01b03938416604483015292909116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a200000000000000000000000000000000000000000000000000000000179052602554905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156150f857600080fd5b505af115801561510c573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b960448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506151e2919060040161aba1565b600060405180830381600087803b1580156151fc57600080fd5b505af1158015615210573d6000803e3d6000fd5b5050601f546023546026546040517f5131ab590000000000000000000000000000000000000000000000000000000081526101009093046001600160a01b039081169550635131ab59945061402693928116929116908790879060040161b048565b604080516001808252818301909252600091816020015b60608152602001906001900390816152895790505090506040518060400160405280600f81526020017f48656c6c6f2c20466f756e647279210000000000000000000000000000000000815250816000815181106152e9576152e961ad29565b6020908102919091010152604080516001808252818301909252600091816020016020820280368337019050509050602a8160008151811061532d5761532d61ad29565b60209081029190910101526040516001906000906153539085908590859060240161ad8a565b60408051601f19818403018152918152602080830180516001600160e01b03167ff05b6abf000000000000000000000000000000000000000000000000000000001790525490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba3916153fa916001600160a01b039190911690600090869060040161adf4565b600060405180830381600087803b15801561541457600080fd5b505af1158015615428573d6000803e3d6000fd5b50506020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156154a157600080fd5b505af11580156154b5573d6000803e3d6000fd5b505050507f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146601f60019054906101000a90046001600160a01b0316858585604051615503949392919061b07f565b60405180910390a1601f546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561558457600080fd5b505af1158015615598573d6000803e3d6000fd5b50506020546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f91506155de90600090859061ae1c565b60405180910390a260275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024016134eb565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152670de0b6b3a76400009060009060250160408051601f198184030181529190526020549091506001600160a01b03163161568e816000615f37565b6020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561570357600080fd5b505af1158015615717573d6000803e3d6000fd5b505050507f689a5a5cb55e795ffe4cd8b419cd3bb0a3373974c54d25f64e734d7388b93e9b601f60019054906101000a90046001600160a01b0316602d60405161576292919061b0c7565b60405180910390a1601f546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156157e357600080fd5b505af11580156157f7573d6000803e3d6000fd5b5050602054604051600093506001600160a01b0390911691507fde7603a6ed5d07c9f43597ccfe9043d15b66d3284f0de321f5cdf56329e6e0359061584a90670de0b6b3a7640000908790602d9061b0e9565b60405180910390a360275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156158ab57600080fd5b505af11580156158bf573d6000803e3d6000fd5b5050601f546020546040517fcb7ba8e50000000000000000000000000000000000000000000000000000000081526001600160a01b036101009093048316945063cb7ba8e59350879261591b9216908790602d9060040161af12565b6000604051808303818588803b15801561593457600080fd5b505af1158015615948573d6000803e3d6000fd5b50506020546001600160a01b031631925061092b9150829050670de0b6b3a7640000615f37565b60408051808201909152600f81527f48656c6c6f2c20466f756e64727921000000000000000000000000000000000060208083019190915254602a90600190670de0b6b3a7640000906159ce906000906001600160a01b031631615f37565b60008484846040516024016159e59392919061af6f565b60408051601f19818403018152918152602080830180516001600160e01b03167fe04d4f97000000000000000000000000000000000000000000000000000000001790525490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391615a93916001600160a01b039190911690670de0b6b3a764000090869060040161adf4565b600060405180830381600087803b158015615aad57600080fd5b505af1158015615ac1573d6000803e3d6000fd5b50506020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015615b3a57600080fd5b505af1158015615b4e573d6000803e3d6000fd5b505050507f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa601f60019054906101000a90046001600160a01b031683878787604051615b9e95949392919061af99565b60405180910390a1601f546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015615c1f57600080fd5b505af1158015615c33573d6000803e3d6000fd5b50506020546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150615c8090670de0b6b3a764000090859061ae1c565b60405180910390a260275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015615ce157600080fd5b505af1158015615cf5573d6000803e3d6000fd5b5050601f546020546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b0361010090930483169450631cff79cd93508692615d4e921690869060040161aa62565b60006040518083038185885af1158015615d6c573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052615d95919081019061ab6c565b50602054611daf9083906001600160a01b031631615f37565b6000615db861a603565b615dc3848483615f8f565b9150505b92915050565b6040517fa59828850000000000000000000000000000000000000000000000000000000081528115156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063a5982885906024015b60006040518083038186803b158015615e3357600080fd5b505afa158015611daf573d6000803e3d6000fd5b6040517f0c9fd5810000000000000000000000000000000000000000000000000000000081528115156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90630c9fd58190602401615e1b565b6040517f515361f60000000000000000000000000000000000000000000000000000000081526001600160a01b03808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f6906044015b60006040518083038186803b158015615f0e57600080fd5b505afa158015614054573d6000803e3d6000fd5b615f2a61a603565b611daf858585848661600a565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c5490604401615ef6565b600080615f9c858461610a565b9050615fff6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001615fea92919061aa62565b60405160208183030381529060405285616116565b9150505b9392505050565b6040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201528190737109709ecfa91a80626ff3989d68f67f5b1dd12d9081906306447d5690602401600060405180830381600087803b15801561607c57600080fd5b505af192505050801561608d575060015b6160a25761609d87878787616144565b6123c5565b6160ae87878787616144565b806001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156160e957600080fd5b505af11580156160fd573d6000803e3d6000fd5b5050505050505050505050565b6000616003838361615d565b60c0810151516000901561613a5761613384848460c00151616178565b9050616003565b616133848461631e565b60006161508483616409565b9050611daf858285616415565b600061616983836167df565b61600383836020015184616116565b6000806161836167eb565b9050600061619186836168be565b905060006161a88260600151836020015185616d64565b905060006161b883838989616f76565b905060006161c582617df3565b602081015181519192509060030b15616238578982604001516040516020016161ef92919061b102565b60408051601f19818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261622f9160040161aba1565b60405180910390fd5b600061627b6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001617fc2565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d906162ce90849060040161aba1565b602060405180830381865afa1580156162eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061630f919061af46565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc9259061637390879060040161aba1565b600060405180830381865afa158015616390573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526163b8919081019061ab6c565b905060006163e682856040516020016163d292919061b183565b6040516020818303038152906040526181c2565b90506001600160a01b038116615dc35784846040516020016161ef92919061b1b2565b600061616983836181d5565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201527fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61036024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90600090829063667f9d7090604401602060405180830381865afa1580156164b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906164d5919061b02f565b90508061667c5760006164e7866181e1565b604080518082018252600581527f352e302e3000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150616572905b604080518082018252600080825260209182015281518083019092528451825280850190820152906182c4565b8061657e575060008451115b15616601576040517f4f1ef2860000000000000000000000000000000000000000000000000000000081526001600160a01b03871690634f1ef286906165ca908890889060040161aa62565b600060405180830381600087803b1580156165e457600080fd5b505af11580156165f8573d6000803e3d6000fd5b50505050616676565b6040517f3659cfe60000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152871690633659cfe690602401600060405180830381600087803b15801561665d57600080fd5b505af1158015616671573d6000803e3d6000fd5b505050505b50611daf565b806000616688826181e1565b604080518082018252600581527f352e302e30000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506166ea90616545565b806166f6575060008551115b1561677b576040517f9623609d0000000000000000000000000000000000000000000000000000000081526001600160a01b03831690639623609d90616744908a908a908a9060040161b25d565b600060405180830381600087803b15801561675e57600080fd5b505af1158015616772573d6000803e3d6000fd5b505050506123c5565b6040517f99a88ec40000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015287811660248301528316906399a88ec490604401600060405180830381600087803b1580156160e957600080fd5b61073c828260006182d8565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c9061687290849060040161b28e565b600060405180830381865afa15801561688f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526168b7919081019061b2d5565b9250505090565b6168f06040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d905061693b6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b616944856183db565b60208201526000616954866187c0565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015616996573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526169be919081019061b2d5565b868385602001516040516020016169d8949392919061b31e565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190616a3090859060040161aba1565b600060405180830381865afa158015616a4d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616a75919081019061b2d5565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690616abd90849060040161b422565b602060405180830381865afa158015616ada573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616afe919061abb4565b616b1357816040516020016161ef919061b474565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890616b5890849060040161b506565b600060405180830381865afa158015616b75573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616b9d919081019061b2d5565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690616be490849060040161b558565b602060405180830381865afa158015616c01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616c25919061abb4565b15616cba576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890616c6f90849060040161b558565b600060405180830381865afa158015616c8c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616cb4919081019061b2d5565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001616cdf919061b5aa565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401616d0b92919061b616565b600060405180830381865afa158015616d28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616d50919081019061b2d5565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081616d805790505090506040518060400160405280600481526020017f677265700000000000000000000000000000000000000000000000000000000081525081600081518110616de057616de061ad29565b60200260200101819052506040518060400160405280600381526020017f2d726c000000000000000000000000000000000000000000000000000000000081525081600181518110616e3457616e3461ad29565b602002602001018190525084604051602001616e50919061b63b565b60405160208183030381529060405281600281518110616e7257616e7261ad29565b602002602001018190525082604051602001616e8e919061b6a7565b60405160208183030381529060405281600381518110616eb057616eb061ad29565b60200260200101819052506000616ec682617df3565b602080820151604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000008185019081528251808401845260008082529086015282518084019093529051825292810192909252919250616f579060408051808201825260008082526020918201528151808301909252845182528085019082015290618a43565b616f6c57856040516020016161ef919061b6e8565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015616fc6565b511590565b61713a57826020015115617082576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a40161622f565b8260c001511561713a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a40161622f565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161715357905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806171ae9061b7a8565b935060ff16815181106171c3576171c361ad29565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001617214919061b7c7565b60405160208183030381529060405282828061722f9061b7a8565b935060ff16815181106172445761724461ad29565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806172919061b7a8565b935060ff16815181106172a6576172a661ad29565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806172f39061b7a8565b935060ff16815181106173085761730861ad29565b602002602001018190525087602001518282806173249061b7a8565b935060ff16815181106173395761733961ad29565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806173869061b7a8565b935060ff168151811061739b5761739b61ad29565b6020908102919091010152875182826173b38161b7a8565b935060ff16815181106173c8576173c861ad29565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806174159061b7a8565b935060ff168151811061742a5761742a61ad29565b602002602001018190525061743e46618aa4565b82826174498161b7a8565b935060ff168151811061745e5761745e61ad29565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c6500000000000000000000000000000000008152508282806174ab9061b7a8565b935060ff16815181106174c0576174c061ad29565b6020026020010181905250868282806174d89061b7a8565b935060ff16815181106174ed576174ed61ad29565b60209081029190910101528551156176145760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261753e8161b7a8565b935060ff16815181106175535761755361ad29565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d906175a390899060040161aba1565b600060405180830381865afa1580156175c0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526175e8919081019061b2d5565b82826175f38161b7a8565b935060ff16815181106176085761760861ad29565b60200260200101819052505b8460200151156176e45760408051808201909152601281527f2d2d766572696679536f75726365436f646500000000000000000000000000006020820152828261765d8161b7a8565b935060ff16815181106176725761767261ad29565b60200260200101819052506040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152508282806176bf9061b7a8565b935060ff16815181106176d4576176d461ad29565b60200260200101819052506178ab565b61771c616fc18660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6177af5760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828261775f8161b7a8565b935060ff16815181106177745761777461ad29565b60200260200101819052508460a00151604051602001617794919061b63b565b6040516020818303038152906040528282806176bf9061b7a8565b8460c001511580156177f25750604080890151815180830183526000808252602091820152825180840190935281518352908101908201526177f090511590565b155b156178ab5760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826178368161b7a8565b935060ff168151811061784b5761784b61ad29565b602002602001018190525061785f88618b44565b60405160200161786f919061b63b565b60405160208183030381529060405282828061788a9061b7a8565b935060ff168151811061789f5761789f61ad29565b60200260200101819052505b604080860151815180830183526000808252602091820152825180840190935281518352908101908201526178df90511590565b6179745760408051808201909152600b81527f2d2d72656c617965724964000000000000000000000000000000000000000000602082015282826179228161b7a8565b935060ff16815181106179375761793761ad29565b602002602001018190525084604001518282806179539061b7a8565b935060ff16815181106179685761796861ad29565b60200260200101819052505b606085015115617a955760408051808201909152600681527f2d2d73616c740000000000000000000000000000000000000000000000000000602082015282826179bd8161b7a8565b935060ff16815181106179d2576179d261ad29565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015617a41573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617a69919081019061b2d5565b8282617a748161b7a8565b935060ff1681518110617a8957617a8961ad29565b60200260200101819052505b60e08501515115617b3c5760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282617adf8161b7a8565b935060ff1681518110617af457617af461ad29565b6020026020010181905250617b108560e0015160000151618aa4565b8282617b1b8161b7a8565b935060ff1681518110617b3057617b3061ad29565b60200260200101819052505b60e08501516020015115617be65760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282617b898161b7a8565b935060ff1681518110617b9e57617b9e61ad29565b6020026020010181905250617bba8560e0015160200151618aa4565b8282617bc58161b7a8565b935060ff1681518110617bda57617bda61ad29565b60200260200101819052505b60e08501516040015115617c905760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282617c338161b7a8565b935060ff1681518110617c4857617c4861ad29565b6020026020010181905250617c648560e0015160400151618aa4565b8282617c6f8161b7a8565b935060ff1681518110617c8457617c8461ad29565b60200260200101819052505b60e08501516060015115617d3a5760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282617cdd8161b7a8565b935060ff1681518110617cf257617cf261ad29565b6020026020010181905250617d0e8560e0015160600151618aa4565b8282617d198161b7a8565b935060ff1681518110617d2e57617d2e61ad29565b60200260200101819052505b60008160ff1667ffffffffffffffff811115617d5857617d5861aa84565b604051908082528060200260200182016040528015617d8b57816020015b6060815260200190600190039081617d765790505b50905060005b8260ff168160ff161015617de457838160ff1681518110617db457617db461ad29565b6020026020010151828260ff1681518110617dd157617dd161ad29565b6020908102919091010152600101617d91565b5093505050505b949350505050565b617e1a6040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c91617ea09186910161b832565b600060405180830381865afa158015617ebd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617ee5919081019061b2d5565b90506000617ef38683619633565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401617f23919061a9b8565b6000604051808303816000875af1158015617f42573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617f6a919081019061b879565b805190915060030b15801590617f835750602081015151155b8015617f925750604081015151155b15616f6c5781600081518110617faa57617faa61ad29565b60200260200101516040516020016161ef919061b92f565b60606000617ff78560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252865182528087019082015290915061802e9082905b90619788565b1561818b5760006180ab826180a58461809f6180718a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b906197af565b90619811565b604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061810f908290619788565b1561817957604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618176905b8290619896565b90505b618182816198bc565b92505050616003565b82156181a45784846040516020016161ef92919061bb1b565b5050604080516020810190915260008152616003565b509392505050565b6000808251602084016000f09392505050565b61073c828260016182d8565b60408051600481526024810182526020810180516001600160e01b03167fad3cb1cc00000000000000000000000000000000000000000000000000000000179052905160609160009182916001600160a01b03861691618241919061bbc2565b600060405180830381855afa9150503d806000811461827c576040519150601f19603f3d011682016040523d82523d6000602084013e618281565b606091505b5091509150818015618294575060208151115b156182ad5780806020019051810190617deb919061b2d5565b505060408051602081019091526000815292915050565b60006182d08383619925565b159392505050565b8160a00151156182e757505050565b60006182f4848484619a00565b9050600061830182617df3565b602081015181519192509060030b15801561839d5750604080518082018252600781527f53554343455353000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261839d90604080518082018252600080825260209182015281518083019092528451825280850190820152618028565b156183aa57505050505050565b604082015151156183ca5781604001516040516020016161ef919061bbde565b806040516020016161ef919061bc3c565b606060006184108360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150618475905b8290618a43565b156184e457604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616003906184df908390619f9b565b6198bc565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618546905b829061a025565b60010361861357604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526185ac9061816f565b50604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616003906184df905b8390619896565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526186729061846e565b156187a957604080518082018252600181527f2f000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201819052845180860190955292518452830152906186da90839061a0bf565b9050600081600183516186ed919061bca7565b815181106186fd576186fd61ad29565b602002602001015190506187a06184df6187736040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290619f9b565b95945050505050565b826040516020016161ef919061bcba565b50919050565b606060006187f58360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506188579061846e565b1561886557616003816198bc565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526188c49061853f565b60010361892e57604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616003906184df9061860c565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261898d9061846e565b156187a957604080518082018252600181527f2f000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201819052845180860190955292518452830152906189f590839061a0bf565b9050600181511115618a31578060028251618a10919061bca7565b81518110618a2057618a2061ad29565b602002602001015192505050919050565b50826040516020016161ef919061bcba565b805182516000911115618a5857506000615dc7565b81518351602085015160009291618a6e9161bd98565b618a78919061bca7565b905082602001518103618a8f576001915050615dc7565b82516020840151819020912014905092915050565b60606000618ab18361a164565b600101905060008167ffffffffffffffff811115618ad157618ad161aa84565b6040519080825280601f01601f191660200182016040528015618afb576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084618b0557509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091618bd0905b82906182c4565b15618c1057505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618c6f90618bc9565b15618caf57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618d0e90618bc9565b15618d4e57505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618dad90618bc9565b80618e125750604080518082018252601081527f47504c2d322e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618e1290618bc9565b15618e5257505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618eb190618bc9565b80618f165750604080518082018252601081527f47504c2d332e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618f1690618bc9565b15618f5657505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618fb590618bc9565b8061901a5750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261901a90618bc9565b1561905a57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526190b990618bc9565b8061911e5750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261911e90618bc9565b1561915e57505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526191bd90618bc9565b156191fd57505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261925c90618bc9565b1561929c57505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526192fb90618bc9565b1561933b57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261939a90618bc9565b156193da57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261943990618bc9565b1561947957505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526194d890618bc9565b8061953d5750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261953d90618bc9565b1561957d57505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e31000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526195dc90618bc9565b1561961c57505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b604080840151845191516161ef929060200161bdab565b60608060005b84518110156196be57818582815181106196555761965561ad29565b602002602001015160405160200161966e92919061b183565b60405160208183030381529060405291506001855161968d919061bca7565b81146196b657816040516020016196a4919061bf14565b60405160208183030381529060405291505b600101619639565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816196d757905050905083816000815181106197025761970261ad29565b60200260200101819052506040518060400160405280600281526020017f2d63000000000000000000000000000000000000000000000000000000000000815250816001815181106197565761975661ad29565b602002602001018190525081816002815181106197755761977561ad29565b6020908102919091010152949350505050565b60208083015183518351928401516000936197a6929184919061a246565b14159392505050565b604080518082019091526000808252602082015260006197e1846000015185602001518560000151866020015161a357565b90508360200151816197f3919061bca7565b8451859061980290839061bca7565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015619836575081615dc7565b602080830151908401516001911461985d5750815160208481015190840151829020919020145b801561988e5782518451859061987490839061bca7565b905250825160208501805161988a90839061bd98565b9052505b509192915050565b60408051808201909152600080825260208201526198b583838361a477565b5092915050565b60606000826000015167ffffffffffffffff8111156198dd576198dd61aa84565b6040519080825280601f01601f191660200182016040528015619907576020820181803683370190505b50905060006020820190506198b5818560200151866000015161a522565b8151815160009190811115619938575081515b6020808501519084015160005b838110156199f157825182518082146199c15760001960208710156199a05760018461997289602061bca7565b61997c919061bd98565b61998790600861bf55565b61999290600261c053565b61999c919061bca7565b1990505b81811683821681810391146199be579750615dc79650505050505050565b50505b6199cc60208661bd98565b94506199d960208561bd98565b935050506020816199ea919061bd98565b9050619945565b5084518651616f6c919061c05f565b60606000619a0c6167eb565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081619a2957905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280619a849061b7a8565b935060ff1681518110619a9957619a9961ad29565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001619aea919061c07f565b604051602081830303815290604052828280619b059061b7a8565b935060ff1681518110619b1a57619b1a61ad29565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280619b679061b7a8565b935060ff1681518110619b7c57619b7c61ad29565b602002602001018190525082604051602001619b98919061b6a7565b604051602081830303815290604052828280619bb39061b7a8565b935060ff1681518110619bc857619bc861ad29565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280619c159061b7a8565b935060ff1681518110619c2a57619c2a61ad29565b6020026020010181905250619c3f878461a59c565b8282619c4a8161b7a8565b935060ff1681518110619c5f57619c5f61ad29565b602090810291909101015285515115619d0b5760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282619cb18161b7a8565b935060ff1681518110619cc657619cc661ad29565b6020026020010181905250619cdf86600001518461a59c565b8282619cea8161b7a8565b935060ff1681518110619cff57619cff61ad29565b60200260200101819052505b856080015115619d795760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282619d548161b7a8565b935060ff1681518110619d6957619d6961ad29565b6020026020010181905250619ddf565b8415619ddf5760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282619dbe8161b7a8565b935060ff1681518110619dd357619dd361ad29565b60200260200101819052505b60408601515115619e7b5760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282619e298161b7a8565b935060ff1681518110619e3e57619e3e61ad29565b60200260200101819052508560400151828280619e5a9061b7a8565b935060ff1681518110619e6f57619e6f61ad29565b60200260200101819052505b856060015115619ee55760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282619ec48161b7a8565b935060ff1681518110619ed957619ed961ad29565b60200260200101819052505b60008160ff1667ffffffffffffffff811115619f0357619f0361aa84565b604051908082528060200260200182016040528015619f3657816020015b6060815260200190600190039081619f215790505b50905060005b8260ff168160ff161015619f8f57838160ff1681518110619f5f57619f5f61ad29565b6020026020010151828260ff1681518110619f7c57619f7c61ad29565b6020908102919091010152600101619f3c565b50979650505050505050565b6040805180820190915260008082526020820152815183511015619fc0575081615dc7565b81518351602085015160009291619fd69161bd98565b619fe0919061bca7565b6020840151909150600190821461a001575082516020840151819020908220145b801561a01c5783518551869061a01890839061bca7565b9052505b50929392505050565b600080826000015161a049856000015186602001518660000151876020015161a357565b61a053919061bd98565b90505b8351602085015161a067919061bd98565b81116198b5578161a0778161c0c4565b925050826000015161a0ae85602001518361a092919061bca7565b865161a09e919061bca7565b838660000151876020015161a357565b61a0b8919061bd98565b905061a056565b6060600061a0cd848461a025565b61a0d890600161bd98565b67ffffffffffffffff81111561a0f05761a0f061aa84565b60405190808252806020026020018201604052801561a12357816020015b606081526020019060019003908161a10e5790505b50905060005b81518110156181ba5761a13f6184df8686619896565b82828151811061a1515761a15161ad29565b602090810291909101015260010161a129565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061a1ad577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831061a1d9576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061a1f757662386f26fc10000830492506010015b6305f5e100831061a20f576305f5e100830492506008015b612710831061a22357612710830492506004015b6064831061a235576064830492506002015b600a8310615dc75760010192915050565b60008085841161a34d576020841161a2f9576000841561a29157600161a26d86602061bca7565b61a27890600861bf55565b61a28390600261c053565b61a28d919061bca7565b1990505b835181168561a2a0898961bd98565b61a2aa919061bca7565b805190935082165b81811461a2e45787841161a2cc5787945050505050617deb565b8361a2d68161c0de565b94505082845116905061a2b2565b61a2ee878561bd98565b945050505050617deb565b83832061a306858861bca7565b61a310908761bd98565b91505b85821061a34b5784822080820361a3385761a32e868461bd98565b9350505050617deb565b61a34360018461bca7565b92505061a313565b505b5092949350505050565b6000838186851161a462576020851161a411576000851561a3a357600161a37f87602061bca7565b61a38a90600861bf55565b61a39590600261c053565b61a39f919061bca7565b1990505b8451811660008761a3b48b8b61bd98565b61a3be919061bca7565b855190915083165b82811461a4035781861061a3eb5761a3de8b8b61bd98565b9650505050505050617deb565b8561a3f58161c0c4565b96505083865116905061a3c6565b859650505050505050617deb565b508383206000905b61a423868961bca7565b821161a4605785832080820361a43f5783945050505050617deb565b61a44a60018561bd98565b935050818061a4589061c0c4565b92505061a419565b505b61a46c878761bd98565b979650505050505050565b6040805180820190915260008082526020820152600061a4a9856000015186602001518660000151876020015161a357565b60208087018051918601919091525190915061a4c5908261bca7565b83528451602086015161a4d8919061bd98565b810361a4e7576000855261a519565b8351835161a4f5919061bd98565b8551869061a50490839061bca7565b905250835161a513908261bd98565b60208601525b50909392505050565b6020811061a55a578151835261a53960208461bd98565b925061a54660208361bd98565b915061a55360208261bca7565b905061a522565b600019811561a58957600161a57083602061bca7565b61a57c9061010061c053565b61a586919061bca7565b90505b9151835183169219169190911790915250565b6060600061a5aa84846168be565b805160208083015160405193945061a5c49390910161c0f5565b60405160208183030381529060405291505092915050565b610c9f8061c14e83390190565b6112a68061cded83390190565b610ec28061e09383390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161a64661a64b565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161a6466040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b8181101561a6fd5783516001600160a01b031683526020938401939092019160010161a6d6565b509095945050505050565b60005b8381101561a72357818101518382015260200161a70b565b50506000910152565b6000815180845261a74481602086016020860161a708565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a854577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b8181101561a83a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261a82484865161a72c565b602095860195909450929092019160010161a7ea565b50919750505060209485019492909201915060010161a780565b50929695505050505050565b600081518084526020840193506020830160005b8281101561a8b45781517fffffffff000000000000000000000000000000000000000000000000000000001686526020958601959091019060010161a874565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a854577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516040875261a92a604088018261a72c565b905060208201519150868103602088015261a945818361a860565b96505050602093840193919091019060010161a8e6565b600082825180855260208501945060208160051b8301016020850160005b8381101561a9ac57601f1985840301885261a99683835161a72c565b602098890198909350919091019060010161a97a565b50909695505050505050565b602081526000616003602083018461a95c565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a854577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b038151168652602081015190506040602087015261aa4c604087018261a860565b955050602093840193919091019060010161a9f3565b6001600160a01b0383168152604060208201526000617deb604083018461a72c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561aad65761aad661aa84565b60405290565b60008067ffffffffffffffff84111561aaf75761aaf761aa84565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561ab265761ab2661aa84565b60405283815290508082840185101561ab3e57600080fd5b6181ba84602083018561a708565b600082601f83011261ab5d57600080fd5b6160038383516020850161aadc565b60006020828403121561ab7e57600080fd5b815167ffffffffffffffff81111561ab9557600080fd5b615dc38482850161ab4c565b602081526000616003602083018461a72c565b60006020828403121561abc657600080fd5b8151801515811461600357600080fd5b600181811c9082168061abea57607f821691505b6020821081036187ba577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b601f82111561293157806000526020600020601f840160051c8101602085101561ac4a5750805b601f840160051c820191505b81811015611daf576000815560010161ac56565b815167ffffffffffffffff81111561ac845761ac8461aa84565b61ac988161ac92845461abd6565b8461ac23565b6020601f82116001811461accc576000831561acb45750848201515b600019600385901b1c1916600184901b178455611daf565b600084815260208120601f198516915b8281101561acfc578785015182556020948501946001909201910161acdc565b508482101561ad1a5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081518084526020840193506020830160005b8281101561a8b457815186526020958601959091019060010161ad6c565b60608152600061ad9d606083018661a95c565b828103602084015261adaf818661ad58565b9150508215156040830152949350505050565b6001600160a01b0384511681526001600160a01b03831660208201526060604082015260006187a0606083018461a72c565b6001600160a01b03841681528260208201526060604082015260006187a0606083018461a72c565b828152604060208201526000617deb604083018461a72c565b6001600160a01b0381541682526001600160a01b03600182015416602083015260028101546040830152600060038201608060608501526000815461ae798161abd6565b806080880152600182166000811461ae98576001811461aed25761af06565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831660a089015260a082151560051b890101935061af06565b84600052602060002060005b8381101561aefd5781548a820160a0015260019091019060200161aede565b890160a0019450505b50919695505050505050565b6001600160a01b038416815260606020820152600061af34606083018561a72c565b8281036040840152616f6c818561ae35565b60006020828403121561af5857600080fd5b81516001600160a01b038116811461600357600080fd5b60608152600061af82606083018661a72c565b602083019490945250901515604090910152919050565b6001600160a01b038616815284602082015260a06040820152600061afc160a083018661a72c565b6060830194909452509015156080909101529392505050565b6001600160a01b03861681526001600160a01b038516602082015283604082015260a06060820152600061b01160a083018561a72c565b828103608084015261b023818561ae35565b98975050505050505050565b60006020828403121561b04157600080fd5b5051919050565b6001600160a01b03851681526001600160a01b0384166020820152826040820152608060608201526000616f6c608083018461a72c565b6001600160a01b038516815260806020820152600061b0a1608083018661a95c565b828103604084015261b0b3818661ad58565b915050821515606083015295945050505050565b6001600160a01b0383168152604060208201526000617deb604083018461ae35565b83815260606020820152600061af34606083018561a72c565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161b13a81601a85016020880161a708565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161b17781601c84016020880161a708565b01601c01949350505050565b6000835161b19581846020880161a708565b83519083019061b1a981836020880161a708565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161b1ea81601a85016020880161a708565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161b22781603384016020880161a708565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b6001600160a01b03841681526001600160a01b03831660208201526060604082015260006187a0606083018461a72c565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000616003608083018461a72c565b60006020828403121561b2e757600080fd5b815167ffffffffffffffff81111561b2fe57600080fd5b8201601f8101841361b30f57600080fd5b615dc38482516020840161aadc565b6000855161b330818460208a0161a708565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161b36a816001840160208a0161a708565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161b3a881600284016020890161a708565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161b3ea81600284016020880161a708565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061b435604083018461a72c565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161b4ac81601f85016020870161a708565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061b519604083018461a72c565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061b56b604083018461a72c565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161b5e281601485016020870161a708565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061b629604083018561a72c565b8281036020840152615fff818561a72c565b7f220000000000000000000000000000000000000000000000000000000000000081526000825161b67381600185016020870161a708565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161b6b981846020870161a708565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161b76c81604b85016020870161a708565b91909101604b0192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff810361b7be5761b7be61b779565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161b82581602985016020870161a708565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000616003608083018461a72c565b60006020828403121561b88b57600080fd5b815167ffffffffffffffff81111561b8a257600080fd5b82016060818503121561b8b457600080fd5b61b8bc61aab3565b81518060030b811461b8cd57600080fd5b8152602082015167ffffffffffffffff81111561b8e957600080fd5b61b8f58682850161ab4c565b602083015250604082015167ffffffffffffffff81111561b91557600080fd5b61b9218682850161ab4c565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161b98d81602185016020870161a708565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161bb7981602185016020880161a708565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161bbb681602e84016020880161a708565b01602e01949350505050565b6000825161bbd481846020870161a708565b9190910192915050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161b82581602985016020870161a708565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161bc9a81602285016020870161a708565b9190910160220192915050565b81810381811115615dc757615dc761b779565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161bcf281600e85016020870161a708565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b80820180821115615dc757615dc761b779565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161bde381601885016020880161a708565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161be2081601c84016020880161a708565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161bf2681846020870161a708565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b8082028115828204841417615dc757615dc761b779565b6001815b600184111561bfa75780850481111561bf8b5761bf8b61b779565b600184161561bf9957908102905b60019390931c92800261bf70565b935093915050565b60008261bfbe57506001615dc7565b8161bfcb57506000615dc7565b816001811461bfe1576002811461bfeb5761c007565b6001915050615dc7565b60ff84111561bffc5761bffc61b779565b50506001821b615dc7565b5060208310610133831016604e8410600b841016171561c02a575081810a615dc7565b61c037600019848461bf6c565b806000190482111561c04b5761c04b61b779565b029392505050565b6000616003838361bfaf565b81810360008312801583831316838312821617156198b5576198b561b779565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161c0b781601c85016020870161a708565b91909101601c0192915050565b6000600019820361c0d75761c0d761b779565b5060010190565b60008161c0ed5761c0ed61b779565b506000190190565b6000835161c10781846020880161a708565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161c14181600184016020880161a708565b0160010194935050505056fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212205f76808fb3dc6dacf4bd766b2d0bf9d6beb64856c952cec8e267368511bd936a64736f6c634300081a0033608060405234801561001057600080fd5b506040516112a63803806112a683398101604081905261002f91610110565b604051806040016040528060048152602001635a65746160e01b815250604051806040016040528060048152602001635a45544160e01b815250816003908161007891906101e2565b50600461008582826101e2565b5050506001600160a01b03821615806100a557506001600160a01b038116155b156100c35760405163e6c4247b60e01b815260040160405180910390fd5b600680546001600160a01b039384166001600160a01b031991821617909155600780549290931691161790556102a0565b80516001600160a01b038116811461010b57600080fd5b919050565b6000806040838503121561012357600080fd5b61012c836100f4565b915061013a602084016100f4565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061016d57607f821691505b60208210810361018d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101dd57806000526020600020601f840160051c810160208510156101ba5750805b601f840160051c820191505b818110156101da57600081556001016101c6565b50505b505050565b81516001600160401b038111156101fb576101fb610143565b61020f816102098454610159565b84610193565b6020601f821160018114610243576000831561022b5750848201515b600019600385901b1c1916600184901b1784556101da565b600084815260208120601f198516915b828110156102735787850151825560209485019460019092019101610253565b50848210156102915786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610ff7806102af6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806342966c68116100b257806379cc679011610081578063a9059cbb11610066578063a9059cbb1461028e578063bff9662a146102a1578063dd62ed3e146102c157600080fd5b806379cc67901461027357806395d89b411461028657600080fd5b806342966c68146102025780635b1125911461021557806370a0823114610235578063779e3b631461026b57600080fd5b80631e458bee116100ee5780631e458bee1461018857806323b872dd1461019b578063313ce567146101ae578063328a01d0146101bd57600080fd5b806306fdde0314610120578063095ea7b31461013e57806315d57fd41461016157806318160ddd14610176575b600080fd5b610128610307565b6040516101359190610d97565b60405180910390f35b61015161014c366004610e2c565b610399565b6040519015158152602001610135565b61017461016f366004610e56565b6103b3565b005b6002545b604051908152602001610135565b610174610196366004610e89565b61057e565b6101516101a9366004610ebc565b610631565b60405160128152602001610135565b6007546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610135565b610174610210366004610ef9565b610655565b6006546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a610243366004610f12565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b610174610662565b610174610281366004610e2c565b610786565b610128610837565b61015161029c366004610e2c565b610846565b6005546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a6102cf366004610e56565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461031690610f34565b80601f016020809104026020016040519081016040528092919081815260200182805461034290610f34565b801561038f5780601f106103645761010080835404028352916020019161038f565b820191906000526020600020905b81548152906001019060200180831161037257829003601f168201915b5050505050905090565b6000336103a7818585610854565b60019150505b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff1633148015906103f3575060065473ffffffffffffffffffffffffffffffffffffffff163314155b15610431576040517fcdfcef970000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82161580610468575073ffffffffffffffffffffffffffffffffffffffff8116155b1561049f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006805473ffffffffffffffffffffffffffffffffffffffff8481167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316811790935560058054918516919092161790556040805133815260208101929092527fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff910160405180910390a16040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f1b9352454524a57a51f24f67dc66d898f616922cd1f7a12d73570ece12b1975c910160405180910390a15050565b60055473ffffffffffffffffffffffffffffffffffffffff1633146105d1576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6105db8383610866565b808373ffffffffffffffffffffffffffffffffffffffff167fc263b302aec62d29105026245f19e16f8e0137066ccd4a8bd941f716bd4096bb8460405161062491815260200190565b60405180910390a3505050565b60003361063f8582856108c6565b61064a858585610995565b506001949350505050565b61065f3382610a40565b50565b60075473ffffffffffffffffffffffffffffffffffffffff1633146106b5576040517fe700765e000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b60065473ffffffffffffffffffffffffffffffffffffffff16610704576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0910160405180910390a1565b60055473ffffffffffffffffffffffffffffffffffffffff1633146107d9576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6107e38282610a9c565b8173ffffffffffffffffffffffffffffffffffffffff167f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b18260405161082b91815260200190565b60405180910390a25050565b60606004805461031690610f34565b6000336103a7818585610995565b6108618383836001610ab1565b505050565b73ffffffffffffffffffffffffffffffffffffffff82166108b6576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c260008383610bf9565b5050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461098f5781811015610980576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401610428565b61098f84848484036000610ab1565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166109e5576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8216610a35576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b610861838383610bf9565b73ffffffffffffffffffffffffffffffffffffffff8216610a90576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c282600083610bf9565b610aa78233836108c6565b6108c28282610a40565b73ffffffffffffffffffffffffffffffffffffffff8416610b01576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8316610b51576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160209081526040808320938716835292905220829055801561098f578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610beb91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8316610c31578060026000828254610c269190610f87565b90915550610ce39050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610cb7576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810182905260448101839052606401610428565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff8216610d0c57600280548290039055610d38565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161062491815260200190565b602081526000825180602084015260005b81811015610dc55760208186018101516040868401015201610da8565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e2757600080fd5b919050565b60008060408385031215610e3f57600080fd5b610e4883610e03565b946020939093013593505050565b60008060408385031215610e6957600080fd5b610e7283610e03565b9150610e8060208401610e03565b90509250929050565b600080600060608486031215610e9e57600080fd5b610ea784610e03565b95602085013595506040909401359392505050565b600080600060608486031215610ed157600080fd5b610eda84610e03565b9250610ee860208501610e03565b929592945050506040919091013590565b600060208284031215610f0b57600080fd5b5035919050565b600060208284031215610f2457600080fd5b610f2d82610e03565b9392505050565b600181811c90821680610f4857607f821691505b602082108103610f81577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156103ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220e8a1f6a00b1b9c77fd6d8724e3829463441aaedd6b65190c6dc6c18bcc5810e364736f6c634300081a00336080604052348015600f57600080fd5b506001600055610e9e806100246000396000f3fe60806040526004361061006e5760003560e01c8063c51316911161004b578063c5131691146100d5578063c9028a36146100f5578063e04d4f9714610115578063f05b6abf1461012857005b8063357fc5a214610077578063676cc054146100975780636ed70169146100c057005b3661007557005b005b34801561008357600080fd5b506100756100923660046106ec565b610148565b6100aa6100a5366004610728565b6101de565b6040516100b79190610823565b60405180910390f35b3480156100cc57600080fd5b50610075610222565b3480156100e157600080fd5b506100756100f03660046106ec565b610257565b34801561010157600080fd5b50610075610110366004610836565b610332565b610075610123366004610996565b61036e565b34801561013457600080fd5b50610075610143366004610a82565b6103b2565b6101506103e7565b61017273ffffffffffffffffffffffffffffffffffffffff831633838661042a565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101d96001600055565b505050565b6040516060907f3658b46bab672c7672b69c2f0feda706eabdb7d2231421c96e9049b2db5e7eee90600090a1506040805160208101909152600081525b9392505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b61025f6103e7565b600061026c600285610b6c565b9050806000036102a8576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102ca73ffffffffffffffffffffffffffffffffffffffff841633848461042a565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101d96001600055565b7f689a5a5cb55e795ffe4cd8b419cd3bb0a3373974c54d25f64e734d7388b93e9b3382604051610363929190610bf0565b60405180910390a150565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa33348585856040516103a5959493929190610ce2565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103a59493929190610d6c565b600260005403610423576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526104bf9085906104c5565b50505050565b60006104e773ffffffffffffffffffffffffffffffffffffffff841683610560565b9050805160001415801561050c57508080602001905181019061050a9190610e2f565b155b156101d9576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061021b83836000846000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105939190610e4c565b60006040518083038185875af1925050503d80600081146105d0576040519150601f19603f3d011682016040523d82523d6000602084013e6105d5565b606091505b50915091506105e58683836105ef565b9695505050505050565b606082610604576105ff8261067e565b61021b565b8151158015610628575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610677576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610557565b508061021b565b80511561068e5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106e757600080fd5b919050565b60008060006060848603121561070157600080fd5b83359250610711602085016106c3565b915061071f604085016106c3565b90509250925092565b6000806000838503604081121561073e57600080fd5b602081121561074c57600080fd5b50839250602084013567ffffffffffffffff81111561076a57600080fd5b8401601f8101861361077b57600080fd5b803567ffffffffffffffff81111561079257600080fd5b8660208284010111156107a457600080fd5b939660209190910195509293505050565b60005b838110156107d05781810151838201526020016107b8565b50506000910152565b600081518084526107f18160208601602086016107b5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061021b60208301846107d9565b60006020828403121561084857600080fd5b813567ffffffffffffffff81111561085f57600080fd5b82016080818503121561021b57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156108e7576108e7610871565b604052919050565b600082601f83011261090057600080fd5b813567ffffffffffffffff81111561091a5761091a610871565b61094b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016108a0565b81815284602083860101111561096057600080fd5b816020850160208301376000918101602001919091529392505050565b80151581146106c057600080fd5b80356106e78161097d565b6000806000606084860312156109ab57600080fd5b833567ffffffffffffffff8111156109c257600080fd5b6109ce868287016108ef565b9350506020840135915060408401356109e68161097d565b809150509250925092565b600067ffffffffffffffff821115610a0b57610a0b610871565b5060051b60200190565b600082601f830112610a2657600080fd5b8135610a39610a34826109f1565b6108a0565b8082825260208201915060208360051b860101925085831115610a5b57600080fd5b602085015b83811015610a78578035835260209283019201610a60565b5095945050505050565b600080600060608486031215610a9757600080fd5b833567ffffffffffffffff811115610aae57600080fd5b8401601f81018613610abf57600080fd5b8035610acd610a34826109f1565b8082825260208201915060208360051b850101925088831115610aef57600080fd5b602084015b83811015610b3157803567ffffffffffffffff811115610b1357600080fd5b610b228b6020838901016108ef565b84525060209283019201610af4565b509550505050602084013567ffffffffffffffff811115610b5157600080fd5b610b5d86828701610a15565b92505061071f6040850161098b565b600082610ba2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015273ffffffffffffffffffffffffffffffffffffffff610c2e836106c3565b16604082015273ffffffffffffffffffffffffffffffffffffffff610c55602084016106c3565b166060820152600080604084013590508060808401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610ca157600080fd5b830160208101903567ffffffffffffffff811115610cbe57600080fd5b803603821315610ccd57600080fd5b608060a08501526105e560c085018284610ba7565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610d1760a08301866107d9565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610d62578151865260209586019590910190600101610d44565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610dff577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610dea8583516107d9565b94506020938401939190910190600101610db0565b505050508281036040840152610e158186610d30565b915050610e26606083018415159052565b95945050505050565b600060208284031215610e4157600080fd5b815161021b8161097d565b60008251610e5e8184602087016107b5565b919091019291505056fea2646970667358221220dbbcdb2ae8ea201fd0567f815d9a6ce082b3a1b6ed3f6fce312e955f9aa11e1364736f6c634300081a0033a264697066735822122018ae23e769901420877149fccf212cb56d9104a001986c8d61233942cdf64a6c64736f6c634300081a0033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061ef8a8061003c6000396000f3fe608060405234801561001057600080fd5b50600436106102f45760003560e01c806385f438c111610191578063ce5871e1116100e3578063e63ab1e911610097578063fa18c09b11610071578063fa18c09b14610527578063fa7626d41461052f578063fe7bdbb21461053c57600080fd5b8063e63ab1e9146104f0578063e6afc79014610517578063f68bd1c01461051f57600080fd5b8063d38b66cd116100c8578063d38b66cd146104d8578063dd51e82f146104e0578063e20c9f71146104e857600080fd5b8063ce5871e1146104c8578063cebad2a6146104d057600080fd5b8063a783c78911610145578063b5508aa91161011f578063b5508aa9146104a0578063ba414fa6146104a8578063ccf20616146104c057600080fd5b8063a783c78914610469578063b0464fdc14610490578063b124dbf51461049857600080fd5b8063a217fddf11610176578063a217fddf14610451578063a397ffd214610459578063a56f7a4b1461046157600080fd5b806385f438c114610415578063916a17c61461043c57600080fd5b806344671b941161024a57806366d9a9a0116101fe5780637d7f772a116101d85780637d7f772a146103f05780637ebf744f146103f857806385226c811461040057600080fd5b806366d9a9a0146103cb5780636bdd212b146103e05780637a380ebf146103e857600080fd5b806351010e491161022f57806351010e491461038657806352ff59391461038e5780635d62c8601461039657600080fd5b806344671b94146103765780634df42da11461037e57600080fd5b80631855c337116102ac5780633e5e3c23116102865780633e5e3c231461035e5780633f7286f41461036657806343fd8c7d1461036e57600080fd5b80631855c337146103235780631ed7831c1461032b5780632ade38801461034957600080fd5b80630a9254e4116102dd5780630a9254e41461030b5780631226c65514610313578063130daf591461031b57600080fd5b806304b974f9146102f9578063070f2ad014610303575b600080fd5b610301610544565b005b610301610740565b610301610931565b610301611360565b6103016114d5565b61030161168c565b610333611806565b604051610340919061a6bc565b60405180910390f35b610351611868565b604051610340919061a758565b6103336119aa565b610333611a0a565b610301611a6a565b610301611db6565b610301612079565b6103016121ee565b6103016123ce565b6103bd7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b604051908152602001610340565b6103d3612936565b604051610340919061a8be565b610301612aa3565b610301612c62565b610301613282565b610301613572565b6104086136ec565b604051610340919061a9b8565b6103bd7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6104446137bc565b604051610340919061a9cb565b6103bd600081565b6103016138a2565b610301613bb5565b6103bd7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b610444613cf2565b610301613dd8565b61040861405c565b6104b061412c565b6040519015158152602001610340565b610301614200565b61030161433d565b6103016144b2565b6103016146c6565b61030161480c565b610333614fc7565b6103bd7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b610301615027565b610301615272565b61030161562a565b601f546104b09060ff1681565b61030161596f565b6040805160048082526024820183526020820180516001600160e01b03167f6ed7016900000000000000000000000000000000000000000000000000000000179052602754925163ca669fa760e01b81529192737109709ecfa91a80626ff3989d68f67f5b1dd12d9263ca669fa7926105d6926001600160a01b031691016001600160a01b0391909116815260200190565b600060405180830381600087803b1580156105f057600080fd5b505af1158015610604573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561068d57600080fd5b505af11580156106a1573d6000803e3d6000fd5b5050601f546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b03169250631cff79cd91506106f590600090859060040161aa62565b6000604051808303816000875af1158015610714573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261073c919081019061ab6c565b5050565b6027546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156107b257600080fd5b505af11580156107c6573d6000803e3d6000fd5b5050602754604080516001600160a01b039092166024830152600060448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061087d919060040161aba1565b600060405180830381600087803b15801561089757600080fd5b505af11580156108ab573d6000803e3d6000fd5b5050601f546025546040517f950837aa0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261010090920416925063950837aa91506024015b600060405180830381600087803b15801561091757600080fd5b505af115801561092b573d6000803e3d6000fd5b50505050565b602580547fffffffffffffffffffffffff000000000000000000000000000000000000000090811630179091556026805482166112341790556027805482166156781790556028805490911661987617905560405161098f9061a5dc565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610a14573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556027546040519116908190610a5d9061a5e9565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015610a90573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c000000000000000000000000000000000000602082015260275460255492519086169481019490945260448401929092529092166064820152600091610b6f916084015b60408051601f198184030181529190526020810180516001600160e01b03167fc0c53b8b00000000000000000000000000000000000000000000000000000000179052615dae565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0384811682029290921792839055604080518082018252601081527f4552433230437573746f64792e736f6c0000000000000000000000000000000060208201526027546025549251939095048416602484015293831660448301529091166064820152919250610c1291608401610b27565b602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383811691909117909155604080518082018252601a81527f5a657461436f6e6e6563746f724e6f6e4e61746976652e736f6c0000000000006020820152601f546024805460275460255495516101009094048716928401929092528516604483015284166064820152919092166084820152919250610d049160a40160408051601f198184030181529190526020810180516001600160e01b03167ff8c8765e00000000000000000000000000000000000000000000000000000000179052615dae565b602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038381169190911790915560275460405163ca669fa760e01b815291166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015610d8f57600080fd5b505af1158015610da3573d6000803e3d6000fd5b5050602480546027546022546040517f15d57fd40000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152908216938101939093521692506315d57fd49150604401600060405180830381600087803b158015610e1657600080fd5b505af1158015610e2a573d6000803e3d6000fd5b50505050604051610e3a9061a5f6565b604051809103906000f080158015610e56573d6000803e3d6000fd5b50602080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556027546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b158015610f0257600080fd5b505af1158015610f16573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610f8c57600080fd5b505af1158015610fa0573d6000803e3d6000fd5b5050601f546021546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261010090920416925063ae7a3a6f9150602401600060405180830381600087803b15801561100b57600080fd5b505af115801561101f573d6000803e3d6000fd5b5050601f546022546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526101009092041692506310188aef9150602401600060405180830381600087803b15801561108a57600080fd5b505af115801561109e573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561110057600080fd5b505af1158015611114573d6000803e3d6000fd5b50506023546025546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f42406024820152911692506340c10f199150604401600060405180830381600087803b15801561118357600080fd5b505af1158015611197573d6000803e3d6000fd5b50506023546021546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12060248201529116925063a9059cbb91506044016020604051808303816000875af115801561120b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122f919061abb4565b506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b1580156112b057600080fd5b505af11580156112c4573d6000803e3d6000fd5b5050604080516080810182526025546001600160a01b039081168252602354811660208084019182526001848601908152855191820190955260008152606084018190528351602d80549185167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161781559251602e8054919095169116179092559251602f5590935090915060309061092b908261ac6a565b6025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156113d257600080fd5b505af11580156113e6573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561146f57600080fd5b505af1158015611483573d6000803e3d6000fd5b5050601f546040517fae7a3a6f000000000000000000000000000000000000000000000000000000008152600060048201526101009091046001600160a01b0316925063ae7a3a6f91506024016108fd565b6040805160048082526024820183526020820180516001600160e01b03167fc9028a3600000000000000000000000000000000000000000000000000000000179052602754925163ca669fa760e01b81529192737109709ecfa91a80626ff3989d68f67f5b1dd12d9263ca669fa792611567926001600160a01b031691016001600160a01b0391909116815260200190565b600060405180830381600087803b15801561158157600080fd5b505af1158015611595573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527ff3459a96000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b15801561161f57600080fd5b505af1158015611633573d6000803e3d6000fd5b5050601f546020546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526101009092046001600160a01b039081169450631cff79cd93506106f592911690859060040161aa62565b6025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156116fe57600080fd5b505af1158015611712573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fb337f378000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b15801561179c57600080fd5b505af11580156117b0573d6000803e3d6000fd5b5050601f546021546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261010090920416925063ae7a3a6f91506024016108fd565b6060601680548060200260200160405190810160405280929190818152602001828054801561185e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611840575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b828210156119a157600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561198a5783829060005260206000200180546118fd9061abd6565b80601f01602080910402602001604051908101604052809291908181526020018280546119299061abd6565b80156119765780601f1061194b57610100808354040283529160200191611976565b820191906000526020600020905b81548152906001019060200180831161195957829003601f168201915b5050505050815260200190600101906118de565b50505050815250508152602001906001019061188c565b50505050905090565b6060601880548060200260200160405190810160405280929190818152602001828054801561185e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611840575050505050905090565b6060601780548060200260200160405190810160405280929190818152602001828054801561185e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611840575050505050905090565b604080516001808252818301909252600091816020015b6060815260200190600190039081611a815790505090506040518060400160405280600f81526020017f48656c6c6f2c20466f756e64727921000000000000000000000000000000000081525081600081518110611ae157611ae161ad29565b6020908102919091010152604080516001808252818301909252600091816020016020820280368337019050509050602a81600081518110611b2557611b2561ad29565b6020908102919091010152604051600190600090611b4b9085908590859060240161ad8a565b60408051601f198184030181529181526020820180516001600160e01b03167ff05b6abf00000000000000000000000000000000000000000000000000000000179052602554905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611be957600080fd5b505af1158015611bfd573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250611cd3919060040161aba1565b600060405180830381600087803b158015611ced57600080fd5b505af1158015611d01573d6000803e3d6000fd5b5050601f54604080516020808201835261012382525491517f38e225270000000000000000000000000000000000000000000000000000000081526101009093046001600160a01b0390811695506338e225279450611d689391921690869060040161adc2565b6000604051808303816000875af1158015611d87573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611daf919081019061ab6c565b5050505050565b604080516004808252602482018352602080830180516001600160e01b03167f6ed70169000000000000000000000000000000000000000000000000000000001790525492517ff30c7ba30000000000000000000000000000000000000000000000000000000081529192737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba392611e56926001600160a01b03169160009187910161adf4565b600060405180830381600087803b158015611e7057600080fd5b505af1158015611e84573d6000803e3d6000fd5b50506020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015611efd57600080fd5b505af1158015611f11573d6000803e3d6000fd5b5050601f546040516101009091046001600160a01b031681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09250602001905060405180910390a1601f546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611fd357600080fd5b505af1158015611fe7573d6000803e3d6000fd5b50506020546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f915061202d90600090859061ae1c565b60405180910390a260275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401611605565b6025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156120eb57600080fd5b505af11580156120ff573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561218857600080fd5b505af115801561219c573d6000803e3d6000fd5b5050601f546040517f950837aa000000000000000000000000000000000000000000000000000000008152600060048201526101009091046001600160a01b0316925063950837aa91506024016108fd565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152670de0b6b3a76400009060009060250160408051808303601f190181529082905260275463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561228e57600080fd5b505af11580156122a2573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561232b57600080fd5b505af115801561233f573d6000803e3d6000fd5b5050601f546040517fcb7ba8e50000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b0316925063cb7ba8e591508490612398906000908690602d9060040161af12565b6000604051808303818588803b1580156123b157600080fd5b505af11580156123c5573d6000803e3d6000fd5b50505050505050565b601f546040517f91d148540000000000000000000000000000000000000000000000000000000081527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb600482015261432160248201819052916000916101009091046001600160a01b0316906391d1485490604401602060405180830381865afa158015612461573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612485919061abb4565b905061249081615dcd565b601f546027546040517f91d148540000000000000000000000000000000000000000000000000000000081527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60048201526001600160a01b0391821660248201526000926101009004909116906391d1485490604401602060405180830381865afa158015612524573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612548919061abb4565b905061255381615e47565b6025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156125c557600080fd5b505af11580156125d9573d6000803e3d6000fd5b5050601f546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561265657600080fd5b505af115801561266a573d6000803e3d6000fd5b5050602754604080516001600160a01b03928316815291871660208301527f3a7b8d6372645f474fe60c115a2ef21421306a3ed4664fa0023c461413c08579935001905060405180910390a1601f546040517f950837aa0000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526101009092049091169063950837aa90602401600060405180830381600087803b15801561271c57600080fd5b505af1158015612730573d6000803e3d6000fd5b505050506127b483601f60019054906101000a90046001600160a01b03166001600160a01b0316635b1125916040518163ffffffff1660e01b8152600401602060405180830381865afa15801561278b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127af919061af46565b615e99565b601f546040517f91d148540000000000000000000000000000000000000000000000000000000081527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60048201526001600160a01b038581166024830152610100909204909116906391d1485490604401602060405180830381865afa158015612843573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612867919061abb4565b915061287282615e47565b601f546027546040517f91d148540000000000000000000000000000000000000000000000000000000081527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60048201526001600160a01b03918216602482015261010090920416906391d1485490604401602060405180830381865afa158015612902573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612926919061abb4565b905061293181615dcd565b505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156119a1578382906000526020600020906002020160405180604001604052908160008201805461298d9061abd6565b80601f01602080910402602001604051908101604052809291908181526020018280546129b99061abd6565b8015612a065780601f106129db57610100808354040283529160200191612a06565b820191906000526020600020905b8154815290600101906020018083116129e957829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015612a8b57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411612a4d5790505b5050505050815250508152602001906001019061295a565b6040805160048082526024820183526020820180516001600160e01b03167f6ed7016900000000000000000000000000000000000000000000000000000000179052602754925163ca669fa760e01b81529192737109709ecfa91a80626ff3989d68f67f5b1dd12d9263ca669fa792612b35926001600160a01b031691016001600160a01b0391909116815260200190565b600060405180830381600087803b158015612b4f57600080fd5b505af1158015612b63573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015612bec57600080fd5b505af1158015612c00573d6000803e3d6000fd5b5050601f5460408051602081018252610123815290517f38e225270000000000000000000000000000000000000000000000000000000081526101009092046001600160a01b031693506338e2252792506106f591600090869060040161adc2565b601f54604080518082018252601981527f4761746577617945564d55706772616465546573742e736f6c00000000000000602080830191909152825190810190925260008252602554612cc7936001600160a01b036101009091048116939116615f22565b601f54604080517fdda79b7500000000000000000000000000000000000000000000000000000000815290516101009092046001600160a01b031691600091839163dda79b75916004808201926020929091908290030181865afa158015612d33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d57919061af46565b90506000601f60019054906101000a90046001600160a01b03166001600160a01b0316635b1125916040518163ffffffff1660e01b8152600401602060405180830381865afa158015612dae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dd2919061af46565b604080518082018252600f81527f48656c6c6f2c20466f756e6472792100000000000000000000000000000000006020820152905191925090602a90600190670de0b6b3a764000090600090612e309086908690869060240161af6f565b60408051601f19818403018152918152602080830180516001600160e01b03167fe04d4f97000000000000000000000000000000000000000000000000000000001790525490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391612ed6916001600160a01b0391909116908690869060040161adf4565b600060405180830381600087803b158015612ef057600080fd5b505af1158015612f04573d6000803e3d6000fd5b50506020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015612f7d57600080fd5b505af1158015612f91573d6000803e3d6000fd5b505050507f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa601f60019054906101000a90046001600160a01b031683878787604051612fe195949392919061af99565b60405180910390a1601f546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561306257600080fd5b505af1158015613076573d6000803e3d6000fd5b50506020546040516001600160a01b0390911692507f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e854691506130bb908590859061ae1c565b60405180910390a260275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561311c57600080fd5b505af1158015613130573d6000803e3d6000fd5b50506020546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b03808d169450631cff79cd9350869261318292911690869060040161aa62565b60006040518083038185885af11580156131a0573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526131c9919081019061ab6c565b5061322187601f60019054906101000a90046001600160a01b03166001600160a01b031663dda79b756040518163ffffffff1660e01b8152600401602060405180830381865afa15801561278b573d6000803e3d6000fd5b61327886601f60019054906101000a90046001600160a01b03166001600160a01b0316635b1125916040518163ffffffff1660e01b8152600401602060405180830381865afa15801561278b573d6000803e3d6000fd5b5050505050505050565b604080516001808252818301909252600091816020015b60608152602001906001900390816132995790505090506040518060400160405280600f81526020017f48656c6c6f2c20466f756e647279210000000000000000000000000000000000815250816000815181106132f9576132f961ad29565b6020908102919091010152604080516001808252818301909252600091816020016020820280368337019050509050602a8160008151811061333d5761333d61ad29565b60209081029190910101526040516001906000906133639085908590859060240161ad8a565b60408051601f198184030181529181526020820180516001600160e01b03167ff05b6abf00000000000000000000000000000000000000000000000000000000179052602554905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561340157600080fd5b505af1158015613415573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506134eb919060040161aba1565b600060405180830381600087803b15801561350557600080fd5b505af1158015613519573d6000803e3d6000fd5b5050601f546020546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526101009092046001600160a01b039081169450631cff79cd9350611d6892911690859060040161aa62565b6025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156135e457600080fd5b505af11580156135f8573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f0c8dc016000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b15801561368257600080fd5b505af1158015613696573d6000803e3d6000fd5b5050601f546022546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526101009092041692506310188aef91506024016108fd565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156119a157838290600052602060002001805461372f9061abd6565b80601f016020809104026020016040519081016040528092919081815260200182805461375b9061abd6565b80156137a85780601f1061377d576101008083540402835291602001916137a8565b820191906000526020600020905b81548152906001019060200180831161378b57829003601f168201915b505050505081526020019060010190613710565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156119a15760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561388a57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161384c5790505b505050505081525050815260200190600101906137e0565b6020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561391757600080fd5b505af115801561392b573d6000803e3d6000fd5b50506040517f3658b46bab672c7672b69c2f0feda706eabdb7d2231421c96e9049b2db5e7eee925060009150a1601f546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156139d157600080fd5b505af11580156139e5573d6000803e3d6000fd5b505060208054604080518082018252600181527f310000000000000000000000000000000000000000000000000000000000000093810193909352516001600160a01b0390911693507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9250613a5d9160009161ae1c565b60405180910390a260275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613abe57600080fd5b505af1158015613ad2573d6000803e3d6000fd5b5050601f5460408051602080820183526101238252805483518085018552600181527f31000000000000000000000000000000000000000000000000000000000000009281019290925292517f38e225270000000000000000000000000000000000000000000000000000000081526101009094046001600160a01b0390811696506338e225279550613b6b949293169160040161adc2565b6000604051808303816000875af1158015613b8a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613bb2919081019061ab6c565b50565b6027546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b158015613c2757600080fd5b505af1158015613c3b573d6000803e3d6000fd5b5050602754604080516001600160a01b039092166024830152600060448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250611782919060040161aba1565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156119a15760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015613dc057602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411613d825790505b50505050508152505081526020019060010190613d16565b602354602654604051620186a0602482018190526001600160a01b03938416604483015292909116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a200000000000000000000000000000000000000000000000000000000179052602554905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613ea957600080fd5b505af1158015613ebd573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b960448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250613f93919060040161aba1565b600060405180830381600087803b158015613fad57600080fd5b505af1158015613fc1573d6000803e3d6000fd5b5050601f546023546026546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526101009093046001600160a01b03908116955063aa0c0fc19450614026939281169291169087908790602d9060040161afda565b600060405180830381600087803b15801561404057600080fd5b505af1158015614054573d6000803e3d6000fd5b505050505050565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156119a157838290600052602060002001805461409f9061abd6565b80601f01602080910402602001604051908101604052809291908181526020018280546140cb9061abd6565b80156141185780601f106140ed57610100808354040283529160200191614118565b820191906000526020600020905b8154815290600101906020018083116140fb57829003601f168201915b505050505081526020019060010190614080565b60085460009060ff1615614144575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa1580156141d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141f9919061b02f565b1415905090565b6027546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b15801561427257600080fd5b505af1158015614286573d6000803e3d6000fd5b5050602754604080516001600160a01b039092166024830152600060448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250613668919060040161aba1565b6025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156143af57600080fd5b505af11580156143c3573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561444c57600080fd5b505af1158015614460573d6000803e3d6000fd5b5050601f546040517f10188aef000000000000000000000000000000000000000000000000000000008152600060048201526101009091046001600160a01b031692506310188aef91506024016108fd565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152670de0b6b3a76400009060009060250160408051808303601f190181529082905260255463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561455257600080fd5b505af1158015614566573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061463c919060040161aba1565b600060405180830381600087803b15801561465657600080fd5b505af115801561466a573d6000803e3d6000fd5b5050601f546020546040517fcb7ba8e50000000000000000000000000000000000000000000000000000000081526001600160a01b036101009093048316945063cb7ba8e5935086926123989216908690602d9060040161af12565b60408051602081018252600080825291516146e691607b9160240161aa62565b60408051601f198184030181529181526020820180516001600160e01b03167f676cc05400000000000000000000000000000000000000000000000000000000179052602754905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561478457600080fd5b505af1158015614798573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fed699775000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401611605565b60285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561486557600080fd5b505af1158015614879573d6000803e3d6000fd5b5050602854604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061494f919060040161aba1565b600060405180830381600087803b15801561496957600080fd5b505af115801561497d573d6000803e3d6000fd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156149d157600080fd5b505af11580156149e5573d6000803e3d6000fd5b505060285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015614a4257600080fd5b505af1158015614a56573d6000803e3d6000fd5b5050602854604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250614b2c919060040161aba1565b600060405180830381600087803b158015614b4657600080fd5b505af1158015614b5a573d6000803e3d6000fd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015614bae57600080fd5b505af1158015614bc2573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015614c1f57600080fd5b505af1158015614c33573d6000803e3d6000fd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b158015614c8757600080fd5b505af1158015614c9b573d6000803e3d6000fd5b5050604080516004808252602480830184526020830180516001600160e01b03167f6ed701690000000000000000000000000000000000000000000000000000000017905292517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd93c06650000000000000000000000000000000000000000000000000000000091810191909152909350737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09101600060405180830381600087803b158015614d6857600080fd5b505af1158015614d7c573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015614dd957600080fd5b505af1158015614ded573d6000803e3d6000fd5b5050601f546020546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526101009092046001600160a01b039081169450631cff79cd9350614e4692911690859060040161aa62565b6000604051808303816000875af1158015614e65573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614e8d919081019061ab6c565b5060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614ee757600080fd5b505af1158015614efb573d6000803e3d6000fd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015614f4f57600080fd5b505af1158015614f63573d6000803e3d6000fd5b50506020546040517ff30c7ba3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f30c7ba39250611e56916001600160a01b031690600090869060040161adf4565b6060601580548060200260200160405190810160405280929190818152602001828054801561185e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611840575050505050905090565b602354602654604051620186a0602482018190526001600160a01b03938416604483015292909116606482015260009060840160408051601f198184030181529181526020820180516001600160e01b03167f357fc5a200000000000000000000000000000000000000000000000000000000179052602554905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156150f857600080fd5b505af115801561510c573d6000803e3d6000fd5b5050602554604080516001600160a01b0390921660248301527f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b960448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506151e2919060040161aba1565b600060405180830381600087803b1580156151fc57600080fd5b505af1158015615210573d6000803e3d6000fd5b5050601f546023546026546040517f5131ab590000000000000000000000000000000000000000000000000000000081526101009093046001600160a01b039081169550635131ab59945061402693928116929116908790879060040161b048565b604080516001808252818301909252600091816020015b60608152602001906001900390816152895790505090506040518060400160405280600f81526020017f48656c6c6f2c20466f756e647279210000000000000000000000000000000000815250816000815181106152e9576152e961ad29565b6020908102919091010152604080516001808252818301909252600091816020016020820280368337019050509050602a8160008151811061532d5761532d61ad29565b60209081029190910101526040516001906000906153539085908590859060240161ad8a565b60408051601f19818403018152918152602080830180516001600160e01b03167ff05b6abf000000000000000000000000000000000000000000000000000000001790525490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba3916153fa916001600160a01b039190911690600090869060040161adf4565b600060405180830381600087803b15801561541457600080fd5b505af1158015615428573d6000803e3d6000fd5b50506020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156154a157600080fd5b505af11580156154b5573d6000803e3d6000fd5b505050507f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146601f60019054906101000a90046001600160a01b0316858585604051615503949392919061b07f565b60405180910390a1601f546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561558457600080fd5b505af1158015615598573d6000803e3d6000fd5b50506020546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f91506155de90600090859061ae1c565b60405180910390a260275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024016134eb565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152670de0b6b3a76400009060009060250160408051601f198184030181529190526020549091506001600160a01b03163161568e816000615f37565b6020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561570357600080fd5b505af1158015615717573d6000803e3d6000fd5b505050507f689a5a5cb55e795ffe4cd8b419cd3bb0a3373974c54d25f64e734d7388b93e9b601f60019054906101000a90046001600160a01b0316602d60405161576292919061b0c7565b60405180910390a1601f546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156157e357600080fd5b505af11580156157f7573d6000803e3d6000fd5b5050602054604051600093506001600160a01b0390911691507fde7603a6ed5d07c9f43597ccfe9043d15b66d3284f0de321f5cdf56329e6e0359061584a90670de0b6b3a7640000908790602d9061b0e9565b60405180910390a360275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156158ab57600080fd5b505af11580156158bf573d6000803e3d6000fd5b5050601f546020546040517fcb7ba8e50000000000000000000000000000000000000000000000000000000081526001600160a01b036101009093048316945063cb7ba8e59350879261591b9216908790602d9060040161af12565b6000604051808303818588803b15801561593457600080fd5b505af1158015615948573d6000803e3d6000fd5b50506020546001600160a01b031631925061092b9150829050670de0b6b3a7640000615f37565b60408051808201909152600f81527f48656c6c6f2c20466f756e64727921000000000000000000000000000000000060208083019190915254602a90600190670de0b6b3a7640000906159ce906000906001600160a01b031631615f37565b60008484846040516024016159e59392919061af6f565b60408051601f19818403018152918152602080830180516001600160e01b03167fe04d4f97000000000000000000000000000000000000000000000000000000001790525490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391615a93916001600160a01b039190911690670de0b6b3a764000090869060040161adf4565b600060405180830381600087803b158015615aad57600080fd5b505af1158015615ac1573d6000803e3d6000fd5b50506020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015615b3a57600080fd5b505af1158015615b4e573d6000803e3d6000fd5b505050507f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa601f60019054906101000a90046001600160a01b031683878787604051615b9e95949392919061af99565b60405180910390a1601f546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015615c1f57600080fd5b505af1158015615c33573d6000803e3d6000fd5b50506020546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150615c8090670de0b6b3a764000090859061ae1c565b60405180910390a260275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015615ce157600080fd5b505af1158015615cf5573d6000803e3d6000fd5b5050601f546020546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b0361010090930483169450631cff79cd93508692615d4e921690869060040161aa62565b60006040518083038185885af1158015615d6c573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052615d95919081019061ab6c565b50602054611daf9083906001600160a01b031631615f37565b6000615db861a603565b615dc3848483615f8f565b9150505b92915050565b6040517fa59828850000000000000000000000000000000000000000000000000000000081528115156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063a5982885906024015b60006040518083038186803b158015615e3357600080fd5b505afa158015611daf573d6000803e3d6000fd5b6040517f0c9fd5810000000000000000000000000000000000000000000000000000000081528115156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90630c9fd58190602401615e1b565b6040517f515361f60000000000000000000000000000000000000000000000000000000081526001600160a01b03808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f6906044015b60006040518083038186803b158015615f0e57600080fd5b505afa158015614054573d6000803e3d6000fd5b615f2a61a603565b611daf858585848661600a565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c5490604401615ef6565b600080615f9c858461610a565b9050615fff6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001615fea92919061aa62565b60405160208183030381529060405285616116565b9150505b9392505050565b6040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201528190737109709ecfa91a80626ff3989d68f67f5b1dd12d9081906306447d5690602401600060405180830381600087803b15801561607c57600080fd5b505af192505050801561608d575060015b6160a25761609d87878787616144565b6123c5565b6160ae87878787616144565b806001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156160e957600080fd5b505af11580156160fd573d6000803e3d6000fd5b5050505050505050505050565b6000616003838361615d565b60c0810151516000901561613a5761613384848460c00151616178565b9050616003565b616133848461631e565b60006161508483616409565b9050611daf858285616415565b600061616983836167df565b61600383836020015184616116565b6000806161836167eb565b9050600061619186836168be565b905060006161a88260600151836020015185616d64565b905060006161b883838989616f76565b905060006161c582617df3565b602081015181519192509060030b15616238578982604001516040516020016161ef92919061b102565b60408051601f19818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261622f9160040161aba1565b60405180910390fd5b600061627b6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001617fc2565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d906162ce90849060040161aba1565b602060405180830381865afa1580156162eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061630f919061af46565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc9259061637390879060040161aba1565b600060405180830381865afa158015616390573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526163b8919081019061ab6c565b905060006163e682856040516020016163d292919061b183565b6040516020818303038152906040526181c2565b90506001600160a01b038116615dc35784846040516020016161ef92919061b1b2565b600061616983836181d5565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201527fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61036024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90600090829063667f9d7090604401602060405180830381865afa1580156164b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906164d5919061b02f565b90508061667c5760006164e7866181e1565b604080518082018252600581527f352e302e3000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150616572905b604080518082018252600080825260209182015281518083019092528451825280850190820152906182c4565b8061657e575060008451115b15616601576040517f4f1ef2860000000000000000000000000000000000000000000000000000000081526001600160a01b03871690634f1ef286906165ca908890889060040161aa62565b600060405180830381600087803b1580156165e457600080fd5b505af11580156165f8573d6000803e3d6000fd5b50505050616676565b6040517f3659cfe60000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152871690633659cfe690602401600060405180830381600087803b15801561665d57600080fd5b505af1158015616671573d6000803e3d6000fd5b505050505b50611daf565b806000616688826181e1565b604080518082018252600581527f352e302e30000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506166ea90616545565b806166f6575060008551115b1561677b576040517f9623609d0000000000000000000000000000000000000000000000000000000081526001600160a01b03831690639623609d90616744908a908a908a9060040161b25d565b600060405180830381600087803b15801561675e57600080fd5b505af1158015616772573d6000803e3d6000fd5b505050506123c5565b6040517f99a88ec40000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015287811660248301528316906399a88ec490604401600060405180830381600087803b1580156160e957600080fd5b61073c828260006182d8565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c9061687290849060040161b28e565b600060405180830381865afa15801561688f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526168b7919081019061b2d5565b9250505090565b6168f06040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d905061693b6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b616944856183db565b60208201526000616954866187c0565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015616996573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526169be919081019061b2d5565b868385602001516040516020016169d8949392919061b31e565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190616a3090859060040161aba1565b600060405180830381865afa158015616a4d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616a75919081019061b2d5565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690616abd90849060040161b422565b602060405180830381865afa158015616ada573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616afe919061abb4565b616b1357816040516020016161ef919061b474565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890616b5890849060040161b506565b600060405180830381865afa158015616b75573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616b9d919081019061b2d5565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690616be490849060040161b558565b602060405180830381865afa158015616c01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616c25919061abb4565b15616cba576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890616c6f90849060040161b558565b600060405180830381865afa158015616c8c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616cb4919081019061b2d5565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001616cdf919061b5aa565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401616d0b92919061b616565b600060405180830381865afa158015616d28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616d50919081019061b2d5565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081616d805790505090506040518060400160405280600481526020017f677265700000000000000000000000000000000000000000000000000000000081525081600081518110616de057616de061ad29565b60200260200101819052506040518060400160405280600381526020017f2d726c000000000000000000000000000000000000000000000000000000000081525081600181518110616e3457616e3461ad29565b602002602001018190525084604051602001616e50919061b63b565b60405160208183030381529060405281600281518110616e7257616e7261ad29565b602002602001018190525082604051602001616e8e919061b6a7565b60405160208183030381529060405281600381518110616eb057616eb061ad29565b60200260200101819052506000616ec682617df3565b602080820151604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000008185019081528251808401845260008082529086015282518084019093529051825292810192909252919250616f579060408051808201825260008082526020918201528151808301909252845182528085019082015290618a43565b616f6c57856040516020016161ef919061b6e8565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015616fc6565b511590565b61713a57826020015115617082576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a40161622f565b8260c001511561713a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a40161622f565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161715357905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806171ae9061b7a8565b935060ff16815181106171c3576171c361ad29565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001617214919061b7c7565b60405160208183030381529060405282828061722f9061b7a8565b935060ff16815181106172445761724461ad29565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806172919061b7a8565b935060ff16815181106172a6576172a661ad29565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806172f39061b7a8565b935060ff16815181106173085761730861ad29565b602002602001018190525087602001518282806173249061b7a8565b935060ff16815181106173395761733961ad29565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806173869061b7a8565b935060ff168151811061739b5761739b61ad29565b6020908102919091010152875182826173b38161b7a8565b935060ff16815181106173c8576173c861ad29565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806174159061b7a8565b935060ff168151811061742a5761742a61ad29565b602002602001018190525061743e46618aa4565b82826174498161b7a8565b935060ff168151811061745e5761745e61ad29565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c6500000000000000000000000000000000008152508282806174ab9061b7a8565b935060ff16815181106174c0576174c061ad29565b6020026020010181905250868282806174d89061b7a8565b935060ff16815181106174ed576174ed61ad29565b60209081029190910101528551156176145760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261753e8161b7a8565b935060ff16815181106175535761755361ad29565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d906175a390899060040161aba1565b600060405180830381865afa1580156175c0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526175e8919081019061b2d5565b82826175f38161b7a8565b935060ff16815181106176085761760861ad29565b60200260200101819052505b8460200151156176e45760408051808201909152601281527f2d2d766572696679536f75726365436f646500000000000000000000000000006020820152828261765d8161b7a8565b935060ff16815181106176725761767261ad29565b60200260200101819052506040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152508282806176bf9061b7a8565b935060ff16815181106176d4576176d461ad29565b60200260200101819052506178ab565b61771c616fc18660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6177af5760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828261775f8161b7a8565b935060ff16815181106177745761777461ad29565b60200260200101819052508460a00151604051602001617794919061b63b565b6040516020818303038152906040528282806176bf9061b7a8565b8460c001511580156177f25750604080890151815180830183526000808252602091820152825180840190935281518352908101908201526177f090511590565b155b156178ab5760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826178368161b7a8565b935060ff168151811061784b5761784b61ad29565b602002602001018190525061785f88618b44565b60405160200161786f919061b63b565b60405160208183030381529060405282828061788a9061b7a8565b935060ff168151811061789f5761789f61ad29565b60200260200101819052505b604080860151815180830183526000808252602091820152825180840190935281518352908101908201526178df90511590565b6179745760408051808201909152600b81527f2d2d72656c617965724964000000000000000000000000000000000000000000602082015282826179228161b7a8565b935060ff16815181106179375761793761ad29565b602002602001018190525084604001518282806179539061b7a8565b935060ff16815181106179685761796861ad29565b60200260200101819052505b606085015115617a955760408051808201909152600681527f2d2d73616c740000000000000000000000000000000000000000000000000000602082015282826179bd8161b7a8565b935060ff16815181106179d2576179d261ad29565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015617a41573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617a69919081019061b2d5565b8282617a748161b7a8565b935060ff1681518110617a8957617a8961ad29565b60200260200101819052505b60e08501515115617b3c5760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282617adf8161b7a8565b935060ff1681518110617af457617af461ad29565b6020026020010181905250617b108560e0015160000151618aa4565b8282617b1b8161b7a8565b935060ff1681518110617b3057617b3061ad29565b60200260200101819052505b60e08501516020015115617be65760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282617b898161b7a8565b935060ff1681518110617b9e57617b9e61ad29565b6020026020010181905250617bba8560e0015160200151618aa4565b8282617bc58161b7a8565b935060ff1681518110617bda57617bda61ad29565b60200260200101819052505b60e08501516040015115617c905760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282617c338161b7a8565b935060ff1681518110617c4857617c4861ad29565b6020026020010181905250617c648560e0015160400151618aa4565b8282617c6f8161b7a8565b935060ff1681518110617c8457617c8461ad29565b60200260200101819052505b60e08501516060015115617d3a5760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282617cdd8161b7a8565b935060ff1681518110617cf257617cf261ad29565b6020026020010181905250617d0e8560e0015160600151618aa4565b8282617d198161b7a8565b935060ff1681518110617d2e57617d2e61ad29565b60200260200101819052505b60008160ff1667ffffffffffffffff811115617d5857617d5861aa84565b604051908082528060200260200182016040528015617d8b57816020015b6060815260200190600190039081617d765790505b50905060005b8260ff168160ff161015617de457838160ff1681518110617db457617db461ad29565b6020026020010151828260ff1681518110617dd157617dd161ad29565b6020908102919091010152600101617d91565b5093505050505b949350505050565b617e1a6040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c91617ea09186910161b832565b600060405180830381865afa158015617ebd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617ee5919081019061b2d5565b90506000617ef38683619633565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401617f23919061a9b8565b6000604051808303816000875af1158015617f42573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617f6a919081019061b879565b805190915060030b15801590617f835750602081015151155b8015617f925750604081015151155b15616f6c5781600081518110617faa57617faa61ad29565b60200260200101516040516020016161ef919061b92f565b60606000617ff78560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252865182528087019082015290915061802e9082905b90619788565b1561818b5760006180ab826180a58461809f6180718a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b906197af565b90619811565b604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061810f908290619788565b1561817957604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618176905b8290619896565b90505b618182816198bc565b92505050616003565b82156181a45784846040516020016161ef92919061bb1b565b5050604080516020810190915260008152616003565b509392505050565b6000808251602084016000f09392505050565b61073c828260016182d8565b60408051600481526024810182526020810180516001600160e01b03167fad3cb1cc00000000000000000000000000000000000000000000000000000000179052905160609160009182916001600160a01b03861691618241919061bbc2565b600060405180830381855afa9150503d806000811461827c576040519150601f19603f3d011682016040523d82523d6000602084013e618281565b606091505b5091509150818015618294575060208151115b156182ad5780806020019051810190617deb919061b2d5565b505060408051602081019091526000815292915050565b60006182d08383619925565b159392505050565b8160a00151156182e757505050565b60006182f4848484619a00565b9050600061830182617df3565b602081015181519192509060030b15801561839d5750604080518082018252600781527f53554343455353000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261839d90604080518082018252600080825260209182015281518083019092528451825280850190820152618028565b156183aa57505050505050565b604082015151156183ca5781604001516040516020016161ef919061bbde565b806040516020016161ef919061bc3c565b606060006184108360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150618475905b8290618a43565b156184e457604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616003906184df908390619f9b565b6198bc565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618546905b829061a025565b60010361861357604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526185ac9061816f565b50604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616003906184df905b8390619896565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526186729061846e565b156187a957604080518082018252600181527f2f000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201819052845180860190955292518452830152906186da90839061a0bf565b9050600081600183516186ed919061bca7565b815181106186fd576186fd61ad29565b602002602001015190506187a06184df6187736040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290619f9b565b95945050505050565b826040516020016161ef919061bcba565b50919050565b606060006187f58360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506188579061846e565b1561886557616003816198bc565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526188c49061853f565b60010361892e57604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616003906184df9061860c565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261898d9061846e565b156187a957604080518082018252600181527f2f000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201819052845180860190955292518452830152906189f590839061a0bf565b9050600181511115618a31578060028251618a10919061bca7565b81518110618a2057618a2061ad29565b602002602001015192505050919050565b50826040516020016161ef919061bcba565b805182516000911115618a5857506000615dc7565b81518351602085015160009291618a6e9161bd98565b618a78919061bca7565b905082602001518103618a8f576001915050615dc7565b82516020840151819020912014905092915050565b60606000618ab18361a164565b600101905060008167ffffffffffffffff811115618ad157618ad161aa84565b6040519080825280601f01601f191660200182016040528015618afb576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084618b0557509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091618bd0905b82906182c4565b15618c1057505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618c6f90618bc9565b15618caf57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618d0e90618bc9565b15618d4e57505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618dad90618bc9565b80618e125750604080518082018252601081527f47504c2d322e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618e1290618bc9565b15618e5257505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618eb190618bc9565b80618f165750604080518082018252601081527f47504c2d332e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618f1690618bc9565b15618f5657505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618fb590618bc9565b8061901a5750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261901a90618bc9565b1561905a57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526190b990618bc9565b8061911e5750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261911e90618bc9565b1561915e57505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526191bd90618bc9565b156191fd57505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261925c90618bc9565b1561929c57505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526192fb90618bc9565b1561933b57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261939a90618bc9565b156193da57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261943990618bc9565b1561947957505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526194d890618bc9565b8061953d5750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261953d90618bc9565b1561957d57505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e31000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526195dc90618bc9565b1561961c57505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b604080840151845191516161ef929060200161bdab565b60608060005b84518110156196be57818582815181106196555761965561ad29565b602002602001015160405160200161966e92919061b183565b60405160208183030381529060405291506001855161968d919061bca7565b81146196b657816040516020016196a4919061bf14565b60405160208183030381529060405291505b600101619639565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816196d757905050905083816000815181106197025761970261ad29565b60200260200101819052506040518060400160405280600281526020017f2d63000000000000000000000000000000000000000000000000000000000000815250816001815181106197565761975661ad29565b602002602001018190525081816002815181106197755761977561ad29565b6020908102919091010152949350505050565b60208083015183518351928401516000936197a6929184919061a246565b14159392505050565b604080518082019091526000808252602082015260006197e1846000015185602001518560000151866020015161a357565b90508360200151816197f3919061bca7565b8451859061980290839061bca7565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015619836575081615dc7565b602080830151908401516001911461985d5750815160208481015190840151829020919020145b801561988e5782518451859061987490839061bca7565b905250825160208501805161988a90839061bd98565b9052505b509192915050565b60408051808201909152600080825260208201526198b583838361a477565b5092915050565b60606000826000015167ffffffffffffffff8111156198dd576198dd61aa84565b6040519080825280601f01601f191660200182016040528015619907576020820181803683370190505b50905060006020820190506198b5818560200151866000015161a522565b8151815160009190811115619938575081515b6020808501519084015160005b838110156199f157825182518082146199c15760001960208710156199a05760018461997289602061bca7565b61997c919061bd98565b61998790600861bf55565b61999290600261c053565b61999c919061bca7565b1990505b81811683821681810391146199be579750615dc79650505050505050565b50505b6199cc60208661bd98565b94506199d960208561bd98565b935050506020816199ea919061bd98565b9050619945565b5084518651616f6c919061c05f565b60606000619a0c6167eb565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081619a2957905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280619a849061b7a8565b935060ff1681518110619a9957619a9961ad29565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001619aea919061c07f565b604051602081830303815290604052828280619b059061b7a8565b935060ff1681518110619b1a57619b1a61ad29565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280619b679061b7a8565b935060ff1681518110619b7c57619b7c61ad29565b602002602001018190525082604051602001619b98919061b6a7565b604051602081830303815290604052828280619bb39061b7a8565b935060ff1681518110619bc857619bc861ad29565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280619c159061b7a8565b935060ff1681518110619c2a57619c2a61ad29565b6020026020010181905250619c3f878461a59c565b8282619c4a8161b7a8565b935060ff1681518110619c5f57619c5f61ad29565b602090810291909101015285515115619d0b5760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282619cb18161b7a8565b935060ff1681518110619cc657619cc661ad29565b6020026020010181905250619cdf86600001518461a59c565b8282619cea8161b7a8565b935060ff1681518110619cff57619cff61ad29565b60200260200101819052505b856080015115619d795760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282619d548161b7a8565b935060ff1681518110619d6957619d6961ad29565b6020026020010181905250619ddf565b8415619ddf5760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282619dbe8161b7a8565b935060ff1681518110619dd357619dd361ad29565b60200260200101819052505b60408601515115619e7b5760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282619e298161b7a8565b935060ff1681518110619e3e57619e3e61ad29565b60200260200101819052508560400151828280619e5a9061b7a8565b935060ff1681518110619e6f57619e6f61ad29565b60200260200101819052505b856060015115619ee55760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282619ec48161b7a8565b935060ff1681518110619ed957619ed961ad29565b60200260200101819052505b60008160ff1667ffffffffffffffff811115619f0357619f0361aa84565b604051908082528060200260200182016040528015619f3657816020015b6060815260200190600190039081619f215790505b50905060005b8260ff168160ff161015619f8f57838160ff1681518110619f5f57619f5f61ad29565b6020026020010151828260ff1681518110619f7c57619f7c61ad29565b6020908102919091010152600101619f3c565b50979650505050505050565b6040805180820190915260008082526020820152815183511015619fc0575081615dc7565b81518351602085015160009291619fd69161bd98565b619fe0919061bca7565b6020840151909150600190821461a001575082516020840151819020908220145b801561a01c5783518551869061a01890839061bca7565b9052505b50929392505050565b600080826000015161a049856000015186602001518660000151876020015161a357565b61a053919061bd98565b90505b8351602085015161a067919061bd98565b81116198b5578161a0778161c0c4565b925050826000015161a0ae85602001518361a092919061bca7565b865161a09e919061bca7565b838660000151876020015161a357565b61a0b8919061bd98565b905061a056565b6060600061a0cd848461a025565b61a0d890600161bd98565b67ffffffffffffffff81111561a0f05761a0f061aa84565b60405190808252806020026020018201604052801561a12357816020015b606081526020019060019003908161a10e5790505b50905060005b81518110156181ba5761a13f6184df8686619896565b82828151811061a1515761a15161ad29565b602090810291909101015260010161a129565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061a1ad577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831061a1d9576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061a1f757662386f26fc10000830492506010015b6305f5e100831061a20f576305f5e100830492506008015b612710831061a22357612710830492506004015b6064831061a235576064830492506002015b600a8310615dc75760010192915050565b60008085841161a34d576020841161a2f9576000841561a29157600161a26d86602061bca7565b61a27890600861bf55565b61a28390600261c053565b61a28d919061bca7565b1990505b835181168561a2a0898961bd98565b61a2aa919061bca7565b805190935082165b81811461a2e45787841161a2cc5787945050505050617deb565b8361a2d68161c0de565b94505082845116905061a2b2565b61a2ee878561bd98565b945050505050617deb565b83832061a306858861bca7565b61a310908761bd98565b91505b85821061a34b5784822080820361a3385761a32e868461bd98565b9350505050617deb565b61a34360018461bca7565b92505061a313565b505b5092949350505050565b6000838186851161a462576020851161a411576000851561a3a357600161a37f87602061bca7565b61a38a90600861bf55565b61a39590600261c053565b61a39f919061bca7565b1990505b8451811660008761a3b48b8b61bd98565b61a3be919061bca7565b855190915083165b82811461a4035781861061a3eb5761a3de8b8b61bd98565b9650505050505050617deb565b8561a3f58161c0c4565b96505083865116905061a3c6565b859650505050505050617deb565b508383206000905b61a423868961bca7565b821161a4605785832080820361a43f5783945050505050617deb565b61a44a60018561bd98565b935050818061a4589061c0c4565b92505061a419565b505b61a46c878761bd98565b979650505050505050565b6040805180820190915260008082526020820152600061a4a9856000015186602001518660000151876020015161a357565b60208087018051918601919091525190915061a4c5908261bca7565b83528451602086015161a4d8919061bd98565b810361a4e7576000855261a519565b8351835161a4f5919061bd98565b8551869061a50490839061bca7565b905250835161a513908261bd98565b60208601525b50909392505050565b6020811061a55a578151835261a53960208461bd98565b925061a54660208361bd98565b915061a55360208261bca7565b905061a522565b600019811561a58957600161a57083602061bca7565b61a57c9061010061c053565b61a586919061bca7565b90505b9151835183169219169190911790915250565b6060600061a5aa84846168be565b805160208083015160405193945061a5c49390910161c0f5565b60405160208183030381529060405291505092915050565b610c9f8061c14e83390190565b6112a68061cded83390190565b610ec28061e09383390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161a64661a64b565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161a6466040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b8181101561a6fd5783516001600160a01b031683526020938401939092019160010161a6d6565b509095945050505050565b60005b8381101561a72357818101518382015260200161a70b565b50506000910152565b6000815180845261a74481602086016020860161a708565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a854577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b8181101561a83a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261a82484865161a72c565b602095860195909450929092019160010161a7ea565b50919750505060209485019492909201915060010161a780565b50929695505050505050565b600081518084526020840193506020830160005b8281101561a8b45781517fffffffff000000000000000000000000000000000000000000000000000000001686526020958601959091019060010161a874565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a854577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516040875261a92a604088018261a72c565b905060208201519150868103602088015261a945818361a860565b96505050602093840193919091019060010161a8e6565b600082825180855260208501945060208160051b8301016020850160005b8381101561a9ac57601f1985840301885261a99683835161a72c565b602098890198909350919091019060010161a97a565b50909695505050505050565b602081526000616003602083018461a95c565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a854577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b038151168652602081015190506040602087015261aa4c604087018261a860565b955050602093840193919091019060010161a9f3565b6001600160a01b0383168152604060208201526000617deb604083018461a72c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561aad65761aad661aa84565b60405290565b60008067ffffffffffffffff84111561aaf75761aaf761aa84565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561ab265761ab2661aa84565b60405283815290508082840185101561ab3e57600080fd5b6181ba84602083018561a708565b600082601f83011261ab5d57600080fd5b6160038383516020850161aadc565b60006020828403121561ab7e57600080fd5b815167ffffffffffffffff81111561ab9557600080fd5b615dc38482850161ab4c565b602081526000616003602083018461a72c565b60006020828403121561abc657600080fd5b8151801515811461600357600080fd5b600181811c9082168061abea57607f821691505b6020821081036187ba577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b601f82111561293157806000526020600020601f840160051c8101602085101561ac4a5750805b601f840160051c820191505b81811015611daf576000815560010161ac56565b815167ffffffffffffffff81111561ac845761ac8461aa84565b61ac988161ac92845461abd6565b8461ac23565b6020601f82116001811461accc576000831561acb45750848201515b600019600385901b1c1916600184901b178455611daf565b600084815260208120601f198516915b8281101561acfc578785015182556020948501946001909201910161acdc565b508482101561ad1a5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081518084526020840193506020830160005b8281101561a8b457815186526020958601959091019060010161ad6c565b60608152600061ad9d606083018661a95c565b828103602084015261adaf818661ad58565b9150508215156040830152949350505050565b6001600160a01b0384511681526001600160a01b03831660208201526060604082015260006187a0606083018461a72c565b6001600160a01b03841681528260208201526060604082015260006187a0606083018461a72c565b828152604060208201526000617deb604083018461a72c565b6001600160a01b0381541682526001600160a01b03600182015416602083015260028101546040830152600060038201608060608501526000815461ae798161abd6565b806080880152600182166000811461ae98576001811461aed25761af06565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831660a089015260a082151560051b890101935061af06565b84600052602060002060005b8381101561aefd5781548a820160a0015260019091019060200161aede565b890160a0019450505b50919695505050505050565b6001600160a01b038416815260606020820152600061af34606083018561a72c565b8281036040840152616f6c818561ae35565b60006020828403121561af5857600080fd5b81516001600160a01b038116811461600357600080fd5b60608152600061af82606083018661a72c565b602083019490945250901515604090910152919050565b6001600160a01b038616815284602082015260a06040820152600061afc160a083018661a72c565b6060830194909452509015156080909101529392505050565b6001600160a01b03861681526001600160a01b038516602082015283604082015260a06060820152600061b01160a083018561a72c565b828103608084015261b023818561ae35565b98975050505050505050565b60006020828403121561b04157600080fd5b5051919050565b6001600160a01b03851681526001600160a01b0384166020820152826040820152608060608201526000616f6c608083018461a72c565b6001600160a01b038516815260806020820152600061b0a1608083018661a95c565b828103604084015261b0b3818661ad58565b915050821515606083015295945050505050565b6001600160a01b0383168152604060208201526000617deb604083018461ae35565b83815260606020820152600061af34606083018561a72c565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161b13a81601a85016020880161a708565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161b17781601c84016020880161a708565b01601c01949350505050565b6000835161b19581846020880161a708565b83519083019061b1a981836020880161a708565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161b1ea81601a85016020880161a708565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161b22781603384016020880161a708565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b6001600160a01b03841681526001600160a01b03831660208201526060604082015260006187a0606083018461a72c565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000616003608083018461a72c565b60006020828403121561b2e757600080fd5b815167ffffffffffffffff81111561b2fe57600080fd5b8201601f8101841361b30f57600080fd5b615dc38482516020840161aadc565b6000855161b330818460208a0161a708565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161b36a816001840160208a0161a708565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161b3a881600284016020890161a708565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161b3ea81600284016020880161a708565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061b435604083018461a72c565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161b4ac81601f85016020870161a708565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061b519604083018461a72c565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061b56b604083018461a72c565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161b5e281601485016020870161a708565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061b629604083018561a72c565b8281036020840152615fff818561a72c565b7f220000000000000000000000000000000000000000000000000000000000000081526000825161b67381600185016020870161a708565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161b6b981846020870161a708565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161b76c81604b85016020870161a708565b91909101604b0192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff810361b7be5761b7be61b779565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161b82581602985016020870161a708565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000616003608083018461a72c565b60006020828403121561b88b57600080fd5b815167ffffffffffffffff81111561b8a257600080fd5b82016060818503121561b8b457600080fd5b61b8bc61aab3565b81518060030b811461b8cd57600080fd5b8152602082015167ffffffffffffffff81111561b8e957600080fd5b61b8f58682850161ab4c565b602083015250604082015167ffffffffffffffff81111561b91557600080fd5b61b9218682850161ab4c565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161b98d81602185016020870161a708565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161bb7981602185016020880161a708565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161bbb681602e84016020880161a708565b01602e01949350505050565b6000825161bbd481846020870161a708565b9190910192915050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161b82581602985016020870161a708565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161bc9a81602285016020870161a708565b9190910160220192915050565b81810381811115615dc757615dc761b779565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161bcf281600e85016020870161a708565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b80820180821115615dc757615dc761b779565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161bde381601885016020880161a708565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161be2081601c84016020880161a708565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161bf2681846020870161a708565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b8082028115828204841417615dc757615dc761b779565b6001815b600184111561bfa75780850481111561bf8b5761bf8b61b779565b600184161561bf9957908102905b60019390931c92800261bf70565b935093915050565b60008261bfbe57506001615dc7565b8161bfcb57506000615dc7565b816001811461bfe1576002811461bfeb5761c007565b6001915050615dc7565b60ff84111561bffc5761bffc61b779565b50506001821b615dc7565b5060208310610133831016604e8410600b841016171561c02a575081810a615dc7565b61c037600019848461bf6c565b806000190482111561c04b5761c04b61b779565b029392505050565b6000616003838361bfaf565b81810360008312801583831316838312821617156198b5576198b561b779565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161c0b781601c85016020870161a708565b91909101601c0192915050565b6000600019820361c0d75761c0d761b779565b5060010190565b60008161c0ed5761c0ed61b779565b506000190190565b6000835161c10781846020880161a708565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161c14181600184016020880161a708565b0160010194935050505056fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220a043c41353215fce25ecb67a8a4f6f724aaa86dea8dcb0a6975bfb1f10ff3beb64736f6c634300081a0033608060405234801561001057600080fd5b506040516112a63803806112a683398101604081905261002f91610110565b604051806040016040528060048152602001635a65746160e01b815250604051806040016040528060048152602001635a45544160e01b815250816003908161007891906101e2565b50600461008582826101e2565b5050506001600160a01b03821615806100a557506001600160a01b038116155b156100c35760405163e6c4247b60e01b815260040160405180910390fd5b600680546001600160a01b039384166001600160a01b031991821617909155600780549290931691161790556102a0565b80516001600160a01b038116811461010b57600080fd5b919050565b6000806040838503121561012357600080fd5b61012c836100f4565b915061013a602084016100f4565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061016d57607f821691505b60208210810361018d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101dd57806000526020600020601f840160051c810160208510156101ba5750805b601f840160051c820191505b818110156101da57600081556001016101c6565b50505b505050565b81516001600160401b038111156101fb576101fb610143565b61020f816102098454610159565b84610193565b6020601f821160018114610243576000831561022b5750848201515b600019600385901b1c1916600184901b1784556101da565b600084815260208120601f198516915b828110156102735787850151825560209485019460019092019101610253565b50848210156102915786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610ff7806102af6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806342966c68116100b257806379cc679011610081578063a9059cbb11610066578063a9059cbb1461028e578063bff9662a146102a1578063dd62ed3e146102c157600080fd5b806379cc67901461027357806395d89b411461028657600080fd5b806342966c68146102025780635b1125911461021557806370a0823114610235578063779e3b631461026b57600080fd5b80631e458bee116100ee5780631e458bee1461018857806323b872dd1461019b578063313ce567146101ae578063328a01d0146101bd57600080fd5b806306fdde0314610120578063095ea7b31461013e57806315d57fd41461016157806318160ddd14610176575b600080fd5b610128610307565b6040516101359190610d97565b60405180910390f35b61015161014c366004610e2c565b610399565b6040519015158152602001610135565b61017461016f366004610e56565b6103b3565b005b6002545b604051908152602001610135565b610174610196366004610e89565b61057e565b6101516101a9366004610ebc565b610631565b60405160128152602001610135565b6007546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610135565b610174610210366004610ef9565b610655565b6006546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a610243366004610f12565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b610174610662565b610174610281366004610e2c565b610786565b610128610837565b61015161029c366004610e2c565b610846565b6005546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a6102cf366004610e56565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461031690610f34565b80601f016020809104026020016040519081016040528092919081815260200182805461034290610f34565b801561038f5780601f106103645761010080835404028352916020019161038f565b820191906000526020600020905b81548152906001019060200180831161037257829003601f168201915b5050505050905090565b6000336103a7818585610854565b60019150505b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff1633148015906103f3575060065473ffffffffffffffffffffffffffffffffffffffff163314155b15610431576040517fcdfcef970000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82161580610468575073ffffffffffffffffffffffffffffffffffffffff8116155b1561049f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006805473ffffffffffffffffffffffffffffffffffffffff8481167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316811790935560058054918516919092161790556040805133815260208101929092527fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff910160405180910390a16040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f1b9352454524a57a51f24f67dc66d898f616922cd1f7a12d73570ece12b1975c910160405180910390a15050565b60055473ffffffffffffffffffffffffffffffffffffffff1633146105d1576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6105db8383610866565b808373ffffffffffffffffffffffffffffffffffffffff167fc263b302aec62d29105026245f19e16f8e0137066ccd4a8bd941f716bd4096bb8460405161062491815260200190565b60405180910390a3505050565b60003361063f8582856108c6565b61064a858585610995565b506001949350505050565b61065f3382610a40565b50565b60075473ffffffffffffffffffffffffffffffffffffffff1633146106b5576040517fe700765e000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b60065473ffffffffffffffffffffffffffffffffffffffff16610704576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0910160405180910390a1565b60055473ffffffffffffffffffffffffffffffffffffffff1633146107d9576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6107e38282610a9c565b8173ffffffffffffffffffffffffffffffffffffffff167f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b18260405161082b91815260200190565b60405180910390a25050565b60606004805461031690610f34565b6000336103a7818585610995565b6108618383836001610ab1565b505050565b73ffffffffffffffffffffffffffffffffffffffff82166108b6576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c260008383610bf9565b5050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461098f5781811015610980576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401610428565b61098f84848484036000610ab1565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166109e5576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8216610a35576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b610861838383610bf9565b73ffffffffffffffffffffffffffffffffffffffff8216610a90576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c282600083610bf9565b610aa78233836108c6565b6108c28282610a40565b73ffffffffffffffffffffffffffffffffffffffff8416610b01576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8316610b51576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160209081526040808320938716835292905220829055801561098f578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610beb91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8316610c31578060026000828254610c269190610f87565b90915550610ce39050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610cb7576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810182905260448101839052606401610428565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff8216610d0c57600280548290039055610d38565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161062491815260200190565b602081526000825180602084015260005b81811015610dc55760208186018101516040868401015201610da8565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e2757600080fd5b919050565b60008060408385031215610e3f57600080fd5b610e4883610e03565b946020939093013593505050565b60008060408385031215610e6957600080fd5b610e7283610e03565b9150610e8060208401610e03565b90509250929050565b600080600060608486031215610e9e57600080fd5b610ea784610e03565b95602085013595506040909401359392505050565b600080600060608486031215610ed157600080fd5b610eda84610e03565b9250610ee860208501610e03565b929592945050506040919091013590565b600060208284031215610f0b57600080fd5b5035919050565b600060208284031215610f2457600080fd5b610f2d82610e03565b9392505050565b600181811c90821680610f4857607f821691505b602082108103610f81577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156103ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea264697066735822122001ec0ce060384773f3d3389fab7bed652c6b8ee389a7471cce10d00d87a75a0c64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610e9e806100246000396000f3fe60806040526004361061006e5760003560e01c8063c51316911161004b578063c5131691146100d5578063c9028a36146100f5578063e04d4f9714610115578063f05b6abf1461012857005b8063357fc5a214610077578063676cc054146100975780636ed70169146100c057005b3661007557005b005b34801561008357600080fd5b506100756100923660046106ec565b610148565b6100aa6100a5366004610728565b6101de565b6040516100b79190610823565b60405180910390f35b3480156100cc57600080fd5b50610075610222565b3480156100e157600080fd5b506100756100f03660046106ec565b610257565b34801561010157600080fd5b50610075610110366004610836565b610332565b610075610123366004610996565b61036e565b34801561013457600080fd5b50610075610143366004610a82565b6103b2565b6101506103e7565b61017273ffffffffffffffffffffffffffffffffffffffff831633838661042a565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101d96001600055565b505050565b6040516060907f3658b46bab672c7672b69c2f0feda706eabdb7d2231421c96e9049b2db5e7eee90600090a1506040805160208101909152600081525b9392505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b61025f6103e7565b600061026c600285610b6c565b9050806000036102a8576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102ca73ffffffffffffffffffffffffffffffffffffffff841633848461042a565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101d96001600055565b7f689a5a5cb55e795ffe4cd8b419cd3bb0a3373974c54d25f64e734d7388b93e9b3382604051610363929190610bf0565b60405180910390a150565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa33348585856040516103a5959493929190610ce2565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103a59493929190610d6c565b600260005403610423576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526104bf9085906104c5565b50505050565b60006104e773ffffffffffffffffffffffffffffffffffffffff841683610560565b9050805160001415801561050c57508080602001905181019061050a9190610e2f565b155b156101d9576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061021b83836000846000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105939190610e4c565b60006040518083038185875af1925050503d80600081146105d0576040519150601f19603f3d011682016040523d82523d6000602084013e6105d5565b606091505b50915091506105e58683836105ef565b9695505050505050565b606082610604576105ff8261067e565b61021b565b8151158015610628575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610677576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610557565b508061021b565b80511561068e5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106e757600080fd5b919050565b60008060006060848603121561070157600080fd5b83359250610711602085016106c3565b915061071f604085016106c3565b90509250925092565b6000806000838503604081121561073e57600080fd5b602081121561074c57600080fd5b50839250602084013567ffffffffffffffff81111561076a57600080fd5b8401601f8101861361077b57600080fd5b803567ffffffffffffffff81111561079257600080fd5b8660208284010111156107a457600080fd5b939660209190910195509293505050565b60005b838110156107d05781810151838201526020016107b8565b50506000910152565b600081518084526107f18160208601602086016107b5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061021b60208301846107d9565b60006020828403121561084857600080fd5b813567ffffffffffffffff81111561085f57600080fd5b82016080818503121561021b57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156108e7576108e7610871565b604052919050565b600082601f83011261090057600080fd5b813567ffffffffffffffff81111561091a5761091a610871565b61094b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016108a0565b81815284602083860101111561096057600080fd5b816020850160208301376000918101602001919091529392505050565b80151581146106c057600080fd5b80356106e78161097d565b6000806000606084860312156109ab57600080fd5b833567ffffffffffffffff8111156109c257600080fd5b6109ce868287016108ef565b9350506020840135915060408401356109e68161097d565b809150509250925092565b600067ffffffffffffffff821115610a0b57610a0b610871565b5060051b60200190565b600082601f830112610a2657600080fd5b8135610a39610a34826109f1565b6108a0565b8082825260208201915060208360051b860101925085831115610a5b57600080fd5b602085015b83811015610a78578035835260209283019201610a60565b5095945050505050565b600080600060608486031215610a9757600080fd5b833567ffffffffffffffff811115610aae57600080fd5b8401601f81018613610abf57600080fd5b8035610acd610a34826109f1565b8082825260208201915060208360051b850101925088831115610aef57600080fd5b602084015b83811015610b3157803567ffffffffffffffff811115610b1357600080fd5b610b228b6020838901016108ef565b84525060209283019201610af4565b509550505050602084013567ffffffffffffffff811115610b5157600080fd5b610b5d86828701610a15565b92505061071f6040850161098b565b600082610ba2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015273ffffffffffffffffffffffffffffffffffffffff610c2e836106c3565b16604082015273ffffffffffffffffffffffffffffffffffffffff610c55602084016106c3565b166060820152600080604084013590508060808401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610ca157600080fd5b830160208101903567ffffffffffffffff811115610cbe57600080fd5b803603821315610ccd57600080fd5b608060a08501526105e560c085018284610ba7565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610d1760a08301866107d9565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610d62578151865260209586019590910190600101610d44565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610dff577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610dea8583516107d9565b94506020938401939190910190600101610db0565b505050508281036040840152610e158186610d30565b915050610e26606083018415159052565b95945050505050565b600060208284031215610e4157600080fd5b815161021b8161097d565b60008251610e5e8184602087016107b5565b919091019291505056fea26469706673582212200121b4788f0b35a4b6df21db4f43708a9b20e8b16f616e6f3300230e75bbdd1364736f6c634300081a0033a26469706673582212203918e3d53d9f0df07c037d9b6fb6125d64982e2c4fb9c51af1ab999e2328e24e64736f6c634300081a0033", } // GatewayEVMTestABI 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 a1a4a2095..16a94c869 100644 --- a/v2/pkg/gatewayevmupgradetest.sol/gatewayevmupgradetest.go +++ b/v2/pkg/gatewayevmupgradetest.sol/gatewayevmupgradetest.go @@ -54,7 +54,7 @@ type RevertOptions struct { // 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\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\":\"execute\",\"inputs\":[{\"name\":\"messageContext\",\"type\":\"tuple\",\"internalType\":\"structMessageContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"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\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"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\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"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\":\"Called\",\"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\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposited\",\"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\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"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\":\"UpdatedGatewayTSSAddress\",\"inputs\":[{\"name\":\"oldTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newTSSAddress\",\"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\":\"ConnectorInitialized\",\"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\":\"NotAllowedToCallOnCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotAllowedToCallOnRevert\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotWhitelistedInCustody\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PayloadSizeExceeded\",\"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: "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161386d6100fd600039600081816121ee015281816122170152612685015261386d6000f3fe6080604052600436106101fe5760003560e01c80635c975abb1161011d578063aa0c0fc1116100b0578063cb7ba8e51161007f578063d547741f11610064578063d547741f1461066f578063dda79b751461068f578063e63ab1e9146106af57600080fd5b8063cb7ba8e51461063c578063d09e3b781461064f57600080fd5b8063aa0c0fc114610593578063ad3cb1cc146105b3578063ae7a3a6f146105fc578063c0c53b8b1461061c57600080fd5b80638456cb59116100ec5780638456cb59146104d057806391d14854146104e5578063a217fddf1461054a578063a783c7891461055f57600080fd5b80635c975abb1461043f5780635d62c86014610476578063726ac97c146104aa578063744b9b8b146104bd57600080fd5b806336568abe116101955780635131ab59116101645780635131ab59146103ca57806352d1902d146103ea57806357bec62f146103ff5780635b1125911461041f57600080fd5b806336568abe1461036f57806338e225271461038f5780633f4ba83a146103a25780634f1ef286146103b757600080fd5b80631cff79cd116101d15780631cff79cd1461029a57806321e093b1146102ba578063248a9ca3146102f25780632f2ff15d1461034f57600080fd5b806301ffc9a71461020357806310188aef14610238578063102614b01461025a5780631becceb41461027a575b600080fd5b34801561020f57600080fd5b5061022361021e366004612df1565b6106e3565b60405190151581526020015b60405180910390f35b34801561024457600080fd5b50610258610253366004612e4f565b61077c565b005b34801561026657600080fd5b50610258610275366004612e82565b610857565b34801561028657600080fd5b50610258610295366004612f33565b610951565b6102ad6102a8366004612f9a565b6109cf565b60405161022f919061303d565b3480156102c657600080fd5b506003546102da906001600160a01b031681565b6040516001600160a01b03909116815260200161022f565b3480156102fe57600080fd5b5061034161030d366004613050565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b60405190815260200161022f565b34801561035b57600080fd5b5061025861036a366004613069565b610a87565b34801561037b57600080fd5b5061025861038a366004613069565b610acb565b6102ad61039d366004613095565b610b1c565b3480156103ae57600080fd5b50610258610c08565b6102586103c5366004613186565b610c3d565b3480156103d657600080fd5b506102586103e5366004613217565b610c5c565b3480156103f657600080fd5b50610341610f5c565b34801561040b57600080fd5b506002546102da906001600160a01b031681565b34801561042b57600080fd5b506001546102da906001600160a01b031681565b34801561044b57600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610223565b34801561048257600080fd5b506103417f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b6102586104b8366004613286565b610f8b565b6102586104cb366004612f33565b611103565b3480156104dc57600080fd5b5061025861127f565b3480156104f157600080fd5b50610223610500366004613069565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561055657600080fd5b50610341600081565b34801561056b57600080fd5b506103417f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561059f57600080fd5b506102586105ae3660046132e6565b6112b1565b3480156105bf57600080fd5b506102ad6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b34801561060857600080fd5b50610258610617366004612e4f565b61145a565b34801561062857600080fd5b5061025861063736600461337e565b611535565b61025861064a3660046133c1565b6117fc565b34801561065b57600080fd5b5061025861066a366004613434565b6119e4565b34801561067b57600080fd5b5061025861068a366004613069565b611adc565b34801561069b57600080fd5b506000546102da906001600160a01b031681565b3480156106bb57600080fd5b506103417f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061077657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600061078781611b20565b6001600160a01b0382166107ae5760405163d92e233d60e01b815260040160405180910390fd5b6002546001600160a01b0316156107f1576040517f0c8dc01600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61081b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611b2a565b5050600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61085f611c17565b610867611c75565b826000036108a1576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166108c85760405163d92e233d60e01b815260040160405180910390fd5b6108d3338385611cf6565b836001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c85858560405161091a939291906135d9565b60405180910390a361094b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050565b610959611c17565b610961611c75565b6001600160a01b0384166109885760405163d92e233d60e01b815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167fd34634f30f94a646fdf4ce7078f38fc5fa0d3f0b193658facea4e3e43330d97485858560405161091a9392919061360f565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb6109fb81611b20565b610a03611c17565b6001600160a01b038516610a2a5760405163d92e233d60e01b815260040160405180910390fd5b6000610a37868686611f59565b9050856001600160a01b03167f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e8546348787604051610a7693929190613635565b60405180910390a295945050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610ac181611b20565b61094b8383611b2a565b6001600160a01b0381163314610b0d576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b17828261200c565b505050565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610b4881611b20565b610b50611c17565b610b58611c75565b6001600160a01b038516610b7f5760405163d92e233d60e01b815260040160405180910390fd5b6060610b8d878787876120d0565b9050856001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f348787604051610bcc93929190613635565b60405180910390a29150610bff60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50949350505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610c3281611b20565b610c3a612153565b50565b610c456121e3565b610c4e826122b3565b610c5882826122be565b5050565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9610c8681611b20565b610c8e611c17565b610c96611c75565b83600003610cd0576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038516610cf75760405163d92e233d60e01b815260040160405180910390fd5b610d0186866123c4565b610d37576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905287169063095ea7b3906044016020604051808303816000875af1158015610d9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc3919061364f565b610df9576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e04858484611f59565b50610e0f86866123c4565b610e45576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610ea5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec9919061366c565b90508015610edb57610edb8782612454565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610f2293929190613635565b60405180910390a350610f5460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b6000610f6661267a565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610f93611c17565b610f9b611c75565b34600003610fd5576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216610ffc5760405163d92e233d60e01b815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114611049576040519150601f19603f3d011682016040523d82523d6000602084013e61104e565b606091505b5050905080611089576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c346000866040516110d1939291906135d9565b60405180910390a350610c5860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b61110b611c17565b611113611c75565b3460000361114d576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166111745760405163d92e233d60e01b815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146111c1576040519150601f19603f3d011682016040523d82523d6000602084013e6111c6565b606091505b5050905080611201576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c34600088888860405161124d959493929190613685565b60405180910390a35061094b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6112a981611b20565b610c3a6126dc565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b96112db81611b20565b6112e3611c17565b6112eb611c75565b84600003611325576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03861661134c5760405163d92e233d60e01b815260040160405180910390fd5b6113606001600160a01b0388168787612755565b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063c9028a36906113a5908590600401613728565b600060405180830381600087803b1580156113bf57600080fd5b505af11580156113d3573d6000803e3d6000fd5b50505050866001600160a01b0316866001600160a01b03167fde7603a6ed5d07c9f43597ccfe9043d15b66d3284f0de321f5cdf56329e6e03587878787604051611420949392919061373b565b60405180910390a361145160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050505050565b600061146581611b20565b6001600160a01b03821661148c5760405163d92e233d60e01b815260040160405180910390fd5b6000546001600160a01b0316156114cf576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114f97f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611b2a565b5050600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156115805750825b905060008267ffffffffffffffff16600114801561159d5750303b155b9050811580156115ab575080155b156115e2576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156116435784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038816158061166057506001600160a01b038716155b1561167e5760405163d92e233d60e01b815260040160405180910390fd5b6116866127c9565b61168e6127d1565b6116966127c9565b61169e6127e1565b6116a9600087611b2a565b506116d47f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611b2a565b506116ff7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a89611b2a565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a1617905561175d7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb89611b2a565b50600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03891617905583156117f25784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb61182681611b20565b61182e611c17565b611836611c75565b6001600160a01b03851661185d5760405163d92e233d60e01b815260040160405180910390fd5b6000856001600160a01b03163460405160006040518083038185875af1925050503d80600081146118aa576040519150601f19603f3d011682016040523d82523d6000602084013e6118af565b606091505b50509050806118ea576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063c9028a369061192f908690600401613728565b600060405180830381600087803b15801561194957600080fd5b505af115801561195d573d6000803e3d6000fd5b5050505060006001600160a01b0316866001600160a01b03167fde7603a6ed5d07c9f43597ccfe9043d15b66d3284f0de321f5cdf56329e6e035348888886040516119ab949392919061373b565b60405180910390a3506119dd60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6119ec611c17565b6119f4611c75565b84600003611a2e576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038616611a555760405163d92e233d60e01b815260040160405180910390fd5b611a60338587611cf6565b856001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c8787878787604051611aab959493929190613685565b60405180910390a3610f5460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154611b1681611b20565b61094b838361200c565b610c3a81336127f1565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611c0d576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611bc33390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610776565b6000915050610776565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611c73576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611cf0576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6003546001600160a01b0390811690831603611e5a57611d216001600160a01b03831684308461287e565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611d8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611db1919061364f565b611de7576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611e4657600080fd5b505af1158015611451573d6000803e3d6000fd5b6000546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301529091169063d936547e90602401602060405180830381865afa158015611ebd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee1919061364f565b611f17576040517fac2175f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610b17906001600160a01b03848116918691168461287e565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6060611f6583836128b7565b600080856001600160a01b0316348686604051611f83929190613772565b60006040518083038185875af1925050503d8060008114611fc0576040519150601f19603f3d011682016040523d82523d6000602084013e611fc5565b606091505b509150915081612001576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611c0d576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610776565b6060836001600160a01b031663676cc054348786866040518563ffffffff1660e01b815260040161210393929190613782565b60006040518083038185885af1158015612121573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261214a91908101906137ad565b95945050505050565b61215b61293c565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061227c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166122707f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611c73576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610c5881611b20565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612318575060408051601f3d908101601f191682019092526123159181019061366c565b60015b61235e576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146123ba576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401612355565b610b178383612997565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015612430573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612005919061364f565b6003546001600160a01b03908116908316036125a3576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af11580156124d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124fa919061364f565b612530576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561258f57600080fd5b505af1158015610f54573d6000803e3d6000fd5b6000546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301529091169063d936547e90602401602060405180830381865afa158015612606573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061262a919061364f565b612660576040517fac2175f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610c58906001600160a01b03848116911683612755565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611c73576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6126e4611c17565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258336121c5565b6040516001600160a01b03838116602483015260448201839052610b1791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506129ed565b611c73612a69565b6127d9612a69565b611c73612ad0565b6127e9612a69565b611c73612ad8565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610c58576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401612355565b6040516001600160a01b03848116602483015283811660448301526064820183905261094b9186918216906323b872dd90608401612782565b60048110610c585781357f98933fac000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000821601610b17576040517fed69977500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611c73576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6129a082612b29565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156129e557610b178282612bd1565b610c58612c3e565b6000612a026001600160a01b03841683612c76565b90508051600014158015612a27575080806020019051810190612a25919061364f565b155b15610b17576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401612355565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611c73576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f33612a69565b612ae0612a69565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b806001600160a01b03163b600003612b78576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401612355565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051612bee919061381b565b600060405180830381855af49150503d8060008114612c29576040519150601f19603f3d011682016040523d82523d6000602084013e612c2e565b606091505b509150915061214a858383612c84565b3415611c73576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061200583836000612cf9565b606082612c9957612c9482612daf565b612005565b8151158015612cb057506001600160a01b0384163b155b15612cf2576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401612355565b5080612005565b606081471015612d37576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401612355565b600080856001600160a01b03168486604051612d53919061381b565b60006040518083038185875af1925050503d8060008114612d90576040519150601f19603f3d011682016040523d82523d6000602084013e612d95565b606091505b5091509150612da5868383612c84565b9695505050505050565b805115612dbf5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215612e0357600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461200557600080fd5b80356001600160a01b0381168114612e4a57600080fd5b919050565b600060208284031215612e6157600080fd5b61200582612e33565b600060a08284031215612e7c57600080fd5b50919050565b60008060008060808587031215612e9857600080fd5b612ea185612e33565b935060208501359250612eb660408601612e33565b9150606085013567ffffffffffffffff811115612ed257600080fd5b612ede87828801612e6a565b91505092959194509250565b60008083601f840112612efc57600080fd5b50813567ffffffffffffffff811115612f1457600080fd5b602083019150836020828501011115612f2c57600080fd5b9250929050565b60008060008060608587031215612f4957600080fd5b612f5285612e33565b9350602085013567ffffffffffffffff811115612f6e57600080fd5b612f7a87828801612eea565b909450925050604085013567ffffffffffffffff811115612ed257600080fd5b600080600060408486031215612faf57600080fd5b612fb884612e33565b9250602084013567ffffffffffffffff811115612fd457600080fd5b612fe086828701612eea565b9497909650939450505050565b60005b83811015613008578181015183820152602001612ff0565b50506000910152565b60008151808452613029816020860160208601612fed565b601f01601f19169290920160200192915050565b6020815260006120056020830184613011565b60006020828403121561306257600080fd5b5035919050565b6000806040838503121561307c57600080fd5b8235915061308c60208401612e33565b90509250929050565b60008060008084860360608112156130ac57600080fd5b60208112156130ba57600080fd5b508493506130ca60208601612e33565b9250604085013567ffffffffffffffff8111156130e657600080fd5b6130f287828801612eea565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613156576131566130fe565b604052919050565b600067ffffffffffffffff821115613178576131786130fe565b50601f01601f191660200190565b6000806040838503121561319957600080fd5b6131a283612e33565b9150602083013567ffffffffffffffff8111156131be57600080fd5b8301601f810185136131cf57600080fd5b80356131e26131dd8261315e565b61312d565b8181528660208385010111156131f757600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008060008060006080868803121561322f57600080fd5b61323886612e33565b945061324660208701612e33565b935060408601359250606086013567ffffffffffffffff81111561326957600080fd5b61327588828901612eea565b969995985093965092949392505050565b6000806040838503121561329957600080fd5b6132a283612e33565b9150602083013567ffffffffffffffff8111156132be57600080fd5b6132ca85828601612e6a565b9150509250929050565b600060808284031215612e7c57600080fd5b60008060008060008060a087890312156132ff57600080fd5b61330887612e33565b955061331660208801612e33565b945060408701359350606087013567ffffffffffffffff81111561333957600080fd5b61334589828a01612eea565b909450925050608087013567ffffffffffffffff81111561336557600080fd5b61337189828a016132d4565b9150509295509295509295565b60008060006060848603121561339357600080fd5b61339c84612e33565b92506133aa60208501612e33565b91506133b860408501612e33565b90509250925092565b600080600080606085870312156133d757600080fd5b6133e085612e33565b9350602085013567ffffffffffffffff8111156133fc57600080fd5b61340887828801612eea565b909450925050604085013567ffffffffffffffff81111561342857600080fd5b612ede878288016132d4565b60008060008060008060a0878903121561344d57600080fd5b61345687612e33565b95506020870135945061346b60408801612e33565b9350606087013567ffffffffffffffff81111561348757600080fd5b61349389828a01612eea565b909450925050608087013567ffffffffffffffff8111156134b357600080fd5b61337189828a01612e6a565b8015158114610c3a57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261350257600080fd5b830160208101925035905067ffffffffffffffff81111561352257600080fd5b803603821315612f2c57600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6001600160a01b0361356d82612e33565b16825260006020820135613580816134bf565b151560208401526001600160a01b0361359b60408401612e33565b1660408401526135ae60608301836134cd565b60a060608601526135c360a086018284613531565b6080948501359590940194909452509092915050565b8381526001600160a01b0383166020820152608060408201526000608082015260a06060820152600061214a60a083018461355c565b604081526000613623604083018587613531565b8281036020840152612da5818561355c565b83815260406020820152600061214a604083018486613531565b60006020828403121561366157600080fd5b8151612005816134bf565b60006020828403121561367e57600080fd5b5051919050565b8581526001600160a01b03851660208201526080604082015260006136ae608083018587613531565b82810360608401526136c0818561355c565b98975050505050505050565b6001600160a01b036136dd82612e33565b1682526001600160a01b036136f460208301612e33565b16602083015260408181013590830152600061371360608301836134cd565b6080606086015261214a608086018284613531565b60208152600061200560208301846136cc565b848152606060208201526000613755606083018587613531565b828103604084015261376781856136cc565b979650505050505050565b8183823760009101908152919050565b6001600160a01b0361379385612e33565b16815260406020820152600061214a604083018486613531565b6000602082840312156137bf57600080fd5b815167ffffffffffffffff8111156137d657600080fd5b8201601f810184136137e757600080fd5b80516137f56131dd8261315e565b81815285602083850101111561380a57600080fd5b61214a826020830160208601612fed565b6000825161382d818460208701612fed565b919091019291505056fea264697066735822122022d40b9e785f46c5c32d3f24d5e9bbe74f9a765997a8161aeac2bbb027d5d21b64736f6c634300081a0033", + Bin: "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161386d6100fd600039600081816121ee015281816122170152612685015261386d6000f3fe6080604052600436106101fe5760003560e01c80635c975abb1161011d578063aa0c0fc1116100b0578063cb7ba8e51161007f578063d547741f11610064578063d547741f1461066f578063dda79b751461068f578063e63ab1e9146106af57600080fd5b8063cb7ba8e51461063c578063d09e3b781461064f57600080fd5b8063aa0c0fc114610593578063ad3cb1cc146105b3578063ae7a3a6f146105fc578063c0c53b8b1461061c57600080fd5b80638456cb59116100ec5780638456cb59146104d057806391d14854146104e5578063a217fddf1461054a578063a783c7891461055f57600080fd5b80635c975abb1461043f5780635d62c86014610476578063726ac97c146104aa578063744b9b8b146104bd57600080fd5b806336568abe116101955780635131ab59116101645780635131ab59146103ca57806352d1902d146103ea57806357bec62f146103ff5780635b1125911461041f57600080fd5b806336568abe1461036f57806338e225271461038f5780633f4ba83a146103a25780634f1ef286146103b757600080fd5b80631cff79cd116101d15780631cff79cd1461029a57806321e093b1146102ba578063248a9ca3146102f25780632f2ff15d1461034f57600080fd5b806301ffc9a71461020357806310188aef14610238578063102614b01461025a5780631becceb41461027a575b600080fd5b34801561020f57600080fd5b5061022361021e366004612df1565b6106e3565b60405190151581526020015b60405180910390f35b34801561024457600080fd5b50610258610253366004612e4f565b61077c565b005b34801561026657600080fd5b50610258610275366004612e82565b610857565b34801561028657600080fd5b50610258610295366004612f33565b610951565b6102ad6102a8366004612f9a565b6109cf565b60405161022f919061303d565b3480156102c657600080fd5b506003546102da906001600160a01b031681565b6040516001600160a01b03909116815260200161022f565b3480156102fe57600080fd5b5061034161030d366004613050565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b60405190815260200161022f565b34801561035b57600080fd5b5061025861036a366004613069565b610a87565b34801561037b57600080fd5b5061025861038a366004613069565b610acb565b6102ad61039d366004613095565b610b1c565b3480156103ae57600080fd5b50610258610c08565b6102586103c5366004613186565b610c3d565b3480156103d657600080fd5b506102586103e5366004613217565b610c5c565b3480156103f657600080fd5b50610341610f5c565b34801561040b57600080fd5b506002546102da906001600160a01b031681565b34801561042b57600080fd5b506001546102da906001600160a01b031681565b34801561044b57600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610223565b34801561048257600080fd5b506103417f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b6102586104b8366004613286565b610f8b565b6102586104cb366004612f33565b611103565b3480156104dc57600080fd5b5061025861127f565b3480156104f157600080fd5b50610223610500366004613069565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561055657600080fd5b50610341600081565b34801561056b57600080fd5b506103417f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561059f57600080fd5b506102586105ae3660046132e6565b6112b1565b3480156105bf57600080fd5b506102ad6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b34801561060857600080fd5b50610258610617366004612e4f565b61145a565b34801561062857600080fd5b5061025861063736600461337e565b611535565b61025861064a3660046133c1565b6117fc565b34801561065b57600080fd5b5061025861066a366004613434565b6119e4565b34801561067b57600080fd5b5061025861068a366004613069565b611adc565b34801561069b57600080fd5b506000546102da906001600160a01b031681565b3480156106bb57600080fd5b506103417f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061077657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600061078781611b20565b6001600160a01b0382166107ae5760405163d92e233d60e01b815260040160405180910390fd5b6002546001600160a01b0316156107f1576040517f0c8dc01600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61081b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611b2a565b5050600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61085f611c17565b610867611c75565b826000036108a1576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166108c85760405163d92e233d60e01b815260040160405180910390fd5b6108d3338385611cf6565b836001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c85858560405161091a939291906135d9565b60405180910390a361094b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050565b610959611c17565b610961611c75565b6001600160a01b0384166109885760405163d92e233d60e01b815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167fd34634f30f94a646fdf4ce7078f38fc5fa0d3f0b193658facea4e3e43330d97485858560405161091a9392919061360f565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb6109fb81611b20565b610a03611c17565b6001600160a01b038516610a2a5760405163d92e233d60e01b815260040160405180910390fd5b6000610a37868686611f59565b9050856001600160a01b03167f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e8546348787604051610a7693929190613635565b60405180910390a295945050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610ac181611b20565b61094b8383611b2a565b6001600160a01b0381163314610b0d576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b17828261200c565b505050565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610b4881611b20565b610b50611c17565b610b58611c75565b6001600160a01b038516610b7f5760405163d92e233d60e01b815260040160405180910390fd5b6060610b8d878787876120d0565b9050856001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f348787604051610bcc93929190613635565b60405180910390a29150610bff60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50949350505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610c3281611b20565b610c3a612153565b50565b610c456121e3565b610c4e826122b3565b610c5882826122be565b5050565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9610c8681611b20565b610c8e611c17565b610c96611c75565b83600003610cd0576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038516610cf75760405163d92e233d60e01b815260040160405180910390fd5b610d0186866123c4565b610d37576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905287169063095ea7b3906044016020604051808303816000875af1158015610d9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc3919061364f565b610df9576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e04858484611f59565b50610e0f86866123c4565b610e45576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610ea5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec9919061366c565b90508015610edb57610edb8782612454565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610f2293929190613635565b60405180910390a350610f5460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b6000610f6661267a565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610f93611c17565b610f9b611c75565b34600003610fd5576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216610ffc5760405163d92e233d60e01b815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114611049576040519150601f19603f3d011682016040523d82523d6000602084013e61104e565b606091505b5050905080611089576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c346000866040516110d1939291906135d9565b60405180910390a350610c5860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b61110b611c17565b611113611c75565b3460000361114d576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166111745760405163d92e233d60e01b815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146111c1576040519150601f19603f3d011682016040523d82523d6000602084013e6111c6565b606091505b5050905080611201576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c34600088888860405161124d959493929190613685565b60405180910390a35061094b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6112a981611b20565b610c3a6126dc565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b96112db81611b20565b6112e3611c17565b6112eb611c75565b84600003611325576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03861661134c5760405163d92e233d60e01b815260040160405180910390fd5b6113606001600160a01b0388168787612755565b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063c9028a36906113a5908590600401613728565b600060405180830381600087803b1580156113bf57600080fd5b505af11580156113d3573d6000803e3d6000fd5b50505050866001600160a01b0316866001600160a01b03167fde7603a6ed5d07c9f43597ccfe9043d15b66d3284f0de321f5cdf56329e6e03587878787604051611420949392919061373b565b60405180910390a361145160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050505050565b600061146581611b20565b6001600160a01b03821661148c5760405163d92e233d60e01b815260040160405180910390fd5b6000546001600160a01b0316156114cf576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114f97f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611b2a565b5050600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156115805750825b905060008267ffffffffffffffff16600114801561159d5750303b155b9050811580156115ab575080155b156115e2576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156116435784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038816158061166057506001600160a01b038716155b1561167e5760405163d92e233d60e01b815260040160405180910390fd5b6116866127c9565b61168e6127d1565b6116966127c9565b61169e6127e1565b6116a9600087611b2a565b506116d47f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611b2a565b506116ff7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a89611b2a565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a1617905561175d7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb89611b2a565b50600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03891617905583156117f25784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb61182681611b20565b61182e611c17565b611836611c75565b6001600160a01b03851661185d5760405163d92e233d60e01b815260040160405180910390fd5b6000856001600160a01b03163460405160006040518083038185875af1925050503d80600081146118aa576040519150601f19603f3d011682016040523d82523d6000602084013e6118af565b606091505b50509050806118ea576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063c9028a369061192f908690600401613728565b600060405180830381600087803b15801561194957600080fd5b505af115801561195d573d6000803e3d6000fd5b5050505060006001600160a01b0316866001600160a01b03167fde7603a6ed5d07c9f43597ccfe9043d15b66d3284f0de321f5cdf56329e6e035348888886040516119ab949392919061373b565b60405180910390a3506119dd60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6119ec611c17565b6119f4611c75565b84600003611a2e576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038616611a555760405163d92e233d60e01b815260040160405180910390fd5b611a60338587611cf6565b856001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c8787878787604051611aab959493929190613685565b60405180910390a3610f5460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154611b1681611b20565b61094b838361200c565b610c3a81336127f1565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611c0d576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611bc33390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610776565b6000915050610776565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611c73576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611cf0576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6003546001600160a01b0390811690831603611e5a57611d216001600160a01b03831684308461287e565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611d8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611db1919061364f565b611de7576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611e4657600080fd5b505af1158015611451573d6000803e3d6000fd5b6000546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301529091169063d936547e90602401602060405180830381865afa158015611ebd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee1919061364f565b611f17576040517fac2175f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610b17906001600160a01b03848116918691168461287e565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6060611f6583836128b7565b600080856001600160a01b0316348686604051611f83929190613772565b60006040518083038185875af1925050503d8060008114611fc0576040519150601f19603f3d011682016040523d82523d6000602084013e611fc5565b606091505b509150915081612001576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611c0d576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610776565b6060836001600160a01b031663676cc054348786866040518563ffffffff1660e01b815260040161210393929190613782565b60006040518083038185885af1158015612121573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261214a91908101906137ad565b95945050505050565b61215b61293c565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061227c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166122707f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611c73576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610c5881611b20565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612318575060408051601f3d908101601f191682019092526123159181019061366c565b60015b61235e576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146123ba576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401612355565b610b178383612997565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015612430573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612005919061364f565b6003546001600160a01b03908116908316036125a3576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af11580156124d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124fa919061364f565b612530576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561258f57600080fd5b505af1158015610f54573d6000803e3d6000fd5b6000546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301529091169063d936547e90602401602060405180830381865afa158015612606573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061262a919061364f565b612660576040517fac2175f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610c58906001600160a01b03848116911683612755565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611c73576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6126e4611c17565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258336121c5565b6040516001600160a01b03838116602483015260448201839052610b1791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506129ed565b611c73612a69565b6127d9612a69565b611c73612ad0565b6127e9612a69565b611c73612ad8565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610c58576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401612355565b6040516001600160a01b03848116602483015283811660448301526064820183905261094b9186918216906323b872dd90608401612782565b60048110610c585781357f98933fac000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000821601610b17576040517fed69977500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611c73576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6129a082612b29565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156129e557610b178282612bd1565b610c58612c3e565b6000612a026001600160a01b03841683612c76565b90508051600014158015612a27575080806020019051810190612a25919061364f565b155b15610b17576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401612355565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611c73576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f33612a69565b612ae0612a69565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b806001600160a01b03163b600003612b78576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401612355565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051612bee919061381b565b600060405180830381855af49150503d8060008114612c29576040519150601f19603f3d011682016040523d82523d6000602084013e612c2e565b606091505b509150915061214a858383612c84565b3415611c73576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061200583836000612cf9565b606082612c9957612c9482612daf565b612005565b8151158015612cb057506001600160a01b0384163b155b15612cf2576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401612355565b5080612005565b606081471015612d37576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401612355565b600080856001600160a01b03168486604051612d53919061381b565b60006040518083038185875af1925050503d8060008114612d90576040519150601f19603f3d011682016040523d82523d6000602084013e612d95565b606091505b5091509150612da5868383612c84565b9695505050505050565b805115612dbf5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215612e0357600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461200557600080fd5b80356001600160a01b0381168114612e4a57600080fd5b919050565b600060208284031215612e6157600080fd5b61200582612e33565b600060a08284031215612e7c57600080fd5b50919050565b60008060008060808587031215612e9857600080fd5b612ea185612e33565b935060208501359250612eb660408601612e33565b9150606085013567ffffffffffffffff811115612ed257600080fd5b612ede87828801612e6a565b91505092959194509250565b60008083601f840112612efc57600080fd5b50813567ffffffffffffffff811115612f1457600080fd5b602083019150836020828501011115612f2c57600080fd5b9250929050565b60008060008060608587031215612f4957600080fd5b612f5285612e33565b9350602085013567ffffffffffffffff811115612f6e57600080fd5b612f7a87828801612eea565b909450925050604085013567ffffffffffffffff811115612ed257600080fd5b600080600060408486031215612faf57600080fd5b612fb884612e33565b9250602084013567ffffffffffffffff811115612fd457600080fd5b612fe086828701612eea565b9497909650939450505050565b60005b83811015613008578181015183820152602001612ff0565b50506000910152565b60008151808452613029816020860160208601612fed565b601f01601f19169290920160200192915050565b6020815260006120056020830184613011565b60006020828403121561306257600080fd5b5035919050565b6000806040838503121561307c57600080fd5b8235915061308c60208401612e33565b90509250929050565b60008060008084860360608112156130ac57600080fd5b60208112156130ba57600080fd5b508493506130ca60208601612e33565b9250604085013567ffffffffffffffff8111156130e657600080fd5b6130f287828801612eea565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613156576131566130fe565b604052919050565b600067ffffffffffffffff821115613178576131786130fe565b50601f01601f191660200190565b6000806040838503121561319957600080fd5b6131a283612e33565b9150602083013567ffffffffffffffff8111156131be57600080fd5b8301601f810185136131cf57600080fd5b80356131e26131dd8261315e565b61312d565b8181528660208385010111156131f757600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008060008060006080868803121561322f57600080fd5b61323886612e33565b945061324660208701612e33565b935060408601359250606086013567ffffffffffffffff81111561326957600080fd5b61327588828901612eea565b969995985093965092949392505050565b6000806040838503121561329957600080fd5b6132a283612e33565b9150602083013567ffffffffffffffff8111156132be57600080fd5b6132ca85828601612e6a565b9150509250929050565b600060808284031215612e7c57600080fd5b60008060008060008060a087890312156132ff57600080fd5b61330887612e33565b955061331660208801612e33565b945060408701359350606087013567ffffffffffffffff81111561333957600080fd5b61334589828a01612eea565b909450925050608087013567ffffffffffffffff81111561336557600080fd5b61337189828a016132d4565b9150509295509295509295565b60008060006060848603121561339357600080fd5b61339c84612e33565b92506133aa60208501612e33565b91506133b860408501612e33565b90509250925092565b600080600080606085870312156133d757600080fd5b6133e085612e33565b9350602085013567ffffffffffffffff8111156133fc57600080fd5b61340887828801612eea565b909450925050604085013567ffffffffffffffff81111561342857600080fd5b612ede878288016132d4565b60008060008060008060a0878903121561344d57600080fd5b61345687612e33565b95506020870135945061346b60408801612e33565b9350606087013567ffffffffffffffff81111561348757600080fd5b61349389828a01612eea565b909450925050608087013567ffffffffffffffff8111156134b357600080fd5b61337189828a01612e6a565b8015158114610c3a57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261350257600080fd5b830160208101925035905067ffffffffffffffff81111561352257600080fd5b803603821315612f2c57600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6001600160a01b0361356d82612e33565b16825260006020820135613580816134bf565b151560208401526001600160a01b0361359b60408401612e33565b1660408401526135ae60608301836134cd565b60a060608601526135c360a086018284613531565b6080948501359590940194909452509092915050565b8381526001600160a01b0383166020820152608060408201526000608082015260a06060820152600061214a60a083018461355c565b604081526000613623604083018587613531565b8281036020840152612da5818561355c565b83815260406020820152600061214a604083018486613531565b60006020828403121561366157600080fd5b8151612005816134bf565b60006020828403121561367e57600080fd5b5051919050565b8581526001600160a01b03851660208201526080604082015260006136ae608083018587613531565b82810360608401526136c0818561355c565b98975050505050505050565b6001600160a01b036136dd82612e33565b1682526001600160a01b036136f460208301612e33565b16602083015260408181013590830152600061371360608301836134cd565b6080606086015261214a608086018284613531565b60208152600061200560208301846136cc565b848152606060208201526000613755606083018587613531565b828103604084015261376781856136cc565b979650505050505050565b8183823760009101908152919050565b6001600160a01b0361379385612e33565b16815260406020820152600061214a604083018486613531565b6000602082840312156137bf57600080fd5b815167ffffffffffffffff8111156137d657600080fd5b8201601f810184136137e757600080fd5b80516137f56131dd8261315e565b81815285602083850101111561380a57600080fd5b61214a826020830160208601612fed565b6000825161382d818460208701612fed565b919091019291505056fea26469706673582212208b72f5389b712bdb905de4b6561d7eed975fa0feeef1beea3562eb3d8e499dc564736f6c634300081a0033", } // 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 6d9d3fd0b..1f043d972 100644 --- a/v2/pkg/gatewayevmzevm.t.sol/gatewayevmzevmtest.go +++ b/v2/pkg/gatewayevmzevm.t.sol/gatewayevmzevmtest.go @@ -73,7 +73,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\":\"Called\",\"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\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Called\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"callOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structCallOptions\",\"components\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"isArbitraryCall\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposited\",\"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\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\":\"ReceivedOnCall\",\"inputs\":[],\"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\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedGatewayTSSAddress\",\"inputs\":[{\"name\":\"oldTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawn\",\"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\"},{\"name\":\"callOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structCallOptions\",\"components\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"isArbitraryCall\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\":\"CallerIsNotProtocol\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ConnectorInitialized\",\"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\":\"InsufficientGasLimit\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZetaAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"MessageSizeExceeded\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotAllowedToCallOnCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotAllowedToCallOnRevert\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotWhitelistedInCustody\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrProtocol\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PayloadSizeExceeded\",\"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: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061ea318061003c6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806385226c81116100b2578063b5508aa911610081578063d7a525fc11610066578063d7a525fc146101ec578063e20c9f71146101f4578063fa7626d4146101fc57600080fd5b8063b5508aa9146101cc578063ba414fa6146101d457600080fd5b806385226c8114610192578063916a17c6146101a75780639683c695146101bc578063b0464fdc146101c457600080fd5b80633f7286f4116100ee5780633f7286f414610165578063524744131461016d57806366d9a9a0146101755780636ff15ccc1461018a57600080fd5b80630a9254e4146101205780631ed7831c1461012a5780632ade3880146101485780633e5e3c231461015d575b600080fd5b610128610209565b005b6101326112fe565b60405161013f9190617be1565b60405180910390f35b610150611360565b60405161013f9190617c7d565b6101326114a2565b610132611502565b610128611562565b61017d611de6565b60405161013f9190617de3565b610128611f68565b61019a6127b1565b60405161013f9190617e81565b6101af612881565b60405161013f9190617ef8565b61012861297c565b6101af612f9e565b61019a613099565b6101dc613169565b604051901515815260200161013f565b61012861323d565b610132613976565b601f546101dc9060ff1681565b602580547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602680548216611234179055602780548216615678179055602d805490911661432117905560405161026790617ae7565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f0801580156102ec573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405161033190617ae7565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f0801580156103b5573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600e81527f4761746577617945564d2e736f6c0000000000000000000000000000000000006020820152602754602554925190851660248201526044810193909352921660648201526000916104a7916084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc0c53b8b000000000000000000000000000000000000000000000000000000001790526139d6565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0384811682029290921792839055604080518082018252601081527f4552433230437573746f64792e736f6c000000000000000000000000000000006020820152602754602554925193909504841660248401529383166044830152909116606482015291925061054a9160840161044a565b602080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03838116919091178255604080518082018252601a81527f5a657461436f6e6e6563746f724e6f6e4e61746976652e736f6c00000000000093810193909352601f546023546027546025549351610100909304851660248401529084166044830152831660648201529116608482015291925061064e9160a40160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff8c8765e000000000000000000000000000000000000000000000000000000001790526139d6565b602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03838116919091179091556027546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561070057600080fd5b505af1158015610714573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b15801561078a57600080fd5b505af115801561079e573d6000803e3d6000fd5b5050601f546020546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261010090920416925063ae7a3a6f9150602401600060405180830381600087803b15801561080957600080fd5b505af115801561081d573d6000803e3d6000fd5b5050601f546021546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526101009092041692506310188aef9150602401600060405180830381600087803b15801561088857600080fd5b505af115801561089c573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156108fe57600080fd5b505af1158015610912573d6000803e3d6000fd5b50506022546025546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f42406024820152911692506340c10f199150604401600060405180830381600087803b15801561098157600080fd5b505af1158015610995573d6000803e3d6000fd5b50506022546020546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12060248201529116925063a9059cbb91506044016020604051808303816000875af1158015610a09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a2d9190617f8f565b50604051610a3a90617af4565b604051809103906000f080158015610a56573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316178155604080518082018252600f81527f476174657761795a45564d2e736f6c00000000000000000000000000000000006020820152602354602d5492519085169381019390935292166044820152610b3c919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc955000000000000000000000000000000000000000000000000000000001790526139d6565b602880546001600160a01b03929092167fffffffffffffffffffffffff00000000000000000000000000000000000000009283168117909155602980549092168117909155604051610b8d90617b01565b6001600160a01b039091168152602001604051809103906000f080158015610bb9573d6000803e3d6000fd5b50602a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040517f06447d5600000000000000000000000000000000000000000000000000000000815273735b14bb79463307aacbed86daf3322b1e6226ab6004820181905290737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b158015610c6e57600080fd5b505af1158015610c82573d6000803e3d6000fd5b505050506000806000604051610c9790617b0e565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610cd3573d6000803e3d6000fd5b50602b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602954604051601293600193600093849391921690610d2990617b1b565b610d3896959493929190617fb1565b604051809103906000f080158015610d54573d6000803e3d6000fd5b50602c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602b546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b158015610deb57600080fd5b505af1158015610dff573d6000803e3d6000fd5b5050602b546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b158015610e6957600080fd5b505af1158015610e7d573d6000803e3d6000fd5b5050602c54602d546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f42406024820152911692506347e7ef2491506044016020604051808303816000875af1158015610ef1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f159190617f8f565b50602c54602a546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424060248201529116906347e7ef24906044016020604051808303816000875af1158015610f86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610faa9190617f8f565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561100957600080fd5b505af115801561101d573d6000803e3d6000fd5b5050602d546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561109357600080fd5b505af11580156110a7573d6000803e3d6000fd5b5050602c546029546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424060248201529116925063095ea7b391506044016020604051808303816000875af115801561111b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113f9190617f8f565b506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b1580156111c057600080fd5b505af11580156111d4573d6000803e3d6000fd5b5050604080518082018252600180825260006020928301819052602e829055602f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055835160a08101855261032180825281850193845281860190815285519485019095528184526060810184905260808101919091528051603080549351151574010000000000000000000000000000000000000000027fffffffffffffffffffffff0000000000000000000000000000000000000000009094166001600160a01b0392831617939093178355935160318054919095167fffffffffffffffffffffffff000000000000000000000000000000000000000091909116179093559193509091506032906112ec9082618171565b50608082015181600301559050505050565b6060601680548060200260200160405190810160405280929190818152602001828054801561135657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611338575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561149957600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156114825783829060005260206000200180546113f5906180d5565b80601f0160208091040260200160405190810160405280929190818152602001828054611421906180d5565b801561146e5780601f106114435761010080835404028352916020019161146e565b820191906000526020600020905b81548152906001019060200180831161145157829003601f168201915b5050505050815260200190600101906113d6565b505050508152505081526020019060010190611384565b50505050905090565b60606018805480602002602001604051908101604052809291908181526020018280548015611356576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611338575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015611356576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611338575050505050905090565b604080518082018252600681527f48656c6c6f2100000000000000000000000000000000000000000000000000006020820152602c54602a805493517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03948516600482015292939092600192670de0b6b3a7640000926000929116906370a0823190602401602060405180830381865afa15801561160e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116329190618230565b6040519091506000907fe04d4f97000000000000000000000000000000000000000000000000000000009061166f90889088908890602401618249565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909516949094179093526024549051919350600092611708926001600160a01b03909216910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602c5461173f926207a120916001600160a01b0316908690602e90603090602401618362565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7b15118b0000000000000000000000000000000000000000000000000000000017905260295490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba3916117fc916001600160a01b03919091169060009086906004016183d9565b600060405180830381600087803b15801561181657600080fd5b505af115801561182a573d6000803e3d6000fd5b5050602d546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156118a057600080fd5b505af11580156118b4573d6000803e3d6000fd5b5050602a5460245460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039091169250630abd8905915060340160408051601f1981840301815290829052602c547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261194e926207a120916001600160a01b0316908d908d908d90600401618401565b600060405180830381600087803b15801561196857600080fd5b505af115801561197c573d6000803e3d6000fd5b5050601f546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b0316600482015260248101879052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b1580156119fd57600080fd5b505af1158015611a11573d6000803e3d6000fd5b5050602480546040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190529281018390526044810183905260648101929092526001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015611aa457600080fd5b505af1158015611ab8573d6000803e3d6000fd5b505050507f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa601f60019054906101000a90046001600160a01b031685898989604051611b08959493929190618456565b60405180910390a1601f546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611ba257600080fd5b505af1158015611bb6573d6000803e3d6000fd5b50506024546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150611bfb9087908690618497565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611c7557600080fd5b505af1158015611c89573d6000803e3d6000fd5b5050601f546024546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b0361010090930483169450631cff79cd93508892611ce292169087906004016184b0565b60006040518083038185885af1158015611d00573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052611d29919081019061858b565b50602c54602a546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611d94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611db89190618230565b9050611ddc816001611dcd6207a120886185ef565b611dd791906185ef565b6139f5565b5050505050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156114995783829060005260206000209060020201604051806040016040529081600082018054611e3d906180d5565b80601f0160208091040260200160405190810160405280929190818152602001828054611e69906180d5565b8015611eb65780601f10611e8b57610100808354040283529160200191611eb6565b820191906000526020600020905b815481529060010190602001808311611e9957829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611f5057602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611efd5790505b50505050508152505081526020019060010190611e0a565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a7640000906000907fe04d4f970000000000000000000000000000000000000000000000000000000090611fe490879087908790602401618249565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000949094169390931790925260295491517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482018190526001600160a01b039093166084820152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156120d657600080fd5b505af11580156120ea573d6000803e3d6000fd5b5050602d5460245460405160609190911b6bffffffffffffffffffffffff19166020820152600093506001600160a01b0390911691507f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c9060340160408051601f19818403018152828252602c547f4d8943bb000000000000000000000000000000000000000000000000000000008452915190926001600160a01b03909216916207a1209188918491634d8943bb916004808201926020929091908290030181865afa1580156121bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e39190618230565b60408051808201825260018082526020820152905161220b9695949392918c91603090618602565b60405180910390a3602d546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561228557600080fd5b505af1158015612299573d6000803e3d6000fd5b50506029546024546040805160609290921b6bffffffffffffffffffffffff1916602083015280518083036014018152602c5460748401835260016034850181815260549095015291517f7b15118b0000000000000000000000000000000000000000000000000000000081526001600160a01b039485169650637b15118b95506123379491936207a1209392909216918991603090600401618672565b600060405180830381600087803b15801561235157600080fd5b505af1158015612365573d6000803e3d6000fd5b5050602c54602d546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156123d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123f59190618230565b905061240881611dd7846207a1206185ef565b601f546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b0316600482015260248101859052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561248557600080fd5b505af1158015612499573d6000803e3d6000fd5b5050602480546040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190529281018390526044810183905260648101929092526001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561252c57600080fd5b505af1158015612540573d6000803e3d6000fd5b505050507f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa601f60019054906101000a90046001600160a01b031685898989604051612590959493929190618456565b60405180910390a1601f546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561262a57600080fd5b505af115801561263e573d6000803e3d6000fd5b50506024546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f91506126839087908790618497565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156126fd57600080fd5b505af1158015612711573d6000803e3d6000fd5b5050601f546024546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b0361010090930483169450631cff79cd9350889261276a92169088906004016184b0565b60006040518083038185885af1158015612788573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052611ddc919081019061858b565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156114995783829060005260206000200180546127f4906180d5565b80601f0160208091040260200160405190810160405280929190818152602001828054612820906180d5565b801561286d5780601f106128425761010080835404028352916020019161286d565b820191906000526020600020905b81548152906001019060200180831161285057829003601f168201915b5050505050815260200190600101906127d5565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156114995760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561296457602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116129115790505b505050505081525050815260200190600101906128a5565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a7640000906000907fe04d4f9700000000000000000000000000000000000000000000000000000000906129f890879087908790602401618249565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009490941693909317909252602d5491517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612acb57600080fd5b505af1158015612adf573d6000803e3d6000fd5b50506029546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015612b7157600080fd5b505af1158015612b85573d6000803e3d6000fd5b5050602c54602d5460245460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039283169450911691507f306ee13f48319a123b222c69908e44dcf91abffc20cacc502e3cf5a4ff23e0e49060340160408051601f198184030181528282018252600180845260208401529051612c0f9287916030906186c6565b60405180910390a360295460245460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b03909116906306cb89839060340160408051601f19818403018152602c5483830183526001808552602085015291517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b168152612cb69391926001600160a01b0316918791603090600401618712565b600060405180830381600087803b158015612cd057600080fd5b505af1158015612ce4573d6000803e3d6000fd5b5050601f546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b0316600482015260248101859052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015612d6557600080fd5b505af1158015612d79573d6000803e3d6000fd5b5050601f546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015612e0f57600080fd5b505af1158015612e23573d6000803e3d6000fd5b50506024546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150612e689085908590618497565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612ee257600080fd5b505af1158015612ef6573d6000803e3d6000fd5b5050601f546024546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b0361010090930483169450631cff79cd93508692612f4f92169086906004016184b0565b60006040518083038185885af1158015612f6d573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052612f96919081019061858b565b505050505050565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156114995760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561308157602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161302e5790505b50505050508152505081526020019060010190612fc2565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156114995783829060005260206000200180546130dc906180d5565b80601f0160208091040260200160405190810160405280929190818152602001828054613108906180d5565b80156131555780601f1061312a57610100808354040283529160200191613155565b820191906000526020600020905b81548152906001019060200180831161313857829003601f168201915b5050505050815260200190600101906130bd565b60085460009060ff1615613181575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015613212573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132369190618230565b1415905090565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a7640000906000907fe04d4f9700000000000000000000000000000000000000000000000000000000906132b990879087908790602401618249565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909516949094179093526024549051919350600092613352926001600160a01b03909216910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602c54613386926001600160a01b03909116908590602e9060309060240161877a565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f06cb89830000000000000000000000000000000000000000000000000000000017905260295490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391613443916001600160a01b03919091169060009086906004016183d9565b600060405180830381600087803b15801561345d57600080fd5b505af1158015613471573d6000803e3d6000fd5b5050602d546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156134e757600080fd5b505af11580156134fb573d6000803e3d6000fd5b5050602a5460245460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039091169250637a34d8bb915060340160408051601f1981840301815290829052602c547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168352613592926001600160a01b03909116908b908b908b906004016187cb565b600060405180830381600087803b1580156135ac57600080fd5b505af11580156135c0573d6000803e3d6000fd5b5050601f546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b0316600482015260248101869052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b15801561364157600080fd5b505af1158015613655573d6000803e3d6000fd5b5050602480546040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190529281018390526044810183905260648101929092526001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156136e857600080fd5b505af11580156136fc573d6000803e3d6000fd5b505050507f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa601f60019054906101000a90046001600160a01b03168488888860405161374c959493929190618456565b60405180910390a1601f546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156137e657600080fd5b505af11580156137fa573d6000803e3d6000fd5b50506024546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f915061383f9086908690618497565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156138b957600080fd5b505af11580156138cd573d6000803e3d6000fd5b5050601f546024546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b0361010090930483169450631cff79cd9350879261392692169087906004016184b0565b60006040518083038185885af1158015613944573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261396d919081019061858b565b50505050505050565b60606015805480602002602001604051908101604052809291908181526020018280548015611356576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611338575050505050905090565b60006139e0617b28565b6139eb848483613a74565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b158015613a6057600080fd5b505afa158015612f96573d6000803e3d6000fd5b600080613a818584613aef565b9050613ae46040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001613acf9291906184b0565b60405160208183030381529060405285613afb565b9150505b9392505050565b6000613ae88383613b29565b60c08101515160009015613b1f57613b1884848460c00151613b44565b9050613ae8565b613b188484613cea565b6000613b358383613dd5565b613ae883836020015184613afb565b600080613b4f613de5565b90506000613b5d8683613eb8565b90506000613b74826060015183602001518561435e565b90506000613b8483838989614570565b90506000613b91826153ed565b602081015181519192509060030b15613c0457898260400151604051602001613bbb929190618819565b60408051601f19818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252613bfb9160040161889a565b60405180910390fd5b6000613c476040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a2000000000000000000000008152508360016155bc565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90613c9a90849060040161889a565b602060405180830381865afa158015613cb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cdb91906188ad565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590613d3f90879060040161889a565b600060405180830381865afa158015613d5c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d84919081019061858b565b90506000613db28285604051602001613d9e9291906188d6565b6040516020818303038152906040526157bc565b90506001600160a01b0381166139eb578484604051602001613bbb929190618905565b613de1828260006157cf565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90613e6c9084906004016189b0565b600060405180830381865afa158015613e89573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613eb191908101906189f7565b9250505090565b613eea6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050613f356040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b613f3e856158d2565b60208201526000613f4e86615cb7565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015613f90573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613fb891908101906189f7565b86838560200151604051602001613fd29493929190618a40565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb119061402a90859060040161889a565b600060405180830381865afa158015614047573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261406f91908101906189f7565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f6906140b7908490600401618b44565b602060405180830381865afa1580156140d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140f89190617f8f565b61410d5781604051602001613bbb9190618b96565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890614152908490600401618c28565b600060405180830381865afa15801561416f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261419791908101906189f7565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f6906141de908490600401618c7a565b602060405180830381865afa1580156141fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061421f9190617f8f565b156142b4576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890614269908490600401618c7a565b600060405180830381865afa158015614286573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526142ae91908101906189f7565b60408501525b846001600160a01b03166349c4fac88286600001516040516020016142d99190618ccc565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401614305929190618d38565b600060405180830381865afa158015614322573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261434a91908101906189f7565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b606081526020019060019003908161437a5790505090506040518060400160405280600481526020017f6772657000000000000000000000000000000000000000000000000000000000815250816000815181106143da576143da618d5d565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061442e5761442e618d5d565b60200260200101819052508460405160200161444a9190618d8c565b6040516020818303038152906040528160028151811061446c5761446c618d5d565b6020026020010181905250826040516020016144889190618df8565b604051602081830303815290604052816003815181106144aa576144aa618d5d565b602002602001018190525060006144c0826153ed565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506145519060408051808201825260008082526020918201528151808301909252845182528085019082015290615f3a565b6145665785604051602001613bbb9190618e39565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d90156145c0565b511590565b6147345782602001511561467c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401613bfb565b8260c0015115614734576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401613bfb565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161474d57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806147a890618eca565b935060ff16815181106147bd576147bd618d5d565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e370000000000000000000000000000000000000081525060405160200161480e9190618ee9565b60405160208183030381529060405282828061482990618eca565b935060ff168151811061483e5761483e618d5d565b60200260200101819052506040518060400160405280600681526020017f6465706c6f79000000000000000000000000000000000000000000000000000081525082828061488b90618eca565b935060ff16815181106148a0576148a0618d5d565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806148ed90618eca565b935060ff168151811061490257614902618d5d565b6020026020010181905250876020015182828061491e90618eca565b935060ff168151811061493357614933618d5d565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163745061746800000000000000000000000000000000000081525082828061498090618eca565b935060ff168151811061499557614995618d5d565b6020908102919091010152875182826149ad81618eca565b935060ff16815181106149c2576149c2618d5d565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280614a0f90618eca565b935060ff1681518110614a2457614a24618d5d565b6020026020010181905250614a3846615f9b565b8282614a4381618eca565b935060ff1681518110614a5857614a58618d5d565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280614aa590618eca565b935060ff1681518110614aba57614aba618d5d565b602002602001018190525086828280614ad290618eca565b935060ff1681518110614ae757614ae7618d5d565b6020908102919091010152855115614c0e5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f6465000000000000000000000060208201528282614b3881618eca565b935060ff1681518110614b4d57614b4d618d5d565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90614b9d90899060040161889a565b600060405180830381865afa158015614bba573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614be291908101906189f7565b8282614bed81618eca565b935060ff1681518110614c0257614c02618d5d565b60200260200101819052505b846020015115614cde5760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282614c5781618eca565b935060ff1681518110614c6c57614c6c618d5d565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280614cb990618eca565b935060ff1681518110614cce57614cce618d5d565b6020026020010181905250614ea5565b614d166145bb8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b614da95760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614d5981618eca565b935060ff1681518110614d6e57614d6e618d5d565b60200260200101819052508460a00151604051602001614d8e9190618d8c565b604051602081830303815290604052828280614cb990618eca565b8460c00151158015614dec575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152614dea90511590565b155b15614ea55760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614e3081618eca565b935060ff1681518110614e4557614e45618d5d565b6020026020010181905250614e598861603b565b604051602001614e699190618d8c565b604051602081830303815290604052828280614e8490618eca565b935060ff1681518110614e9957614e99618d5d565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152614ed990511590565b614f6e5760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282614f1c81618eca565b935060ff1681518110614f3157614f31618d5d565b60200260200101819052508460400151828280614f4d90618eca565b935060ff1681518110614f6257614f62618d5d565b60200260200101819052505b60608501511561508f5760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282614fb781618eca565b935060ff1681518110614fcc57614fcc618d5d565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa15801561503b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261506391908101906189f7565b828261506e81618eca565b935060ff168151811061508357615083618d5d565b60200260200101819052505b60e085015151156151365760408051808201909152600a81527f2d2d6761734c696d697400000000000000000000000000000000000000000000602082015282826150d981618eca565b935060ff16815181106150ee576150ee618d5d565b602002602001018190525061510a8560e0015160000151615f9b565b828261511581618eca565b935060ff168151811061512a5761512a618d5d565b60200260200101819052505b60e085015160200151156151e05760408051808201909152600a81527f2d2d6761735072696365000000000000000000000000000000000000000000006020820152828261518381618eca565b935060ff168151811061519857615198618d5d565b60200260200101819052506151b48560e0015160200151615f9b565b82826151bf81618eca565b935060ff16815181106151d4576151d4618d5d565b60200260200101819052505b60e0850151604001511561528a5760408051808201909152600e81527f2d2d6d61784665655065724761730000000000000000000000000000000000006020820152828261522d81618eca565b935060ff168151811061524257615242618d5d565b602002602001018190525061525e8560e0015160400151615f9b565b828261526981618eca565b935060ff168151811061527e5761527e618d5d565b60200260200101819052505b60e085015160600151156153345760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826152d781618eca565b935060ff16815181106152ec576152ec618d5d565b60200260200101819052506153088560e0015160600151615f9b565b828261531381618eca565b935060ff168151811061532857615328618d5d565b60200260200101819052505b60008160ff1667ffffffffffffffff811115615352576153526180a6565b60405190808252806020026020018201604052801561538557816020015b60608152602001906001900390816153705790505b50905060005b8260ff168160ff1610156153de57838160ff16815181106153ae576153ae618d5d565b6020026020010151828260ff16815181106153cb576153cb618d5d565b602090810291909101015260010161538b565b5093505050505b949350505050565b6154146040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c9161549a91869101618f54565b600060405180830381865afa1580156154b7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526154df91908101906189f7565b905060006154ed8683616b2a565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161551d9190617e81565b6000604051808303816000875af115801561553c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526155649190810190618f9b565b805190915060030b1580159061557d5750602081015151155b801561558c5750604081015151155b1561456657816000815181106155a4576155a4618d5d565b6020026020010151604051602001613bbb9190619051565b606060006155f18560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506156289082905b90616c7f565b156157855760006156a58261569f8461569961566b8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90616ca6565b90616d08565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615709908290616c7f565b1561577357604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615770905b8290616d8d565b90505b61577c81616db3565b92505050613ae8565b821561579e578484604051602001613bbb92919061923d565b5050604080516020810190915260008152613ae8565b509392505050565b6000808251602084016000f09392505050565b8160a00151156157de57505050565b60006157eb848484616e1c565b905060006157f8826153ed565b602081015181519192509060030b1580156158945750604080518082018252600781527f53554343455353000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261589490604080518082018252600080825260209182015281518083019092528451825280850190820152615622565b156158a157505050505050565b604082015151156158c1578160400151604051602001613bbb91906192e4565b80604051602001613bbb9190619342565b606060006159078360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061596c905b8290615f3a565b156159db57604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613ae8906159d69083906173b7565b616db3565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615a3d905b8290617441565b600103615b0a57604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615aa390615769565b50604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613ae8906159d6905b8390616d8d565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615b6990615965565b15615ca057604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615bd19083906174db565b905060008160018351615be491906185ef565b81518110615bf457615bf4618d5d565b60200260200101519050615c976159d6615c6a6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528551825280860190820152906173b7565b95945050505050565b82604051602001613bbb91906193ad565b50919050565b60606000615cec8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615d4e90615965565b15615d5c57613ae881616db3565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615dbb90615a36565b600103615e2557604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613ae8906159d690615b03565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615e8490615965565b15615ca057604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615eec9083906174db565b9050600181511115615f28578060028251615f0791906185ef565b81518110615f1757615f17618d5d565b602002602001015192505050919050565b5082604051602001613bbb91906193ad565b805182516000911115615f4f575060006139ef565b81518351602085015160009291615f659161948b565b615f6f91906185ef565b905082602001518103615f865760019150506139ef565b82516020840151819020912014905092915050565b60606000615fa883617580565b600101905060008167ffffffffffffffff811115615fc857615fc86180a6565b6040519080825280601f01601f191660200182016040528015615ff2576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084615ffc57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e53454400000000000000000000000000000000000000000000818401908152855180870187528381528401929092528451808601909552518452908301526060916160c7905b8290617662565b1561610757505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616166906160c0565b156161a657505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616205906160c0565b1561624557505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526162a4906160c0565b806163095750604080518082018252601081527f47504c2d322e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616309906160c0565b1561634957505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163a8906160c0565b8061640d5750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261640d906160c0565b1561644d57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526164ac906160c0565b806165115750604080518082018252601181527f4c47504c2d322e312d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616511906160c0565b1561655157505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526165b0906160c0565b806166155750604080518082018252601181527f4c47504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616615906160c0565b1561665557505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526166b4906160c0565b156166f457505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616753906160c0565b1561679357505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526167f2906160c0565b1561683257505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616891906160c0565b156168d157505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e300000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616930906160c0565b1561697057505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526169cf906160c0565b80616a345750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616a34906160c0565b15616a7457505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e3100000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616ad3906160c0565b15616b1357505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151613bbb929060200161949e565b60608060005b8451811015616bb55781858281518110616b4c57616b4c618d5d565b6020026020010151604051602001616b659291906188d6565b604051602081830303815290604052915060018551616b8491906185ef565b8114616bad5781604051602001616b9b9190619607565b60405160208183030381529060405291505b600101616b30565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081616bce5790505090508381600081518110616bf957616bf9618d5d565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110616c4d57616c4d618d5d565b60200260200101819052508181600281518110616c6c57616c6c618d5d565b6020908102919091010152949350505050565b6020808301518351835192840151600093616c9d9291849190617676565b14159392505050565b60408051808201909152600080825260208201526000616cd88460000151856020015185600001518660200151617787565b9050836020015181616cea91906185ef565b84518590616cf99083906185ef565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015616d2d5750816139ef565b6020808301519084015160019114616d545750815160208481015190840151829020919020145b8015616d8557825184518590616d6b9083906185ef565b9052508251602085018051616d8190839061948b565b9052505b509192915050565b6040805180820190915260008082526020820152616dac8383836178a7565b5092915050565b60606000826000015167ffffffffffffffff811115616dd457616dd46180a6565b6040519080825280601f01601f191660200182016040528015616dfe576020820181803683370190505b5090506000602082019050616dac8185602001518660000151617952565b60606000616e28613de5565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081616e4557905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616ea090618eca565b935060ff1681518110616eb557616eb5618d5d565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001616f069190619648565b604051602081830303815290604052828280616f2190618eca565b935060ff1681518110616f3657616f36618d5d565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280616f8390618eca565b935060ff1681518110616f9857616f98618d5d565b602002602001018190525082604051602001616fb49190618df8565b604051602081830303815290604052828280616fcf90618eca565b935060ff1681518110616fe457616fe4618d5d565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e74726163740000000000000000000000000000000000000000000081525082828061703190618eca565b935060ff168151811061704657617046618d5d565b602002602001018190525061705b87846179cc565b828261706681618eca565b935060ff168151811061707b5761707b618d5d565b6020908102919091010152855151156171275760408051808201909152600b81527f2d2d7265666572656e6365000000000000000000000000000000000000000000602082015282826170cd81618eca565b935060ff16815181106170e2576170e2618d5d565b60200260200101819052506170fb8660000151846179cc565b828261710681618eca565b935060ff168151811061711b5761711b618d5d565b60200260200101819052505b8560800151156171955760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261717081618eca565b935060ff168151811061718557617185618d5d565b60200260200101819052506171fb565b84156171fb5760408051808201909152601281527f2d2d726571756972655265666572656e63650000000000000000000000000000602082015282826171da81618eca565b935060ff16815181106171ef576171ef618d5d565b60200260200101819052505b604086015151156172975760408051808201909152600d81527f2d2d756e73616665416c6c6f77000000000000000000000000000000000000006020820152828261724581618eca565b935060ff168151811061725a5761725a618d5d565b6020026020010181905250856040015182828061727690618eca565b935060ff168151811061728b5761728b618d5d565b60200260200101819052505b8560600151156173015760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d6573000000000000000000000000602082015282826172e081618eca565b935060ff16815181106172f5576172f5618d5d565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561731f5761731f6180a6565b60405190808252806020026020018201604052801561735257816020015b606081526020019060019003908161733d5790505b50905060005b8260ff168160ff1610156173ab57838160ff168151811061737b5761737b618d5d565b6020026020010151828260ff168151811061739857617398618d5d565b6020908102919091010152600101617358565b50979650505050505050565b60408051808201909152600080825260208201528151835110156173dc5750816139ef565b815183516020850151600092916173f29161948b565b6173fc91906185ef565b6020840151909150600190821461741d575082516020840151819020908220145b8015617438578351855186906174349083906185ef565b9052505b50929392505050565b60008082600001516174658560000151866020015186600001518760200151617787565b61746f919061948b565b90505b83516020850151617483919061948b565b8111616dac57816174938161968d565b92505082600001516174ca8560200151836174ae91906185ef565b86516174ba91906185ef565b8386600001518760200151617787565b6174d4919061948b565b9050617472565b606060006174e98484617441565b6174f490600161948b565b67ffffffffffffffff81111561750c5761750c6180a6565b60405190808252806020026020018201604052801561753f57816020015b606081526020019060019003908161752a5790505b50905060005b81518110156157b45761755b6159d68686616d8d565b82828151811061756d5761756d618d5d565b6020908102919091010152600101617545565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106175c9577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106175f5576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061761357662386f26fc10000830492506010015b6305f5e100831061762b576305f5e100830492506008015b612710831061763f57612710830492506004015b60648310617651576064830492506002015b600a83106139ef5760010192915050565b600061766e8383617a0c565b159392505050565b60008085841161777d576020841161772957600084156176c157600161769d8660206185ef565b6176a89060086196a7565b6176b39060026197a5565b6176bd91906185ef565b1990505b83518116856176d0898961948b565b6176da91906185ef565b805190935082165b818114617714578784116176fc57879450505050506153e5565b83617706816197b1565b9450508284511690506176e2565b61771e878561948b565b9450505050506153e5565b83832061773685886185ef565b617740908761948b565b91505b85821061777b578482208082036177685761775e868461948b565b93505050506153e5565b6177736001846185ef565b925050617743565b505b5092949350505050565b60008381868511617892576020851161784157600085156177d35760016177af8760206185ef565b6177ba9060086196a7565b6177c59060026197a5565b6177cf91906185ef565b1990505b845181166000876177e48b8b61948b565b6177ee91906185ef565b855190915083165b8281146178335781861061781b5761780e8b8b61948b565b96505050505050506153e5565b856178258161968d565b9650508386511690506177f6565b8596505050505050506153e5565b508383206000905b61785386896185ef565b82116178905785832080820361786f57839450505050506153e5565b61787a60018561948b565b93505081806178889061968d565b925050617849565b505b61789c878761948b565b979650505050505050565b604080518082019091526000808252602082015260006178d98560000151866020015186600001518760200151617787565b6020808701805191860191909152519091506178f590826185ef565b835284516020860151617908919061948b565b81036179175760008552617949565b83518351617925919061948b565b855186906179349083906185ef565b9052508351617943908261948b565b60208601525b50909392505050565b6020811061798a578151835261796960208461948b565b925061797660208361948b565b91506179836020826185ef565b9050617952565b60001981156179b95760016179a08360206185ef565b6179ac906101006197a5565b6179b691906185ef565b90505b9151835183169219169190911790915250565b606060006179da8484613eb8565b80516020808301516040519394506179f4939091016197c8565b60405160208183030381529060405291505092915050565b8151815160009190811115617a1f575081515b6020808501519084015160005b83811015617ad85782518251808214617aa8576000196020871015617a8757600184617a598960206185ef565b617a63919061948b565b617a6e9060086196a7565b617a799060026197a5565b617a8391906185ef565b1990505b8181168382168181039114617aa55797506139ef9650505050505050565b50505b617ab360208661948b565b9450617ac060208561948b565b93505050602081617ad1919061948b565b9050617a2c565b50845186516145669190619820565b610c9f8061984183390190565b610ec28061a4e083390190565b610aa98061b3a283390190565b610b3f8061be4b83390190565b6120728061c98a83390190565b6040518060e00160405280606081526020016060815260200160608152602001600015158152602001600015158152602001600015158152602001617b6b617b70565b905290565b60405180610100016040528060001515815260200160001515815260200160608152602001600080191681526020016060815260200160608152602001600015158152602001617b6b6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b81811015617c225783516001600160a01b0316835260209384019390920191600101617bfb565b509095945050505050565b60005b83811015617c48578181015183820152602001617c30565b50506000910152565b60008151808452617c69816020860160208601617c2d565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617d79577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015617d5f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352617d49848651617c51565b6020958601959094509290920191600101617d0f565b509197505050602094850194929092019150600101617ca5565b50929695505050505050565b600081518084526020840193506020830160005b82811015617dd95781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101617d99565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617d79577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752617e4f6040880182617c51565b9050602082015191508681036020880152617e6a8183617d85565b965050506020938401939190910190600101617e0b565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617d79577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452617ee3858351617c51565b94506020938401939190910190600101617ea9565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617d79577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152617f796040870182617d85565b9550506020938401939190910190600101617f20565b600060208284031215617fa157600080fd5b81518015158114613ae857600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff881660408301528660608301526003861061806b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a083015261808c60c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600181811c908216806180e957607f821691505b602082108103615cb1577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b601f82111561816c57806000526020600020601f840160051c810160208510156181495750805b601f840160051c820191505b818110156181695760008155600101618155565b50505b505050565b815167ffffffffffffffff81111561818b5761818b6180a6565b61819f8161819984546180d5565b84618122565b6020601f8211600181146181d357600083156181bb5750848201515b600019600385901b1c1916600184901b178455618169565b600084815260208120601f198516915b8281101561820357878501518255602094850194600190920191016181e3565b50848210156182215786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b60006020828403121561824257600080fd5b5051919050565b60608152600061825c6060830186617c51565b602083019490945250901515604090910152919050565b600081546001600160a01b038116845260ff8160a01c1615156020850152506001600160a01b0360018301541660408401526002820160a06060850152600081546182bd816180d5565b8060a088015260018216600081146182dc57600181146183165761834a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831660c089015260c082151560051b890101935061834a565b84600052602060002060005b838110156183415781548a820160c00152600190910190602001618322565b890160c0019450505b50505060038401546080860152809250505092915050565b60e08152600061837560e0830189617c51565b62ffffff881660208401526001600160a01b038716604084015282810360608401526183a18187617c51565b85546080850152600186015460ff16151560a085015290505b82810360c08401526183cc8185618273565b9998505050505050505050565b6001600160a01b0384168152826020820152606060408201526000615c976060830184617c51565b60c08152600061841460c0830189617c51565b8760208401526001600160a01b0387166040840152828103606084015261843b8187617c51565b6080840195909552505090151560a090910152949350505050565b6001600160a01b038616815284602082015260a06040820152600061847e60a0830186617c51565b6060830194909452509015156080909101529392505050565b8281526040602082015260006153e56040830184617c51565b6001600160a01b03831681526040602082015260006153e56040830184617c51565b6040516060810167ffffffffffffffff811182821017156184f5576184f56180a6565b60405290565b60008067ffffffffffffffff841115618516576185166180a6565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715618545576185456180a6565b60405283815290508082840185101561855d57600080fd5b6157b4846020830185617c2d565b600082601f83011261857c57600080fd5b613ae8838351602085016184fb565b60006020828403121561859d57600080fd5b815167ffffffffffffffff8111156185b457600080fd5b6139eb8482850161856b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156139ef576139ef6185c0565b6101208152600061861761012083018b617c51565b6001600160a01b038a16602084015288604084015287606084015286608084015282810360a084015261864a8187617c51565b855160c08501526020860151151560e08501529050828103610100840152613cdb8185618273565b60e08152600061868560e0830189617c51565b8760208401526001600160a01b038716604084015282810360608401526186ac8187617c51565b855160808501526020860151151560a085015290506183ba565b60a0815260006186d960a0830187617c51565b82810360208401526186eb8187617c51565b855160408501526020860151151560608501529050828103608084015261789c8185618273565b60c08152600061872560c0830188617c51565b6001600160a01b038716602084015282810360408401526187468187617c51565b8551606085015260208601511515608085015290505b82810360a084015261876e8185618273565b98975050505050505050565b60c08152600061878d60c0830188617c51565b6001600160a01b038716602084015282810360408401526187ae8187617c51565b85546060850152600186015460ff1615156080850152905061875c565b60a0815260006187de60a0830188617c51565b6001600160a01b038716602084015282810360408401526187ff8187617c51565b606084019590955250509015156080909101529392505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161885181601a850160208801617c2d565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161888e81601c840160208801617c2d565b01601c01949350505050565b602081526000613ae86020830184617c51565b6000602082840312156188bf57600080fd5b81516001600160a01b0381168114613ae857600080fd5b600083516188e8818460208801617c2d565b8351908301906188fc818360208801617c2d565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161893d81601a850160208801617c2d565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161897a816033840160208801617c2d565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000613ae86080830184617c51565b600060208284031215618a0957600080fd5b815167ffffffffffffffff811115618a2057600080fd5b8201601f81018413618a3157600080fd5b6139eb848251602084016184fb565b60008551618a52818460208a01617c2d565b7f2f000000000000000000000000000000000000000000000000000000000000009083019081528551618a8c816001840160208a01617c2d565b7f2f00000000000000000000000000000000000000000000000000000000000000600192909101918201528451618aca816002840160208901617c2d565b6001818301019150507f2f0000000000000000000000000000000000000000000000000000000000000060018201528351618b0c816002840160208801617c2d565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b604081526000618b576040830184617c51565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251618bce81601f850160208701617c2d565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b604081526000618c3b6040830184617c51565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b604081526000618c8d6040830184617c51565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251618d04816014850160208701617c2d565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b604081526000618d4b6040830185617c51565b8281036020840152613ae48185617c51565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f2200000000000000000000000000000000000000000000000000000000000000815260008251618dc4816001850160208701617c2d565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b60008251618e0a818460208701617c2d565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e747261637420000000000000000000000000000000000000000000604082015260008251618ebd81604b850160208701617c2d565b91909101604b0192915050565b600060ff821660ff8103618ee057618ee06185c0565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c69400000000000000000000000000000000000000000000000602082015260008251618f47816029850160208701617c2d565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000613ae86080830184617c51565b600060208284031215618fad57600080fd5b815167ffffffffffffffff811115618fc457600080fd5b820160608185031215618fd657600080fd5b618fde6184d2565b81518060030b8114618fef57600080fd5b8152602082015167ffffffffffffffff81111561900b57600080fd5b6190178682850161856b565b602083015250604082015167ffffffffffffffff81111561903757600080fd5b6190438682850161856b565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f22000000000000000000000000000000000000000000000000000000000000006020820152600082516190af816021850160208701617c2d565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161929b816021850160208801617c2d565b7f2720696e206f75747075743a200000000000000000000000000000000000000060219184019182015283516192d881602e840160208801617c2d565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a200000000000000000000000000000000000000000000000602082015260008251618f47816029850160208701617c2d565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a0000000000000000000000000000000000000000000000000000000000006020820152600082516193a0816022850160208701617c2d565b9190910160220192915050565b7f436f6e7472616374206e616d65200000000000000000000000000000000000008152600082516193e581600e850160208701617c2d565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b808201808211156139ef576139ef6185c0565b7f53504458206c6963656e7365206964656e7469666965722000000000000000008152600083516194d6816018850160208801617c2d565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161951381601c840160208801617c2d565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251619619818460208701617c2d565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161968081601c850160208701617c2d565b91909101601c0192915050565b600060001982036196a0576196a06185c0565b5060010190565b80820281158282048414176139ef576139ef6185c0565b6001815b60018411156196f9578085048111156196dd576196dd6185c0565b60018416156196eb57908102905b60019390931c9280026196c2565b935093915050565b600082619710575060016139ef565b8161971d575060006139ef565b8160018114619733576002811461973d57619759565b60019150506139ef565b60ff84111561974e5761974e6185c0565b50506001821b6139ef565b5060208310610133831016604e8410600b841016171561977c575081810a6139ef565b61978960001984846196be565b806000190482111561979d5761979d6185c0565b029392505050565b6000613ae88383619701565b6000816197c0576197c06185c0565b506000190190565b600083516197da818460208801617c2d565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351619814816001840160208801617c2d565b01600101949350505050565b8181036000831280158383131683831282161715616dac57616dac6185c056fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212205f76808fb3dc6dacf4bd766b2d0bf9d6beb64856c952cec8e267368511bd936a64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610e9e806100246000396000f3fe60806040526004361061006e5760003560e01c8063c51316911161004b578063c5131691146100d5578063c9028a36146100f5578063e04d4f9714610115578063f05b6abf1461012857005b8063357fc5a214610077578063676cc054146100975780636ed70169146100c057005b3661007557005b005b34801561008357600080fd5b506100756100923660046106ec565b610148565b6100aa6100a5366004610728565b6101de565b6040516100b79190610823565b60405180910390f35b3480156100cc57600080fd5b50610075610222565b3480156100e157600080fd5b506100756100f03660046106ec565b610257565b34801561010157600080fd5b50610075610110366004610836565b610332565b610075610123366004610996565b61036e565b34801561013457600080fd5b50610075610143366004610a82565b6103b2565b6101506103e7565b61017273ffffffffffffffffffffffffffffffffffffffff831633838661042a565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101d96001600055565b505050565b6040516060907f3658b46bab672c7672b69c2f0feda706eabdb7d2231421c96e9049b2db5e7eee90600090a1506040805160208101909152600081525b9392505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b61025f6103e7565b600061026c600285610b6c565b9050806000036102a8576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102ca73ffffffffffffffffffffffffffffffffffffffff841633848461042a565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101d96001600055565b7f689a5a5cb55e795ffe4cd8b419cd3bb0a3373974c54d25f64e734d7388b93e9b3382604051610363929190610bf0565b60405180910390a150565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa33348585856040516103a5959493929190610ce2565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103a59493929190610d6c565b600260005403610423576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526104bf9085906104c5565b50505050565b60006104e773ffffffffffffffffffffffffffffffffffffffff841683610560565b9050805160001415801561050c57508080602001905181019061050a9190610e2f565b155b156101d9576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061021b83836000846000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105939190610e4c565b60006040518083038185875af1925050503d80600081146105d0576040519150601f19603f3d011682016040523d82523d6000602084013e6105d5565b606091505b50915091506105e58683836105ef565b9695505050505050565b606082610604576105ff8261067e565b61021b565b8151158015610628575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610677576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610557565b508061021b565b80511561068e5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106e757600080fd5b919050565b60008060006060848603121561070157600080fd5b83359250610711602085016106c3565b915061071f604085016106c3565b90509250925092565b6000806000838503604081121561073e57600080fd5b602081121561074c57600080fd5b50839250602084013567ffffffffffffffff81111561076a57600080fd5b8401601f8101861361077b57600080fd5b803567ffffffffffffffff81111561079257600080fd5b8660208284010111156107a457600080fd5b939660209190910195509293505050565b60005b838110156107d05781810151838201526020016107b8565b50506000910152565b600081518084526107f18160208601602086016107b5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061021b60208301846107d9565b60006020828403121561084857600080fd5b813567ffffffffffffffff81111561085f57600080fd5b82016080818503121561021b57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156108e7576108e7610871565b604052919050565b600082601f83011261090057600080fd5b813567ffffffffffffffff81111561091a5761091a610871565b61094b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016108a0565b81815284602083860101111561096057600080fd5b816020850160208301376000918101602001919091529392505050565b80151581146106c057600080fd5b80356106e78161097d565b6000806000606084860312156109ab57600080fd5b833567ffffffffffffffff8111156109c257600080fd5b6109ce868287016108ef565b9350506020840135915060408401356109e68161097d565b809150509250925092565b600067ffffffffffffffff821115610a0b57610a0b610871565b5060051b60200190565b600082601f830112610a2657600080fd5b8135610a39610a34826109f1565b6108a0565b8082825260208201915060208360051b860101925085831115610a5b57600080fd5b602085015b83811015610a78578035835260209283019201610a60565b5095945050505050565b600080600060608486031215610a9757600080fd5b833567ffffffffffffffff811115610aae57600080fd5b8401601f81018613610abf57600080fd5b8035610acd610a34826109f1565b8082825260208201915060208360051b850101925088831115610aef57600080fd5b602084015b83811015610b3157803567ffffffffffffffff811115610b1357600080fd5b610b228b6020838901016108ef565b84525060209283019201610af4565b509550505050602084013567ffffffffffffffff811115610b5157600080fd5b610b5d86828701610a15565b92505061071f6040850161098b565b600082610ba2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015273ffffffffffffffffffffffffffffffffffffffff610c2e836106c3565b16604082015273ffffffffffffffffffffffffffffffffffffffff610c55602084016106c3565b166060820152600080604084013590508060808401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610ca157600080fd5b830160208101903567ffffffffffffffff811115610cbe57600080fd5b803603821315610ccd57600080fd5b608060a08501526105e560c085018284610ba7565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610d1760a08301866107d9565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610d62578151865260209586019590910190600101610d44565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610dff577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610dea8583516107d9565b94506020938401939190910190600101610db0565b505050508281036040840152610e158186610d30565b915050610e26606083018415159052565b95945050505050565b600060208284031215610e4157600080fd5b815161021b8161097d565b60008251610e5e8184602087016107b5565b919091019291505056fea2646970667358221220dbbcdb2ae8ea201fd0567f815d9a6ce082b3a1b6ed3f6fce312e955f9aa11e1364736f6c634300081a00336080604052348015600f57600080fd5b50604051610aa9380380610aa9833981016040819052602c916050565b600080546001600160a01b0319166001600160a01b0392909216919091179055607e565b600060208284031215606157600080fd5b81516001600160a01b0381168114607757600080fd5b9392505050565b610a1c8061008d6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b5780637a34d8bb146100a4575b600080fd5b610059610054366004610658565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b23660046106f8565b61032a565b60008383836040516024016100ce939291906107f4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490915073ffffffffffffffffffffffffffffffffffffffff8087169163095ea7b3911661017589600261081e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016020604051808303816000875af11580156101e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610209919061085e565b61023f576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160a081018252610321808252600160208084018290528385019290925283518083018552600080825260608501919091526080840181905284518086018652918252918101829052905492517f7b15118b0000000000000000000000000000000000000000000000000000000081529192909173ffffffffffffffffffffffffffffffffffffffff90911690637b15118b906102ed908c908c908c90899088908a906004016108f7565b600060405180830381600087803b15801561030757600080fd5b505af115801561031b573d6000803e3d6000fd5b50505050505050505050505050565b6000838383604051602401610341939291906107f4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f9700000000000000000000000000000000000000000000000000000000179052815160a081018352610321808252600182840181905282850191909152835180840185526000808252606084019190915260808301819052845180860186528281529384018190525493517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9485166004820152602481019190915293945092909188169063095ea7b3906044016020604051808303816000875af115801561047c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a0919061085e565b506000546040517f06cb898300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906306cb8983906104ff908b908b90889087908990600401610972565b600060405180830381600087803b15801561051957600080fd5b505af115801561052d573d6000803e3d6000fd5b505050505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261057b57600080fd5b81356020830160008067ffffffffffffffff84111561059c5761059c61053b565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff821117156105e9576105e961053b565b60405283815290508082840187101561060157600080fd5b838360208301376000602085830101528094505050505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461064257600080fd5b919050565b801515811461065557600080fd5b50565b60008060008060008060c0878903121561067157600080fd5b863567ffffffffffffffff81111561068857600080fd5b61069489828a0161056a565b965050602087013594506106aa6040880161061e565b9350606087013567ffffffffffffffff8111156106c657600080fd5b6106d289828a0161056a565b9350506080870135915060a08701356106ea81610647565b809150509295509295509295565b600080600080600060a0868803121561071057600080fd5b853567ffffffffffffffff81111561072757600080fd5b6107338882890161056a565b9550506107426020870161061e565b9350604086013567ffffffffffffffff81111561075e57600080fd5b61076a8882890161056a565b93505060608601359150608086013561078281610647565b809150509295509295909350565b6000815180845260005b818110156107b65760208185018101518683018201520161079a565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6060815260006108076060830186610790565b602083019490945250901515604090910152919050565b80820180821115610858577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b60006020828403121561087057600080fd5b815161087b81610647565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff815116825260208101511515602083015273ffffffffffffffffffffffffffffffffffffffff60408201511660408301526000606082015160a060608501526108e360a0850182610790565b608093840151949093019390935250919050565b60e08152600061090a60e0830189610790565b87602084015273ffffffffffffffffffffffffffffffffffffffff87166040840152828103606084015261093e8187610790565b855160808501526020860151151560a0850152905082810360c08401526109658185610882565b9998505050505050505050565b60c08152600061098560c0830188610790565b73ffffffffffffffffffffffffffffffffffffffff8716602084015282810360408401526109b38187610790565b85516060850152602086015115156080850152905082810360a08401526109da8185610882565b9897505050505050505056fea2646970667358221220d2d83917c03bf0724d6e5650a4d115d95ab995c626c4ba36ed34f13ed6ed06a964736f6c634300081a0033608060405234801561001057600080fd5b50604051610b3f380380610b3f83398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a348061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fd565b6103a0565b6101416101da36600461081f565b610419565b6101046101ed366004610841565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610884565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108b0565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e90610366908490899089908990899060040161091b565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff8111156107b257600080fd5b8601601f810188136107c357600080fd5b803567ffffffffffffffff8111156107da57600080fd5b8860208284010111156107ec57600080fd5b959894975092955050506020019190565b60006020828403121561080f57600080fd5b61081882610737565b9392505050565b6000806040838503121561083257600080fd5b50508035926020909101359150565b60008060006060848603121561085657600080fd5b61085f84610737565b925061086d60208501610737565b915061087b60408501610737565b90509250925092565b6000806040838503121561089757600080fd5b823591506108a760208401610737565b90509250929050565b6000602082840312156108c257600080fd5b8151801515811461081857600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610953576020818401810151610100878401015201610935565b5060008482016101000152602089015173ffffffffffffffffffffffffffffffffffffffff811660a0860152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168401915050604088015160c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401526101008382030160608401526109f2610100820185876108d2565b9897505050505050505056fea2646970667358221220eb281f71b1a10df3d88243dcf9e9ff7f57e8f4bc6018408c57e8ef3bb671313d64736f6c634300081a003360c060405234801561001057600080fd5b5060405161207238038061207283398101604081905261002f916101f0565b6001600160a01b038216158061004c57506001600160a01b038116155b1561006a5760405163d92e233d60e01b815260040160405180910390fd5b60066100768982610342565b5060076100838882610342565b506008805460ff191660ff881617905560808590528360028111156100aa576100aa610400565b60a08160028111156100be576100be610400565b905250600192909255600080546001600160a01b039283166001600160a01b0319909116179055600880549190921661010002610100600160a81b0319909116179055506104169350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261013357600080fd5b81516001600160401b0381111561014c5761014c61010c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561017a5761017a61010c565b60405281815283820160200185101561019257600080fd5b60005b828110156101b157602081860181015183830182015201610195565b506000918101602001919091529392505050565b8051600381106101d457600080fd5b919050565b80516001600160a01b03811681146101d457600080fd5b600080600080600080600080610100898b03121561020d57600080fd5b88516001600160401b0381111561022357600080fd5b61022f8b828c01610122565b60208b015190995090506001600160401b0381111561024d57600080fd5b6102598b828c01610122565b975050604089015160ff8116811461027057600080fd5b60608a0151909650945061028660808a016101c5565b60a08a0151909450925061029c60c08a016101d9565b91506102aa60e08a016101d9565b90509295985092959890939650565b600181811c908216806102cd57607f821691505b6020821081036102ed57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561033d57806000526020600020601f840160051c8101602085101561031a5750805b601f840160051c820191505b8181101561033a5760008155600101610326565b50505b505050565b81516001600160401b0381111561035b5761035b61010c565b61036f8161036984546102b9565b846102f3565b6020601f8211600181146103a3576000831561038b5750848201515b600019600385901b1c1916600184901b17845561033a565b600084815260208120601f198516915b828110156103d357878501518255602094850194600190920191016103b3565b50848210156103f15786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a051611c1b61045760003960006103440152600081816102f001528181610bdc01528181610ce201528181610efe01526110040152611c1b6000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c806395d89b41116100f9578063ccc7759911610097578063eddeb12311610071578063eddeb12314610461578063f2441b3214610474578063f687d12a14610494578063fc5fecd5146104a757600080fd5b8063ccc77599146103d4578063d9eeebed146103e7578063dd62ed3e1461041b57600080fd5b8063b84c8246116100d3578063b84c824614610386578063c47f00271461039b578063c7012626146103ae578063c835d7cc146103c157600080fd5b806395d89b4114610337578063a3413d031461033f578063a9059cbb1461037357600080fd5b80633ce4a5bc116101665780634d8943bb116101405780634d8943bb146102ac57806370a08231146102b557806385e1f4d0146102eb5780638b851b951461031257600080fd5b80633ce4a5bc1461024657806342966c681461028657806347e7ef241461029957600080fd5b806318160ddd1161019757806318160ddd1461021657806323b872dd1461021e578063313ce5671461023157600080fd5b806306fdde03146101be578063091d2788146101dc578063095ea7b3146101f3575b600080fd5b6101c66104ba565b6040516101d39190611648565b60405180910390f35b6101e560015481565b6040519081526020016101d3565b610206610201366004611687565b61054c565b60405190151581526020016101d3565b6005546101e5565b61020661022c3660046116b3565b610563565b60085460405160ff90911681526020016101d3565b61026173735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d3565b6102066102943660046116f4565b6105fa565b6102066102a7366004611687565b61060e565b6101e560025481565b6101e56102c336600461170d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6101e57f000000000000000000000000000000000000000000000000000000000000000081565b60085461026190610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6101c6610767565b6103667f000000000000000000000000000000000000000000000000000000000000000081565b6040516101d3919061172a565b610206610381366004611687565b610776565b610399610394366004611832565b610783565b005b6103996103a9366004611832565b6107e0565b6102066103bc366004611883565b610839565b6103996103cf36600461170d565b610988565b6103996103e236600461170d565b610a9c565b6103ef610bb0565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101d3565b6101e56104293660046118dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205490565b61039961046f3660046116f4565b610dce565b6000546102619073ffffffffffffffffffffffffffffffffffffffff1681565b6103996104a23660046116f4565b610e50565b6103ef6104b53660046116f4565b610ed2565b6060600680546104c990611915565b80601f01602080910402602001604051908101604052809291908181526020018280546104f590611915565b80156105425780601f1061051757610100808354040283529160200191610542565b820191906000526020600020905b81548152906001019060200180831161052557829003601f168201915b5050505050905090565b60006105593384846110ee565b5060015b92915050565b60006105708484846111f7565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460209081526040808320338452909152902054828110156105db576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105ef85336105ea8685611997565b6110ee565b506001949350505050565b600061060633836113b2565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab1480159061064c575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156106755750600854610100900473ffffffffffffffffffffffffffffffffffffffff163314155b156106ac576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106b683836114f4565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526107569186906119aa565b60405180910390a250600192915050565b6060600780546104c990611915565b60006105593384846111f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab146107d0576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60076107dc8282611a1b565b5050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461082d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60066107dc8282611a1b565b6000806000610846610bb0565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156108d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fc9190611b34565b610932576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61093c33856113b2565b60025460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161097591899189918791611b56565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146109d5576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a22576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610ae9576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610b36576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c679190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610cb6576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d699190611ba2565b905080600003610da5576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060025460015483610db89190611bbb565b610dc29190611bd2565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e1b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610a91565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e9d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610f65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f899190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610fd8576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015611067573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108b9190611ba2565b9050806000036110c7576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000906110d78784611bbb565b6110e19190611bd2565b9296929550919350505050565b73ffffffffffffffffffffffffffffffffffffffff831661113b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611188576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611244576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611291576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040902054818110156112f1576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112fb8282611997565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260036020526040808220939093559085168152908120805484929061133e908490611bd2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113a491815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff82166113ff576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260409020548181101561145f576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114698282611997565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260036020526040812091909155600580548492906114a4908490611997565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016111ea565b73ffffffffffffffffffffffffffffffffffffffff8216611541576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008282546115539190611bd2565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805483929061158d908490611bd2565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561160a576020818501810151868301820152016115ee565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061165b60208301846115e4565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461168457600080fd5b50565b6000806040838503121561169a57600080fd5b82356116a581611662565b946020939093013593505050565b6000806000606084860312156116c857600080fd5b83356116d381611662565b925060208401356116e381611662565b929592945050506040919091013590565b60006020828403121561170657600080fd5b5035919050565b60006020828403121561171f57600080fd5b813561165b81611662565b6020810160038310611765577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff8411156117b5576117b561176b565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff821117156118025761180261176b565b60405283815290508082840185101561181a57600080fd5b83836020830137600060208583010152509392505050565b60006020828403121561184457600080fd5b813567ffffffffffffffff81111561185b57600080fd5b8201601f8101841361186c57600080fd5b61187b8482356020840161179a565b949350505050565b6000806040838503121561189657600080fd5b823567ffffffffffffffff8111156118ad57600080fd5b8301601f810185136118be57600080fd5b6118cd8582356020840161179a565b95602094909401359450505050565b600080604083850312156118ef57600080fd5b82356118fa81611662565b9150602083013561190a81611662565b809150509250929050565b600181811c9082168061192957607f821691505b602082108103611962577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561055d5761055d611968565b6040815260006119bd60408301856115e4565b90508260208301529392505050565b601f821115611a1657806000526020600020601f840160051c810160208510156119f35750805b601f840160051c820191505b81811015611a1357600081556001016119ff565b50505b505050565b815167ffffffffffffffff811115611a3557611a3561176b565b611a4981611a438454611915565b846119cc565b6020601f821160018114611a9b5760008315611a655750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611a13565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015611ae95787850151825560209485019460019092019101611ac9565b5084821015611b2557868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b600060208284031215611b4657600080fd5b8151801515811461165b57600080fd5b608081526000611b6960808301876115e4565b6020830195909552506040810192909252606090910152919050565b600060208284031215611b9757600080fd5b815161165b81611662565b600060208284031215611bb457600080fd5b5051919050565b808202811582820484141761055d5761055d611968565b8082018082111561055d5761055d61196856fea26469706673582212202a06c5d72036d88c206ff2bfdd016b3ce8555bc0090e8bb5487bc61ea043732b64736f6c634300081a0033a2646970667358221220797b5e7fc06ece3174e5a68d18264a2ebb60e9ddd556f78f7c95575a184f27c564736f6c634300081a0033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061ea318061003c6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806385226c81116100b2578063b5508aa911610081578063d7a525fc11610066578063d7a525fc146101ec578063e20c9f71146101f4578063fa7626d4146101fc57600080fd5b8063b5508aa9146101cc578063ba414fa6146101d457600080fd5b806385226c8114610192578063916a17c6146101a75780639683c695146101bc578063b0464fdc146101c457600080fd5b80633f7286f4116100ee5780633f7286f414610165578063524744131461016d57806366d9a9a0146101755780636ff15ccc1461018a57600080fd5b80630a9254e4146101205780631ed7831c1461012a5780632ade3880146101485780633e5e3c231461015d575b600080fd5b610128610209565b005b6101326112fe565b60405161013f9190617be1565b60405180910390f35b610150611360565b60405161013f9190617c7d565b6101326114a2565b610132611502565b610128611562565b61017d611de6565b60405161013f9190617de3565b610128611f68565b61019a6127b1565b60405161013f9190617e81565b6101af612881565b60405161013f9190617ef8565b61012861297c565b6101af612f9e565b61019a613099565b6101dc613169565b604051901515815260200161013f565b61012861323d565b610132613976565b601f546101dc9060ff1681565b602580547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602680548216611234179055602780548216615678179055602d805490911661432117905560405161026790617ae7565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f0801580156102ec573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405161033190617ae7565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f0801580156103b5573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600e81527f4761746577617945564d2e736f6c0000000000000000000000000000000000006020820152602754602554925190851660248201526044810193909352921660648201526000916104a7916084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc0c53b8b000000000000000000000000000000000000000000000000000000001790526139d6565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0384811682029290921792839055604080518082018252601081527f4552433230437573746f64792e736f6c000000000000000000000000000000006020820152602754602554925193909504841660248401529383166044830152909116606482015291925061054a9160840161044a565b602080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03838116919091178255604080518082018252601a81527f5a657461436f6e6e6563746f724e6f6e4e61746976652e736f6c00000000000093810193909352601f546023546027546025549351610100909304851660248401529084166044830152831660648201529116608482015291925061064e9160a40160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff8c8765e000000000000000000000000000000000000000000000000000000001790526139d6565b602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03838116919091179091556027546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561070057600080fd5b505af1158015610714573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b15801561078a57600080fd5b505af115801561079e573d6000803e3d6000fd5b5050601f546020546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261010090920416925063ae7a3a6f9150602401600060405180830381600087803b15801561080957600080fd5b505af115801561081d573d6000803e3d6000fd5b5050601f546021546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526101009092041692506310188aef9150602401600060405180830381600087803b15801561088857600080fd5b505af115801561089c573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156108fe57600080fd5b505af1158015610912573d6000803e3d6000fd5b50506022546025546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f42406024820152911692506340c10f199150604401600060405180830381600087803b15801561098157600080fd5b505af1158015610995573d6000803e3d6000fd5b50506022546020546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12060248201529116925063a9059cbb91506044016020604051808303816000875af1158015610a09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a2d9190617f8f565b50604051610a3a90617af4565b604051809103906000f080158015610a56573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316178155604080518082018252600f81527f476174657761795a45564d2e736f6c00000000000000000000000000000000006020820152602354602d5492519085169381019390935292166044820152610b3c919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc955000000000000000000000000000000000000000000000000000000001790526139d6565b602880546001600160a01b03929092167fffffffffffffffffffffffff00000000000000000000000000000000000000009283168117909155602980549092168117909155604051610b8d90617b01565b6001600160a01b039091168152602001604051809103906000f080158015610bb9573d6000803e3d6000fd5b50602a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040517f06447d5600000000000000000000000000000000000000000000000000000000815273735b14bb79463307aacbed86daf3322b1e6226ab6004820181905290737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b158015610c6e57600080fd5b505af1158015610c82573d6000803e3d6000fd5b505050506000806000604051610c9790617b0e565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610cd3573d6000803e3d6000fd5b50602b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602954604051601293600193600093849391921690610d2990617b1b565b610d3896959493929190617fb1565b604051809103906000f080158015610d54573d6000803e3d6000fd5b50602c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602b546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b158015610deb57600080fd5b505af1158015610dff573d6000803e3d6000fd5b5050602b546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b158015610e6957600080fd5b505af1158015610e7d573d6000803e3d6000fd5b5050602c54602d546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f42406024820152911692506347e7ef2491506044016020604051808303816000875af1158015610ef1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f159190617f8f565b50602c54602a546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424060248201529116906347e7ef24906044016020604051808303816000875af1158015610f86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610faa9190617f8f565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561100957600080fd5b505af115801561101d573d6000803e3d6000fd5b5050602d546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561109357600080fd5b505af11580156110a7573d6000803e3d6000fd5b5050602c546029546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424060248201529116925063095ea7b391506044016020604051808303816000875af115801561111b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113f9190617f8f565b506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b1580156111c057600080fd5b505af11580156111d4573d6000803e3d6000fd5b5050604080518082018252600180825260006020928301819052602e829055602f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055835160a08101855261032180825281850193845281860190815285519485019095528184526060810184905260808101919091528051603080549351151574010000000000000000000000000000000000000000027fffffffffffffffffffffff0000000000000000000000000000000000000000009094166001600160a01b0392831617939093178355935160318054919095167fffffffffffffffffffffffff000000000000000000000000000000000000000091909116179093559193509091506032906112ec9082618171565b50608082015181600301559050505050565b6060601680548060200260200160405190810160405280929190818152602001828054801561135657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611338575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561149957600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156114825783829060005260206000200180546113f5906180d5565b80601f0160208091040260200160405190810160405280929190818152602001828054611421906180d5565b801561146e5780601f106114435761010080835404028352916020019161146e565b820191906000526020600020905b81548152906001019060200180831161145157829003601f168201915b5050505050815260200190600101906113d6565b505050508152505081526020019060010190611384565b50505050905090565b60606018805480602002602001604051908101604052809291908181526020018280548015611356576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611338575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015611356576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611338575050505050905090565b604080518082018252600681527f48656c6c6f2100000000000000000000000000000000000000000000000000006020820152602c54602a805493517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03948516600482015292939092600192670de0b6b3a7640000926000929116906370a0823190602401602060405180830381865afa15801561160e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116329190618230565b6040519091506000907fe04d4f97000000000000000000000000000000000000000000000000000000009061166f90889088908890602401618249565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909516949094179093526024549051919350600092611708926001600160a01b03909216910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602c5461173f926207a120916001600160a01b0316908690602e90603090602401618362565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7b15118b0000000000000000000000000000000000000000000000000000000017905260295490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba3916117fc916001600160a01b03919091169060009086906004016183d9565b600060405180830381600087803b15801561181657600080fd5b505af115801561182a573d6000803e3d6000fd5b5050602d546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156118a057600080fd5b505af11580156118b4573d6000803e3d6000fd5b5050602a5460245460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039091169250630abd8905915060340160408051601f1981840301815290829052602c547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261194e926207a120916001600160a01b0316908d908d908d90600401618401565b600060405180830381600087803b15801561196857600080fd5b505af115801561197c573d6000803e3d6000fd5b5050601f546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b0316600482015260248101879052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b1580156119fd57600080fd5b505af1158015611a11573d6000803e3d6000fd5b5050602480546040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190529281018390526044810183905260648101929092526001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015611aa457600080fd5b505af1158015611ab8573d6000803e3d6000fd5b505050507f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa601f60019054906101000a90046001600160a01b031685898989604051611b08959493929190618456565b60405180910390a1601f546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611ba257600080fd5b505af1158015611bb6573d6000803e3d6000fd5b50506024546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150611bfb9087908690618497565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611c7557600080fd5b505af1158015611c89573d6000803e3d6000fd5b5050601f546024546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b0361010090930483169450631cff79cd93508892611ce292169087906004016184b0565b60006040518083038185885af1158015611d00573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052611d29919081019061858b565b50602c54602a546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611d94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611db89190618230565b9050611ddc816001611dcd6207a120886185ef565b611dd791906185ef565b6139f5565b5050505050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156114995783829060005260206000209060020201604051806040016040529081600082018054611e3d906180d5565b80601f0160208091040260200160405190810160405280929190818152602001828054611e69906180d5565b8015611eb65780601f10611e8b57610100808354040283529160200191611eb6565b820191906000526020600020905b815481529060010190602001808311611e9957829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611f5057602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611efd5790505b50505050508152505081526020019060010190611e0a565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a7640000906000907fe04d4f970000000000000000000000000000000000000000000000000000000090611fe490879087908790602401618249565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000949094169390931790925260295491517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482018190526001600160a01b039093166084820152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156120d657600080fd5b505af11580156120ea573d6000803e3d6000fd5b5050602d5460245460405160609190911b6bffffffffffffffffffffffff19166020820152600093506001600160a01b0390911691507f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c9060340160408051601f19818403018152828252602c547f4d8943bb000000000000000000000000000000000000000000000000000000008452915190926001600160a01b03909216916207a1209188918491634d8943bb916004808201926020929091908290030181865afa1580156121bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e39190618230565b60408051808201825260018082526020820152905161220b9695949392918c91603090618602565b60405180910390a3602d546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561228557600080fd5b505af1158015612299573d6000803e3d6000fd5b50506029546024546040805160609290921b6bffffffffffffffffffffffff1916602083015280518083036014018152602c5460748401835260016034850181815260549095015291517f7b15118b0000000000000000000000000000000000000000000000000000000081526001600160a01b039485169650637b15118b95506123379491936207a1209392909216918991603090600401618672565b600060405180830381600087803b15801561235157600080fd5b505af1158015612365573d6000803e3d6000fd5b5050602c54602d546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156123d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123f59190618230565b905061240881611dd7846207a1206185ef565b601f546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b0316600482015260248101859052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561248557600080fd5b505af1158015612499573d6000803e3d6000fd5b5050602480546040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190529281018390526044810183905260648101929092526001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561252c57600080fd5b505af1158015612540573d6000803e3d6000fd5b505050507f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa601f60019054906101000a90046001600160a01b031685898989604051612590959493929190618456565b60405180910390a1601f546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561262a57600080fd5b505af115801561263e573d6000803e3d6000fd5b50506024546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f91506126839087908790618497565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156126fd57600080fd5b505af1158015612711573d6000803e3d6000fd5b5050601f546024546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b0361010090930483169450631cff79cd9350889261276a92169088906004016184b0565b60006040518083038185885af1158015612788573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052611ddc919081019061858b565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156114995783829060005260206000200180546127f4906180d5565b80601f0160208091040260200160405190810160405280929190818152602001828054612820906180d5565b801561286d5780601f106128425761010080835404028352916020019161286d565b820191906000526020600020905b81548152906001019060200180831161285057829003601f168201915b5050505050815260200190600101906127d5565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156114995760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561296457602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116129115790505b505050505081525050815260200190600101906128a5565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a7640000906000907fe04d4f9700000000000000000000000000000000000000000000000000000000906129f890879087908790602401618249565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009490941693909317909252602d5491517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612acb57600080fd5b505af1158015612adf573d6000803e3d6000fd5b50506029546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015612b7157600080fd5b505af1158015612b85573d6000803e3d6000fd5b5050602c54602d5460245460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039283169450911691507f306ee13f48319a123b222c69908e44dcf91abffc20cacc502e3cf5a4ff23e0e49060340160408051601f198184030181528282018252600180845260208401529051612c0f9287916030906186c6565b60405180910390a360295460245460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b03909116906306cb89839060340160408051601f19818403018152602c5483830183526001808552602085015291517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b168152612cb69391926001600160a01b0316918791603090600401618712565b600060405180830381600087803b158015612cd057600080fd5b505af1158015612ce4573d6000803e3d6000fd5b5050601f546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b0316600482015260248101859052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015612d6557600080fd5b505af1158015612d79573d6000803e3d6000fd5b5050601f546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015612e0f57600080fd5b505af1158015612e23573d6000803e3d6000fd5b50506024546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150612e689085908590618497565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612ee257600080fd5b505af1158015612ef6573d6000803e3d6000fd5b5050601f546024546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b0361010090930483169450631cff79cd93508692612f4f92169086906004016184b0565b60006040518083038185885af1158015612f6d573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052612f96919081019061858b565b505050505050565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156114995760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561308157602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161302e5790505b50505050508152505081526020019060010190612fc2565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156114995783829060005260206000200180546130dc906180d5565b80601f0160208091040260200160405190810160405280929190818152602001828054613108906180d5565b80156131555780601f1061312a57610100808354040283529160200191613155565b820191906000526020600020905b81548152906001019060200180831161313857829003601f168201915b5050505050815260200190600101906130bd565b60085460009060ff1615613181575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015613212573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132369190618230565b1415905090565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a7640000906000907fe04d4f9700000000000000000000000000000000000000000000000000000000906132b990879087908790602401618249565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909516949094179093526024549051919350600092613352926001600160a01b03909216910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602c54613386926001600160a01b03909116908590602e9060309060240161877a565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f06cb89830000000000000000000000000000000000000000000000000000000017905260295490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391613443916001600160a01b03919091169060009086906004016183d9565b600060405180830381600087803b15801561345d57600080fd5b505af1158015613471573d6000803e3d6000fd5b5050602d546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156134e757600080fd5b505af11580156134fb573d6000803e3d6000fd5b5050602a5460245460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039091169250637a34d8bb915060340160408051601f1981840301815290829052602c547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168352613592926001600160a01b03909116908b908b908b906004016187cb565b600060405180830381600087803b1580156135ac57600080fd5b505af11580156135c0573d6000803e3d6000fd5b5050601f546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b0316600482015260248101869052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b15801561364157600080fd5b505af1158015613655573d6000803e3d6000fd5b5050602480546040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190529281018390526044810183905260648101929092526001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156136e857600080fd5b505af11580156136fc573d6000803e3d6000fd5b505050507f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa601f60019054906101000a90046001600160a01b03168488888860405161374c959493929190618456565b60405180910390a1601f546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156137e657600080fd5b505af11580156137fa573d6000803e3d6000fd5b50506024546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f915061383f9086908690618497565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156138b957600080fd5b505af11580156138cd573d6000803e3d6000fd5b5050601f546024546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b0361010090930483169450631cff79cd9350879261392692169087906004016184b0565b60006040518083038185885af1158015613944573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261396d919081019061858b565b50505050505050565b60606015805480602002602001604051908101604052809291908181526020018280548015611356576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611338575050505050905090565b60006139e0617b28565b6139eb848483613a74565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b158015613a6057600080fd5b505afa158015612f96573d6000803e3d6000fd5b600080613a818584613aef565b9050613ae46040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001613acf9291906184b0565b60405160208183030381529060405285613afb565b9150505b9392505050565b6000613ae88383613b29565b60c08101515160009015613b1f57613b1884848460c00151613b44565b9050613ae8565b613b188484613cea565b6000613b358383613dd5565b613ae883836020015184613afb565b600080613b4f613de5565b90506000613b5d8683613eb8565b90506000613b74826060015183602001518561435e565b90506000613b8483838989614570565b90506000613b91826153ed565b602081015181519192509060030b15613c0457898260400151604051602001613bbb929190618819565b60408051601f19818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252613bfb9160040161889a565b60405180910390fd5b6000613c476040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a2000000000000000000000008152508360016155bc565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90613c9a90849060040161889a565b602060405180830381865afa158015613cb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cdb91906188ad565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590613d3f90879060040161889a565b600060405180830381865afa158015613d5c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d84919081019061858b565b90506000613db28285604051602001613d9e9291906188d6565b6040516020818303038152906040526157bc565b90506001600160a01b0381166139eb578484604051602001613bbb929190618905565b613de1828260006157cf565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90613e6c9084906004016189b0565b600060405180830381865afa158015613e89573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613eb191908101906189f7565b9250505090565b613eea6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050613f356040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b613f3e856158d2565b60208201526000613f4e86615cb7565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015613f90573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613fb891908101906189f7565b86838560200151604051602001613fd29493929190618a40565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb119061402a90859060040161889a565b600060405180830381865afa158015614047573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261406f91908101906189f7565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f6906140b7908490600401618b44565b602060405180830381865afa1580156140d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140f89190617f8f565b61410d5781604051602001613bbb9190618b96565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890614152908490600401618c28565b600060405180830381865afa15801561416f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261419791908101906189f7565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f6906141de908490600401618c7a565b602060405180830381865afa1580156141fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061421f9190617f8f565b156142b4576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890614269908490600401618c7a565b600060405180830381865afa158015614286573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526142ae91908101906189f7565b60408501525b846001600160a01b03166349c4fac88286600001516040516020016142d99190618ccc565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401614305929190618d38565b600060405180830381865afa158015614322573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261434a91908101906189f7565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b606081526020019060019003908161437a5790505090506040518060400160405280600481526020017f6772657000000000000000000000000000000000000000000000000000000000815250816000815181106143da576143da618d5d565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061442e5761442e618d5d565b60200260200101819052508460405160200161444a9190618d8c565b6040516020818303038152906040528160028151811061446c5761446c618d5d565b6020026020010181905250826040516020016144889190618df8565b604051602081830303815290604052816003815181106144aa576144aa618d5d565b602002602001018190525060006144c0826153ed565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506145519060408051808201825260008082526020918201528151808301909252845182528085019082015290615f3a565b6145665785604051602001613bbb9190618e39565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d90156145c0565b511590565b6147345782602001511561467c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401613bfb565b8260c0015115614734576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401613bfb565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161474d57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806147a890618eca565b935060ff16815181106147bd576147bd618d5d565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e370000000000000000000000000000000000000081525060405160200161480e9190618ee9565b60405160208183030381529060405282828061482990618eca565b935060ff168151811061483e5761483e618d5d565b60200260200101819052506040518060400160405280600681526020017f6465706c6f79000000000000000000000000000000000000000000000000000081525082828061488b90618eca565b935060ff16815181106148a0576148a0618d5d565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806148ed90618eca565b935060ff168151811061490257614902618d5d565b6020026020010181905250876020015182828061491e90618eca565b935060ff168151811061493357614933618d5d565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163745061746800000000000000000000000000000000000081525082828061498090618eca565b935060ff168151811061499557614995618d5d565b6020908102919091010152875182826149ad81618eca565b935060ff16815181106149c2576149c2618d5d565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280614a0f90618eca565b935060ff1681518110614a2457614a24618d5d565b6020026020010181905250614a3846615f9b565b8282614a4381618eca565b935060ff1681518110614a5857614a58618d5d565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280614aa590618eca565b935060ff1681518110614aba57614aba618d5d565b602002602001018190525086828280614ad290618eca565b935060ff1681518110614ae757614ae7618d5d565b6020908102919091010152855115614c0e5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f6465000000000000000000000060208201528282614b3881618eca565b935060ff1681518110614b4d57614b4d618d5d565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90614b9d90899060040161889a565b600060405180830381865afa158015614bba573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614be291908101906189f7565b8282614bed81618eca565b935060ff1681518110614c0257614c02618d5d565b60200260200101819052505b846020015115614cde5760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282614c5781618eca565b935060ff1681518110614c6c57614c6c618d5d565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280614cb990618eca565b935060ff1681518110614cce57614cce618d5d565b6020026020010181905250614ea5565b614d166145bb8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b614da95760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614d5981618eca565b935060ff1681518110614d6e57614d6e618d5d565b60200260200101819052508460a00151604051602001614d8e9190618d8c565b604051602081830303815290604052828280614cb990618eca565b8460c00151158015614dec575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152614dea90511590565b155b15614ea55760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614e3081618eca565b935060ff1681518110614e4557614e45618d5d565b6020026020010181905250614e598861603b565b604051602001614e699190618d8c565b604051602081830303815290604052828280614e8490618eca565b935060ff1681518110614e9957614e99618d5d565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152614ed990511590565b614f6e5760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282614f1c81618eca565b935060ff1681518110614f3157614f31618d5d565b60200260200101819052508460400151828280614f4d90618eca565b935060ff1681518110614f6257614f62618d5d565b60200260200101819052505b60608501511561508f5760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282614fb781618eca565b935060ff1681518110614fcc57614fcc618d5d565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa15801561503b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261506391908101906189f7565b828261506e81618eca565b935060ff168151811061508357615083618d5d565b60200260200101819052505b60e085015151156151365760408051808201909152600a81527f2d2d6761734c696d697400000000000000000000000000000000000000000000602082015282826150d981618eca565b935060ff16815181106150ee576150ee618d5d565b602002602001018190525061510a8560e0015160000151615f9b565b828261511581618eca565b935060ff168151811061512a5761512a618d5d565b60200260200101819052505b60e085015160200151156151e05760408051808201909152600a81527f2d2d6761735072696365000000000000000000000000000000000000000000006020820152828261518381618eca565b935060ff168151811061519857615198618d5d565b60200260200101819052506151b48560e0015160200151615f9b565b82826151bf81618eca565b935060ff16815181106151d4576151d4618d5d565b60200260200101819052505b60e0850151604001511561528a5760408051808201909152600e81527f2d2d6d61784665655065724761730000000000000000000000000000000000006020820152828261522d81618eca565b935060ff168151811061524257615242618d5d565b602002602001018190525061525e8560e0015160400151615f9b565b828261526981618eca565b935060ff168151811061527e5761527e618d5d565b60200260200101819052505b60e085015160600151156153345760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826152d781618eca565b935060ff16815181106152ec576152ec618d5d565b60200260200101819052506153088560e0015160600151615f9b565b828261531381618eca565b935060ff168151811061532857615328618d5d565b60200260200101819052505b60008160ff1667ffffffffffffffff811115615352576153526180a6565b60405190808252806020026020018201604052801561538557816020015b60608152602001906001900390816153705790505b50905060005b8260ff168160ff1610156153de57838160ff16815181106153ae576153ae618d5d565b6020026020010151828260ff16815181106153cb576153cb618d5d565b602090810291909101015260010161538b565b5093505050505b949350505050565b6154146040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c9161549a91869101618f54565b600060405180830381865afa1580156154b7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526154df91908101906189f7565b905060006154ed8683616b2a565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161551d9190617e81565b6000604051808303816000875af115801561553c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526155649190810190618f9b565b805190915060030b1580159061557d5750602081015151155b801561558c5750604081015151155b1561456657816000815181106155a4576155a4618d5d565b6020026020010151604051602001613bbb9190619051565b606060006155f18560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506156289082905b90616c7f565b156157855760006156a58261569f8461569961566b8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90616ca6565b90616d08565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615709908290616c7f565b1561577357604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615770905b8290616d8d565b90505b61577c81616db3565b92505050613ae8565b821561579e578484604051602001613bbb92919061923d565b5050604080516020810190915260008152613ae8565b509392505050565b6000808251602084016000f09392505050565b8160a00151156157de57505050565b60006157eb848484616e1c565b905060006157f8826153ed565b602081015181519192509060030b1580156158945750604080518082018252600781527f53554343455353000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261589490604080518082018252600080825260209182015281518083019092528451825280850190820152615622565b156158a157505050505050565b604082015151156158c1578160400151604051602001613bbb91906192e4565b80604051602001613bbb9190619342565b606060006159078360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061596c905b8290615f3a565b156159db57604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613ae8906159d69083906173b7565b616db3565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615a3d905b8290617441565b600103615b0a57604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615aa390615769565b50604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613ae8906159d6905b8390616d8d565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615b6990615965565b15615ca057604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615bd19083906174db565b905060008160018351615be491906185ef565b81518110615bf457615bf4618d5d565b60200260200101519050615c976159d6615c6a6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528551825280860190820152906173b7565b95945050505050565b82604051602001613bbb91906193ad565b50919050565b60606000615cec8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615d4e90615965565b15615d5c57613ae881616db3565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615dbb90615a36565b600103615e2557604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613ae8906159d690615b03565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615e8490615965565b15615ca057604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615eec9083906174db565b9050600181511115615f28578060028251615f0791906185ef565b81518110615f1757615f17618d5d565b602002602001015192505050919050565b5082604051602001613bbb91906193ad565b805182516000911115615f4f575060006139ef565b81518351602085015160009291615f659161948b565b615f6f91906185ef565b905082602001518103615f865760019150506139ef565b82516020840151819020912014905092915050565b60606000615fa883617580565b600101905060008167ffffffffffffffff811115615fc857615fc86180a6565b6040519080825280601f01601f191660200182016040528015615ff2576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084615ffc57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e53454400000000000000000000000000000000000000000000818401908152855180870187528381528401929092528451808601909552518452908301526060916160c7905b8290617662565b1561610757505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616166906160c0565b156161a657505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616205906160c0565b1561624557505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526162a4906160c0565b806163095750604080518082018252601081527f47504c2d322e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616309906160c0565b1561634957505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163a8906160c0565b8061640d5750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261640d906160c0565b1561644d57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526164ac906160c0565b806165115750604080518082018252601181527f4c47504c2d322e312d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616511906160c0565b1561655157505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526165b0906160c0565b806166155750604080518082018252601181527f4c47504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616615906160c0565b1561665557505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526166b4906160c0565b156166f457505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616753906160c0565b1561679357505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526167f2906160c0565b1561683257505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616891906160c0565b156168d157505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e300000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616930906160c0565b1561697057505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526169cf906160c0565b80616a345750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616a34906160c0565b15616a7457505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e3100000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616ad3906160c0565b15616b1357505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151613bbb929060200161949e565b60608060005b8451811015616bb55781858281518110616b4c57616b4c618d5d565b6020026020010151604051602001616b659291906188d6565b604051602081830303815290604052915060018551616b8491906185ef565b8114616bad5781604051602001616b9b9190619607565b60405160208183030381529060405291505b600101616b30565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081616bce5790505090508381600081518110616bf957616bf9618d5d565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110616c4d57616c4d618d5d565b60200260200101819052508181600281518110616c6c57616c6c618d5d565b6020908102919091010152949350505050565b6020808301518351835192840151600093616c9d9291849190617676565b14159392505050565b60408051808201909152600080825260208201526000616cd88460000151856020015185600001518660200151617787565b9050836020015181616cea91906185ef565b84518590616cf99083906185ef565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015616d2d5750816139ef565b6020808301519084015160019114616d545750815160208481015190840151829020919020145b8015616d8557825184518590616d6b9083906185ef565b9052508251602085018051616d8190839061948b565b9052505b509192915050565b6040805180820190915260008082526020820152616dac8383836178a7565b5092915050565b60606000826000015167ffffffffffffffff811115616dd457616dd46180a6565b6040519080825280601f01601f191660200182016040528015616dfe576020820181803683370190505b5090506000602082019050616dac8185602001518660000151617952565b60606000616e28613de5565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081616e4557905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616ea090618eca565b935060ff1681518110616eb557616eb5618d5d565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001616f069190619648565b604051602081830303815290604052828280616f2190618eca565b935060ff1681518110616f3657616f36618d5d565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280616f8390618eca565b935060ff1681518110616f9857616f98618d5d565b602002602001018190525082604051602001616fb49190618df8565b604051602081830303815290604052828280616fcf90618eca565b935060ff1681518110616fe457616fe4618d5d565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e74726163740000000000000000000000000000000000000000000081525082828061703190618eca565b935060ff168151811061704657617046618d5d565b602002602001018190525061705b87846179cc565b828261706681618eca565b935060ff168151811061707b5761707b618d5d565b6020908102919091010152855151156171275760408051808201909152600b81527f2d2d7265666572656e6365000000000000000000000000000000000000000000602082015282826170cd81618eca565b935060ff16815181106170e2576170e2618d5d565b60200260200101819052506170fb8660000151846179cc565b828261710681618eca565b935060ff168151811061711b5761711b618d5d565b60200260200101819052505b8560800151156171955760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261717081618eca565b935060ff168151811061718557617185618d5d565b60200260200101819052506171fb565b84156171fb5760408051808201909152601281527f2d2d726571756972655265666572656e63650000000000000000000000000000602082015282826171da81618eca565b935060ff16815181106171ef576171ef618d5d565b60200260200101819052505b604086015151156172975760408051808201909152600d81527f2d2d756e73616665416c6c6f77000000000000000000000000000000000000006020820152828261724581618eca565b935060ff168151811061725a5761725a618d5d565b6020026020010181905250856040015182828061727690618eca565b935060ff168151811061728b5761728b618d5d565b60200260200101819052505b8560600151156173015760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d6573000000000000000000000000602082015282826172e081618eca565b935060ff16815181106172f5576172f5618d5d565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561731f5761731f6180a6565b60405190808252806020026020018201604052801561735257816020015b606081526020019060019003908161733d5790505b50905060005b8260ff168160ff1610156173ab57838160ff168151811061737b5761737b618d5d565b6020026020010151828260ff168151811061739857617398618d5d565b6020908102919091010152600101617358565b50979650505050505050565b60408051808201909152600080825260208201528151835110156173dc5750816139ef565b815183516020850151600092916173f29161948b565b6173fc91906185ef565b6020840151909150600190821461741d575082516020840151819020908220145b8015617438578351855186906174349083906185ef565b9052505b50929392505050565b60008082600001516174658560000151866020015186600001518760200151617787565b61746f919061948b565b90505b83516020850151617483919061948b565b8111616dac57816174938161968d565b92505082600001516174ca8560200151836174ae91906185ef565b86516174ba91906185ef565b8386600001518760200151617787565b6174d4919061948b565b9050617472565b606060006174e98484617441565b6174f490600161948b565b67ffffffffffffffff81111561750c5761750c6180a6565b60405190808252806020026020018201604052801561753f57816020015b606081526020019060019003908161752a5790505b50905060005b81518110156157b45761755b6159d68686616d8d565b82828151811061756d5761756d618d5d565b6020908102919091010152600101617545565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106175c9577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106175f5576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061761357662386f26fc10000830492506010015b6305f5e100831061762b576305f5e100830492506008015b612710831061763f57612710830492506004015b60648310617651576064830492506002015b600a83106139ef5760010192915050565b600061766e8383617a0c565b159392505050565b60008085841161777d576020841161772957600084156176c157600161769d8660206185ef565b6176a89060086196a7565b6176b39060026197a5565b6176bd91906185ef565b1990505b83518116856176d0898961948b565b6176da91906185ef565b805190935082165b818114617714578784116176fc57879450505050506153e5565b83617706816197b1565b9450508284511690506176e2565b61771e878561948b565b9450505050506153e5565b83832061773685886185ef565b617740908761948b565b91505b85821061777b578482208082036177685761775e868461948b565b93505050506153e5565b6177736001846185ef565b925050617743565b505b5092949350505050565b60008381868511617892576020851161784157600085156177d35760016177af8760206185ef565b6177ba9060086196a7565b6177c59060026197a5565b6177cf91906185ef565b1990505b845181166000876177e48b8b61948b565b6177ee91906185ef565b855190915083165b8281146178335781861061781b5761780e8b8b61948b565b96505050505050506153e5565b856178258161968d565b9650508386511690506177f6565b8596505050505050506153e5565b508383206000905b61785386896185ef565b82116178905785832080820361786f57839450505050506153e5565b61787a60018561948b565b93505081806178889061968d565b925050617849565b505b61789c878761948b565b979650505050505050565b604080518082019091526000808252602082015260006178d98560000151866020015186600001518760200151617787565b6020808701805191860191909152519091506178f590826185ef565b835284516020860151617908919061948b565b81036179175760008552617949565b83518351617925919061948b565b855186906179349083906185ef565b9052508351617943908261948b565b60208601525b50909392505050565b6020811061798a578151835261796960208461948b565b925061797660208361948b565b91506179836020826185ef565b9050617952565b60001981156179b95760016179a08360206185ef565b6179ac906101006197a5565b6179b691906185ef565b90505b9151835183169219169190911790915250565b606060006179da8484613eb8565b80516020808301516040519394506179f4939091016197c8565b60405160208183030381529060405291505092915050565b8151815160009190811115617a1f575081515b6020808501519084015160005b83811015617ad85782518251808214617aa8576000196020871015617a8757600184617a598960206185ef565b617a63919061948b565b617a6e9060086196a7565b617a799060026197a5565b617a8391906185ef565b1990505b8181168382168181039114617aa55797506139ef9650505050505050565b50505b617ab360208661948b565b9450617ac060208561948b565b93505050602081617ad1919061948b565b9050617a2c565b50845186516145669190619820565b610c9f8061984183390190565b610ec28061a4e083390190565b610aa98061b3a283390190565b610b3f8061be4b83390190565b6120728061c98a83390190565b6040518060e00160405280606081526020016060815260200160608152602001600015158152602001600015158152602001600015158152602001617b6b617b70565b905290565b60405180610100016040528060001515815260200160001515815260200160608152602001600080191681526020016060815260200160608152602001600015158152602001617b6b6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b81811015617c225783516001600160a01b0316835260209384019390920191600101617bfb565b509095945050505050565b60005b83811015617c48578181015183820152602001617c30565b50506000910152565b60008151808452617c69816020860160208601617c2d565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617d79577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015617d5f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352617d49848651617c51565b6020958601959094509290920191600101617d0f565b509197505050602094850194929092019150600101617ca5565b50929695505050505050565b600081518084526020840193506020830160005b82811015617dd95781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101617d99565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617d79577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752617e4f6040880182617c51565b9050602082015191508681036020880152617e6a8183617d85565b965050506020938401939190910190600101617e0b565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617d79577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452617ee3858351617c51565b94506020938401939190910190600101617ea9565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617d79577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152617f796040870182617d85565b9550506020938401939190910190600101617f20565b600060208284031215617fa157600080fd5b81518015158114613ae857600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff881660408301528660608301526003861061806b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a083015261808c60c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600181811c908216806180e957607f821691505b602082108103615cb1577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b601f82111561816c57806000526020600020601f840160051c810160208510156181495750805b601f840160051c820191505b818110156181695760008155600101618155565b50505b505050565b815167ffffffffffffffff81111561818b5761818b6180a6565b61819f8161819984546180d5565b84618122565b6020601f8211600181146181d357600083156181bb5750848201515b600019600385901b1c1916600184901b178455618169565b600084815260208120601f198516915b8281101561820357878501518255602094850194600190920191016181e3565b50848210156182215786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b60006020828403121561824257600080fd5b5051919050565b60608152600061825c6060830186617c51565b602083019490945250901515604090910152919050565b600081546001600160a01b038116845260ff8160a01c1615156020850152506001600160a01b0360018301541660408401526002820160a06060850152600081546182bd816180d5565b8060a088015260018216600081146182dc57600181146183165761834a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831660c089015260c082151560051b890101935061834a565b84600052602060002060005b838110156183415781548a820160c00152600190910190602001618322565b890160c0019450505b50505060038401546080860152809250505092915050565b60e08152600061837560e0830189617c51565b62ffffff881660208401526001600160a01b038716604084015282810360608401526183a18187617c51565b85546080850152600186015460ff16151560a085015290505b82810360c08401526183cc8185618273565b9998505050505050505050565b6001600160a01b0384168152826020820152606060408201526000615c976060830184617c51565b60c08152600061841460c0830189617c51565b8760208401526001600160a01b0387166040840152828103606084015261843b8187617c51565b6080840195909552505090151560a090910152949350505050565b6001600160a01b038616815284602082015260a06040820152600061847e60a0830186617c51565b6060830194909452509015156080909101529392505050565b8281526040602082015260006153e56040830184617c51565b6001600160a01b03831681526040602082015260006153e56040830184617c51565b6040516060810167ffffffffffffffff811182821017156184f5576184f56180a6565b60405290565b60008067ffffffffffffffff841115618516576185166180a6565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715618545576185456180a6565b60405283815290508082840185101561855d57600080fd5b6157b4846020830185617c2d565b600082601f83011261857c57600080fd5b613ae8838351602085016184fb565b60006020828403121561859d57600080fd5b815167ffffffffffffffff8111156185b457600080fd5b6139eb8482850161856b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156139ef576139ef6185c0565b6101208152600061861761012083018b617c51565b6001600160a01b038a16602084015288604084015287606084015286608084015282810360a084015261864a8187617c51565b855160c08501526020860151151560e08501529050828103610100840152613cdb8185618273565b60e08152600061868560e0830189617c51565b8760208401526001600160a01b038716604084015282810360608401526186ac8187617c51565b855160808501526020860151151560a085015290506183ba565b60a0815260006186d960a0830187617c51565b82810360208401526186eb8187617c51565b855160408501526020860151151560608501529050828103608084015261789c8185618273565b60c08152600061872560c0830188617c51565b6001600160a01b038716602084015282810360408401526187468187617c51565b8551606085015260208601511515608085015290505b82810360a084015261876e8185618273565b98975050505050505050565b60c08152600061878d60c0830188617c51565b6001600160a01b038716602084015282810360408401526187ae8187617c51565b85546060850152600186015460ff1615156080850152905061875c565b60a0815260006187de60a0830188617c51565b6001600160a01b038716602084015282810360408401526187ff8187617c51565b606084019590955250509015156080909101529392505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161885181601a850160208801617c2d565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161888e81601c840160208801617c2d565b01601c01949350505050565b602081526000613ae86020830184617c51565b6000602082840312156188bf57600080fd5b81516001600160a01b0381168114613ae857600080fd5b600083516188e8818460208801617c2d565b8351908301906188fc818360208801617c2d565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161893d81601a850160208801617c2d565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161897a816033840160208801617c2d565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000613ae86080830184617c51565b600060208284031215618a0957600080fd5b815167ffffffffffffffff811115618a2057600080fd5b8201601f81018413618a3157600080fd5b6139eb848251602084016184fb565b60008551618a52818460208a01617c2d565b7f2f000000000000000000000000000000000000000000000000000000000000009083019081528551618a8c816001840160208a01617c2d565b7f2f00000000000000000000000000000000000000000000000000000000000000600192909101918201528451618aca816002840160208901617c2d565b6001818301019150507f2f0000000000000000000000000000000000000000000000000000000000000060018201528351618b0c816002840160208801617c2d565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b604081526000618b576040830184617c51565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251618bce81601f850160208701617c2d565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b604081526000618c3b6040830184617c51565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b604081526000618c8d6040830184617c51565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251618d04816014850160208701617c2d565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b604081526000618d4b6040830185617c51565b8281036020840152613ae48185617c51565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f2200000000000000000000000000000000000000000000000000000000000000815260008251618dc4816001850160208701617c2d565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b60008251618e0a818460208701617c2d565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e747261637420000000000000000000000000000000000000000000604082015260008251618ebd81604b850160208701617c2d565b91909101604b0192915050565b600060ff821660ff8103618ee057618ee06185c0565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c69400000000000000000000000000000000000000000000000602082015260008251618f47816029850160208701617c2d565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000613ae86080830184617c51565b600060208284031215618fad57600080fd5b815167ffffffffffffffff811115618fc457600080fd5b820160608185031215618fd657600080fd5b618fde6184d2565b81518060030b8114618fef57600080fd5b8152602082015167ffffffffffffffff81111561900b57600080fd5b6190178682850161856b565b602083015250604082015167ffffffffffffffff81111561903757600080fd5b6190438682850161856b565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f22000000000000000000000000000000000000000000000000000000000000006020820152600082516190af816021850160208701617c2d565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161929b816021850160208801617c2d565b7f2720696e206f75747075743a200000000000000000000000000000000000000060219184019182015283516192d881602e840160208801617c2d565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a200000000000000000000000000000000000000000000000602082015260008251618f47816029850160208701617c2d565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a0000000000000000000000000000000000000000000000000000000000006020820152600082516193a0816022850160208701617c2d565b9190910160220192915050565b7f436f6e7472616374206e616d65200000000000000000000000000000000000008152600082516193e581600e850160208701617c2d565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b808201808211156139ef576139ef6185c0565b7f53504458206c6963656e7365206964656e7469666965722000000000000000008152600083516194d6816018850160208801617c2d565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161951381601c840160208801617c2d565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251619619818460208701617c2d565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161968081601c850160208701617c2d565b91909101601c0192915050565b600060001982036196a0576196a06185c0565b5060010190565b80820281158282048414176139ef576139ef6185c0565b6001815b60018411156196f9578085048111156196dd576196dd6185c0565b60018416156196eb57908102905b60019390931c9280026196c2565b935093915050565b600082619710575060016139ef565b8161971d575060006139ef565b8160018114619733576002811461973d57619759565b60019150506139ef565b60ff84111561974e5761974e6185c0565b50506001821b6139ef565b5060208310610133831016604e8410600b841016171561977c575081810a6139ef565b61978960001984846196be565b806000190482111561979d5761979d6185c0565b029392505050565b6000613ae88383619701565b6000816197c0576197c06185c0565b506000190190565b600083516197da818460208801617c2d565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351619814816001840160208801617c2d565b01600101949350505050565b8181036000831280158383131683831282161715616dac57616dac6185c056fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220a043c41353215fce25ecb67a8a4f6f724aaa86dea8dcb0a6975bfb1f10ff3beb64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610e9e806100246000396000f3fe60806040526004361061006e5760003560e01c8063c51316911161004b578063c5131691146100d5578063c9028a36146100f5578063e04d4f9714610115578063f05b6abf1461012857005b8063357fc5a214610077578063676cc054146100975780636ed70169146100c057005b3661007557005b005b34801561008357600080fd5b506100756100923660046106ec565b610148565b6100aa6100a5366004610728565b6101de565b6040516100b79190610823565b60405180910390f35b3480156100cc57600080fd5b50610075610222565b3480156100e157600080fd5b506100756100f03660046106ec565b610257565b34801561010157600080fd5b50610075610110366004610836565b610332565b610075610123366004610996565b61036e565b34801561013457600080fd5b50610075610143366004610a82565b6103b2565b6101506103e7565b61017273ffffffffffffffffffffffffffffffffffffffff831633838661042a565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101d96001600055565b505050565b6040516060907f3658b46bab672c7672b69c2f0feda706eabdb7d2231421c96e9049b2db5e7eee90600090a1506040805160208101909152600081525b9392505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b61025f6103e7565b600061026c600285610b6c565b9050806000036102a8576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102ca73ffffffffffffffffffffffffffffffffffffffff841633848461042a565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101d96001600055565b7f689a5a5cb55e795ffe4cd8b419cd3bb0a3373974c54d25f64e734d7388b93e9b3382604051610363929190610bf0565b60405180910390a150565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa33348585856040516103a5959493929190610ce2565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103a59493929190610d6c565b600260005403610423576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526104bf9085906104c5565b50505050565b60006104e773ffffffffffffffffffffffffffffffffffffffff841683610560565b9050805160001415801561050c57508080602001905181019061050a9190610e2f565b155b156101d9576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061021b83836000846000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105939190610e4c565b60006040518083038185875af1925050503d80600081146105d0576040519150601f19603f3d011682016040523d82523d6000602084013e6105d5565b606091505b50915091506105e58683836105ef565b9695505050505050565b606082610604576105ff8261067e565b61021b565b8151158015610628575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610677576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610557565b508061021b565b80511561068e5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106e757600080fd5b919050565b60008060006060848603121561070157600080fd5b83359250610711602085016106c3565b915061071f604085016106c3565b90509250925092565b6000806000838503604081121561073e57600080fd5b602081121561074c57600080fd5b50839250602084013567ffffffffffffffff81111561076a57600080fd5b8401601f8101861361077b57600080fd5b803567ffffffffffffffff81111561079257600080fd5b8660208284010111156107a457600080fd5b939660209190910195509293505050565b60005b838110156107d05781810151838201526020016107b8565b50506000910152565b600081518084526107f18160208601602086016107b5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061021b60208301846107d9565b60006020828403121561084857600080fd5b813567ffffffffffffffff81111561085f57600080fd5b82016080818503121561021b57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156108e7576108e7610871565b604052919050565b600082601f83011261090057600080fd5b813567ffffffffffffffff81111561091a5761091a610871565b61094b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016108a0565b81815284602083860101111561096057600080fd5b816020850160208301376000918101602001919091529392505050565b80151581146106c057600080fd5b80356106e78161097d565b6000806000606084860312156109ab57600080fd5b833567ffffffffffffffff8111156109c257600080fd5b6109ce868287016108ef565b9350506020840135915060408401356109e68161097d565b809150509250925092565b600067ffffffffffffffff821115610a0b57610a0b610871565b5060051b60200190565b600082601f830112610a2657600080fd5b8135610a39610a34826109f1565b6108a0565b8082825260208201915060208360051b860101925085831115610a5b57600080fd5b602085015b83811015610a78578035835260209283019201610a60565b5095945050505050565b600080600060608486031215610a9757600080fd5b833567ffffffffffffffff811115610aae57600080fd5b8401601f81018613610abf57600080fd5b8035610acd610a34826109f1565b8082825260208201915060208360051b850101925088831115610aef57600080fd5b602084015b83811015610b3157803567ffffffffffffffff811115610b1357600080fd5b610b228b6020838901016108ef565b84525060209283019201610af4565b509550505050602084013567ffffffffffffffff811115610b5157600080fd5b610b5d86828701610a15565b92505061071f6040850161098b565b600082610ba2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015273ffffffffffffffffffffffffffffffffffffffff610c2e836106c3565b16604082015273ffffffffffffffffffffffffffffffffffffffff610c55602084016106c3565b166060820152600080604084013590508060808401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610ca157600080fd5b830160208101903567ffffffffffffffff811115610cbe57600080fd5b803603821315610ccd57600080fd5b608060a08501526105e560c085018284610ba7565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610d1760a08301866107d9565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610d62578151865260209586019590910190600101610d44565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610dff577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610dea8583516107d9565b94506020938401939190910190600101610db0565b505050508281036040840152610e158186610d30565b915050610e26606083018415159052565b95945050505050565b600060208284031215610e4157600080fd5b815161021b8161097d565b60008251610e5e8184602087016107b5565b919091019291505056fea26469706673582212200121b4788f0b35a4b6df21db4f43708a9b20e8b16f616e6f3300230e75bbdd1364736f6c634300081a00336080604052348015600f57600080fd5b50604051610aa9380380610aa9833981016040819052602c916050565b600080546001600160a01b0319166001600160a01b0392909216919091179055607e565b600060208284031215606157600080fd5b81516001600160a01b0381168114607757600080fd5b9392505050565b610a1c8061008d6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b5780637a34d8bb146100a4575b600080fd5b610059610054366004610658565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b23660046106f8565b61032a565b60008383836040516024016100ce939291906107f4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490915073ffffffffffffffffffffffffffffffffffffffff8087169163095ea7b3911661017589600261081e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016020604051808303816000875af11580156101e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610209919061085e565b61023f576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160a081018252610321808252600160208084018290528385019290925283518083018552600080825260608501919091526080840181905284518086018652918252918101829052905492517f7b15118b0000000000000000000000000000000000000000000000000000000081529192909173ffffffffffffffffffffffffffffffffffffffff90911690637b15118b906102ed908c908c908c90899088908a906004016108f7565b600060405180830381600087803b15801561030757600080fd5b505af115801561031b573d6000803e3d6000fd5b50505050505050505050505050565b6000838383604051602401610341939291906107f4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f9700000000000000000000000000000000000000000000000000000000179052815160a081018352610321808252600182840181905282850191909152835180840185526000808252606084019190915260808301819052845180860186528281529384018190525493517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9485166004820152602481019190915293945092909188169063095ea7b3906044016020604051808303816000875af115801561047c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a0919061085e565b506000546040517f06cb898300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906306cb8983906104ff908b908b90889087908990600401610972565b600060405180830381600087803b15801561051957600080fd5b505af115801561052d573d6000803e3d6000fd5b505050505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261057b57600080fd5b81356020830160008067ffffffffffffffff84111561059c5761059c61053b565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff821117156105e9576105e961053b565b60405283815290508082840187101561060157600080fd5b838360208301376000602085830101528094505050505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461064257600080fd5b919050565b801515811461065557600080fd5b50565b60008060008060008060c0878903121561067157600080fd5b863567ffffffffffffffff81111561068857600080fd5b61069489828a0161056a565b965050602087013594506106aa6040880161061e565b9350606087013567ffffffffffffffff8111156106c657600080fd5b6106d289828a0161056a565b9350506080870135915060a08701356106ea81610647565b809150509295509295509295565b600080600080600060a0868803121561071057600080fd5b853567ffffffffffffffff81111561072757600080fd5b6107338882890161056a565b9550506107426020870161061e565b9350604086013567ffffffffffffffff81111561075e57600080fd5b61076a8882890161056a565b93505060608601359150608086013561078281610647565b809150509295509295909350565b6000815180845260005b818110156107b65760208185018101518683018201520161079a565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6060815260006108076060830186610790565b602083019490945250901515604090910152919050565b80820180821115610858577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b60006020828403121561087057600080fd5b815161087b81610647565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff815116825260208101511515602083015273ffffffffffffffffffffffffffffffffffffffff60408201511660408301526000606082015160a060608501526108e360a0850182610790565b608093840151949093019390935250919050565b60e08152600061090a60e0830189610790565b87602084015273ffffffffffffffffffffffffffffffffffffffff87166040840152828103606084015261093e8187610790565b855160808501526020860151151560a0850152905082810360c08401526109658185610882565b9998505050505050505050565b60c08152600061098560c0830188610790565b73ffffffffffffffffffffffffffffffffffffffff8716602084015282810360408401526109b38187610790565b85516060850152602086015115156080850152905082810360a08401526109da8185610882565b9897505050505050505056fea2646970667358221220d537d7a8149cdb3025211768bab067e858b4bd38e69fcb1bfba3dec8b144f23764736f6c634300081a0033608060405234801561001057600080fd5b50604051610b3f380380610b3f83398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a348061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fd565b6103a0565b6101416101da36600461081f565b610419565b6101046101ed366004610841565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610884565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108b0565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e90610366908490899089908990899060040161091b565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff8111156107b257600080fd5b8601601f810188136107c357600080fd5b803567ffffffffffffffff8111156107da57600080fd5b8860208284010111156107ec57600080fd5b959894975092955050506020019190565b60006020828403121561080f57600080fd5b61081882610737565b9392505050565b6000806040838503121561083257600080fd5b50508035926020909101359150565b60008060006060848603121561085657600080fd5b61085f84610737565b925061086d60208501610737565b915061087b60408501610737565b90509250925092565b6000806040838503121561089757600080fd5b823591506108a760208401610737565b90509250929050565b6000602082840312156108c257600080fd5b8151801515811461081857600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610953576020818401810151610100878401015201610935565b5060008482016101000152602089015173ffffffffffffffffffffffffffffffffffffffff811660a0860152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168401915050604088015160c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401526101008382030160608401526109f2610100820185876108d2565b9897505050505050505056fea26469706673582212201600a256a4ffaaa4ceb3b81d9f67be9d8f33665245b35eeba52fdc70200176a764736f6c634300081a003360c060405234801561001057600080fd5b5060405161207238038061207283398101604081905261002f916101f0565b6001600160a01b038216158061004c57506001600160a01b038116155b1561006a5760405163d92e233d60e01b815260040160405180910390fd5b60066100768982610342565b5060076100838882610342565b506008805460ff191660ff881617905560808590528360028111156100aa576100aa610400565b60a08160028111156100be576100be610400565b905250600192909255600080546001600160a01b039283166001600160a01b0319909116179055600880549190921661010002610100600160a81b0319909116179055506104169350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261013357600080fd5b81516001600160401b0381111561014c5761014c61010c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561017a5761017a61010c565b60405281815283820160200185101561019257600080fd5b60005b828110156101b157602081860181015183830182015201610195565b506000918101602001919091529392505050565b8051600381106101d457600080fd5b919050565b80516001600160a01b03811681146101d457600080fd5b600080600080600080600080610100898b03121561020d57600080fd5b88516001600160401b0381111561022357600080fd5b61022f8b828c01610122565b60208b015190995090506001600160401b0381111561024d57600080fd5b6102598b828c01610122565b975050604089015160ff8116811461027057600080fd5b60608a0151909650945061028660808a016101c5565b60a08a0151909450925061029c60c08a016101d9565b91506102aa60e08a016101d9565b90509295985092959890939650565b600181811c908216806102cd57607f821691505b6020821081036102ed57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561033d57806000526020600020601f840160051c8101602085101561031a5750805b601f840160051c820191505b8181101561033a5760008155600101610326565b50505b505050565b81516001600160401b0381111561035b5761035b61010c565b61036f8161036984546102b9565b846102f3565b6020601f8211600181146103a3576000831561038b5750848201515b600019600385901b1c1916600184901b17845561033a565b600084815260208120601f198516915b828110156103d357878501518255602094850194600190920191016103b3565b50848210156103f15786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a051611c1b61045760003960006103440152600081816102f001528181610bdc01528181610ce201528181610efe01526110040152611c1b6000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c806395d89b41116100f9578063ccc7759911610097578063eddeb12311610071578063eddeb12314610461578063f2441b3214610474578063f687d12a14610494578063fc5fecd5146104a757600080fd5b8063ccc77599146103d4578063d9eeebed146103e7578063dd62ed3e1461041b57600080fd5b8063b84c8246116100d3578063b84c824614610386578063c47f00271461039b578063c7012626146103ae578063c835d7cc146103c157600080fd5b806395d89b4114610337578063a3413d031461033f578063a9059cbb1461037357600080fd5b80633ce4a5bc116101665780634d8943bb116101405780634d8943bb146102ac57806370a08231146102b557806385e1f4d0146102eb5780638b851b951461031257600080fd5b80633ce4a5bc1461024657806342966c681461028657806347e7ef241461029957600080fd5b806318160ddd1161019757806318160ddd1461021657806323b872dd1461021e578063313ce5671461023157600080fd5b806306fdde03146101be578063091d2788146101dc578063095ea7b3146101f3575b600080fd5b6101c66104ba565b6040516101d39190611648565b60405180910390f35b6101e560015481565b6040519081526020016101d3565b610206610201366004611687565b61054c565b60405190151581526020016101d3565b6005546101e5565b61020661022c3660046116b3565b610563565b60085460405160ff90911681526020016101d3565b61026173735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d3565b6102066102943660046116f4565b6105fa565b6102066102a7366004611687565b61060e565b6101e560025481565b6101e56102c336600461170d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6101e57f000000000000000000000000000000000000000000000000000000000000000081565b60085461026190610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6101c6610767565b6103667f000000000000000000000000000000000000000000000000000000000000000081565b6040516101d3919061172a565b610206610381366004611687565b610776565b610399610394366004611832565b610783565b005b6103996103a9366004611832565b6107e0565b6102066103bc366004611883565b610839565b6103996103cf36600461170d565b610988565b6103996103e236600461170d565b610a9c565b6103ef610bb0565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101d3565b6101e56104293660046118dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205490565b61039961046f3660046116f4565b610dce565b6000546102619073ffffffffffffffffffffffffffffffffffffffff1681565b6103996104a23660046116f4565b610e50565b6103ef6104b53660046116f4565b610ed2565b6060600680546104c990611915565b80601f01602080910402602001604051908101604052809291908181526020018280546104f590611915565b80156105425780601f1061051757610100808354040283529160200191610542565b820191906000526020600020905b81548152906001019060200180831161052557829003601f168201915b5050505050905090565b60006105593384846110ee565b5060015b92915050565b60006105708484846111f7565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460209081526040808320338452909152902054828110156105db576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105ef85336105ea8685611997565b6110ee565b506001949350505050565b600061060633836113b2565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab1480159061064c575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156106755750600854610100900473ffffffffffffffffffffffffffffffffffffffff163314155b156106ac576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106b683836114f4565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526107569186906119aa565b60405180910390a250600192915050565b6060600780546104c990611915565b60006105593384846111f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab146107d0576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60076107dc8282611a1b565b5050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461082d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60066107dc8282611a1b565b6000806000610846610bb0565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156108d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fc9190611b34565b610932576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61093c33856113b2565b60025460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161097591899189918791611b56565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146109d5576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a22576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610ae9576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610b36576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c679190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610cb6576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d699190611ba2565b905080600003610da5576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060025460015483610db89190611bbb565b610dc29190611bd2565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e1b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610a91565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e9d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610f65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f899190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610fd8576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015611067573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108b9190611ba2565b9050806000036110c7576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000906110d78784611bbb565b6110e19190611bd2565b9296929550919350505050565b73ffffffffffffffffffffffffffffffffffffffff831661113b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611188576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611244576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611291576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040902054818110156112f1576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112fb8282611997565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260036020526040808220939093559085168152908120805484929061133e908490611bd2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113a491815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff82166113ff576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260409020548181101561145f576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114698282611997565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260036020526040812091909155600580548492906114a4908490611997565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016111ea565b73ffffffffffffffffffffffffffffffffffffffff8216611541576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008282546115539190611bd2565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805483929061158d908490611bd2565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561160a576020818501810151868301820152016115ee565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061165b60208301846115e4565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461168457600080fd5b50565b6000806040838503121561169a57600080fd5b82356116a581611662565b946020939093013593505050565b6000806000606084860312156116c857600080fd5b83356116d381611662565b925060208401356116e381611662565b929592945050506040919091013590565b60006020828403121561170657600080fd5b5035919050565b60006020828403121561171f57600080fd5b813561165b81611662565b6020810160038310611765577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff8411156117b5576117b561176b565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff821117156118025761180261176b565b60405283815290508082840185101561181a57600080fd5b83836020830137600060208583010152509392505050565b60006020828403121561184457600080fd5b813567ffffffffffffffff81111561185b57600080fd5b8201601f8101841361186c57600080fd5b61187b8482356020840161179a565b949350505050565b6000806040838503121561189657600080fd5b823567ffffffffffffffff8111156118ad57600080fd5b8301601f810185136118be57600080fd5b6118cd8582356020840161179a565b95602094909401359450505050565b600080604083850312156118ef57600080fd5b82356118fa81611662565b9150602083013561190a81611662565b809150509250929050565b600181811c9082168061192957607f821691505b602082108103611962577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561055d5761055d611968565b6040815260006119bd60408301856115e4565b90508260208301529392505050565b601f821115611a1657806000526020600020601f840160051c810160208510156119f35750805b601f840160051c820191505b81811015611a1357600081556001016119ff565b50505b505050565b815167ffffffffffffffff811115611a3557611a3561176b565b611a4981611a438454611915565b846119cc565b6020601f821160018114611a9b5760008315611a655750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611a13565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015611ae95787850151825560209485019460019092019101611ac9565b5084821015611b2557868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b600060208284031215611b4657600080fd5b8151801515811461165b57600080fd5b608081526000611b6960808301876115e4565b6020830195909552506040810192909252606090910152919050565b600060208284031215611b9757600080fd5b815161165b81611662565b600060208284031215611bb457600080fd5b5051919050565b808202811582820484141761055d5761055d611968565b8082018082111561055d5761055d61196856fea2646970667358221220d6ba834f25782689ed13bffb6ac9ff2c8d3b5342c94a515aea8197a76070ad3f64736f6c634300081a0033a2646970667358221220f677da5acb0fa168e97c3dc95f7b663413f2b4b28d636b2b7186d143b26cf01464736f6c634300081a0033", } // 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 41a2aea2c..b415284b5 100644 --- a/v2/pkg/gatewayzevm.sol/gatewayzevm.go +++ b/v2/pkg/gatewayzevm.sol/gatewayzevm.go @@ -62,7 +62,7 @@ type RevertOptions 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\":\"MAX_MESSAGE_SIZE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PROTOCOL_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\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"callOptions\",\"type\":\"tuple\",\"internalType\":\"structCallOptions\",\"components\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"isArbitraryCall\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\":\"structMessageContext\",\"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\":\"structMessageContext\",\"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\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"execute\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structMessageContext\",\"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\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"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\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structCallOptions\",\"components\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"isArbitraryCall\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"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\"},{\"name\":\"callOptions\",\"type\":\"tuple\",\"internalType\":\"structCallOptions\",\"components\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"isArbitraryCall\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Called\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"callOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structCallOptions\",\"components\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"isArbitraryCall\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\":\"Withdrawn\",\"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\"},{\"name\":\"callOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structCallOptions\",\"components\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"isArbitraryCall\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\":\"CallerIsNotProtocol\",\"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\":\"InsufficientGasLimit\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZetaAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"MessageSizeExceeded\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrProtocol\",\"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\":\"ZETANotSupported\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20BurnFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20TransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051613aed6100fd6000396000818161229e015281816122c7015261249d0152613aed6000f3fe6080604052600436106101c65760003560e01c80635c975abb116100f75780639d4ba46511610095578063c39aca3711610064578063c39aca371461061c578063d547741f1461063c578063e63ab1e91461065c578063f45346dc1461069057600080fd5b80639d4ba46514610571578063a217fddf14610591578063ad3cb1cc146105a6578063bcf7f32b146105fc57600080fd5b80638456cb59116100d15780638456cb59146104c657806391d14854146104db57806397a1cef11461054057806397d340f51461055b57600080fd5b80635c975abb1461044f5780637b15118b146104865780637c0dcb5f146104a657600080fd5b80632810ae63116101645780633f4ba83a1161013e5780633f4ba83a146103f2578063485cc955146104075780634f1ef2861461042757806352d1902d1461043a57600080fd5b80632810ae63146103925780632f2ff15d146103b257806336568abe146103d257600080fd5b806321501a95116101a057806321501a95146102b557806321e093b1146102d5578063248a9ca31461030d5780632722feee1461036a57600080fd5b806301ffc9a71461024057806306cb898314610275578063184b07931461029557600080fd5b3661023b576101d36106b0565b6000546001600160a01b0316331480159061020257503373735b14bb79463307aacbed86daf3322b1e6226ab14155b15610239576040517fb3af013700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b34801561024c57600080fd5b5061026061025b366004612cc3565b61070e565b60405190151581526020015b60405180910390f35b34801561028157600080fd5b50610239610290366004612e69565b6107a7565b3480156102a157600080fd5b506102396102b0366004612f39565b61089a565b3480156102c157600080fd5b506102396102d0366004612f9b565b6109a2565b3480156102e157600080fd5b506000546102f5906001600160a01b031681565b6040516001600160a01b03909116815260200161026c565b34801561031957600080fd5b5061035c610328366004613027565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b60405190815260200161026c565b34801561037657600080fd5b506102f573735b14bb79463307aacbed86daf3322b1e6226ab81565b34801561039e57600080fd5b506102396103ad366004613040565b610b6f565b3480156103be57600080fd5b506102396103cd366004613100565b610bba565b3480156103de57600080fd5b506102396103ed366004613100565b610c04565b3480156103fe57600080fd5b50610239610c55565b34801561041357600080fd5b50610239610422366004613130565b610c8a565b61023961043536600461315e565b610edf565b34801561044657600080fd5b5061035c610efe565b34801561045b57600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610260565b34801561049257600080fd5b506102396104a13660046131a4565b610f2d565b3480156104b257600080fd5b506102396104c1366004613216565b61112e565b3480156104d257600080fd5b5061023961135b565b3480156104e757600080fd5b506102606104f6366004613100565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561054c57600080fd5b506102396103ad36600461329b565b34801561056757600080fd5b5061035c61040081565b34801561057d57600080fd5b5061023961058c3660046132ff565b61138d565b34801561059d57600080fd5b5061035c600081565b3480156105b257600080fd5b506105ef6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161026c91906133cd565b34801561060857600080fd5b506102396106173660046133e0565b611619565b34801561062857600080fd5b506102396106373660046133e0565b611749565b34801561064857600080fd5b50610239610657366004613100565b611958565b34801561066857600080fd5b5061035c7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b34801561069c57600080fd5b506102396106ab36600461347e565b61199c565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff161561070c576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806107a157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6107af611bab565b6107b76106b0565b81356000036107f2576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61040061080260608301836134c0565b61080d915085613525565b1115610845576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108698686868661085b3688900388018861356d565b610864876135c5565b611c2c565b61089260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108e7576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108ef6106b0565b6001600160a01b03821661092f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063c9028a369061097490849060040161371a565b600060405180830381600087803b15801561098e57600080fd5b505af1158015610892573d6000803e3d6000fd5b3373735b14bb79463307aacbed86daf3322b1e6226ab146109ef576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109f76106b0565b6001600160a01b038316610a37576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83600003610a71576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610aa457506001600160a01b03831630145b15610adb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ae58484611e52565b6000546040517f5bcfd6160000000000000000000000000000000000000000000000000000000081526001600160a01b0380861692635bcfd61692610b36928a92169089908890889060040161378a565b600060405180830381600087803b158015610b5057600080fd5b505af1158015610b64573d6000803e3d6000fd5b505050505050505050565b610b77611bab565b610b7f6106b0565b6040517fe4dd681d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610bf481612020565b610bfe838361202a565b50505050565b6001600160a01b0381163314610c46576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c508282612117565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610c7f81612020565b610c876121db565b50565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610cd55750825b905060008267ffffffffffffffff166001148015610cf25750303b155b905081158015610d00575080155b15610d37576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610d985784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610db557506001600160a01b038616155b15610dec576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610df461226b565b610dfc61226b565b610e04612273565b610e0c612283565b610e1760008761202a565b50610e427f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8761202a565b50600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0389161790558315610bb15784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050505050565b610ee7612293565b610ef082612363565b610efa828261236e565b5050565b6000610f08612492565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610f35611bab565b610f3d6106b0565b8651600003610f78576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85600003610fb2576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8135600003610fed576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610400610ffd60608301836134c0565b611008915085613525565b1115611040576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061104e878785356124f4565b90506000336001600160a01b03167f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c8a898b868c6001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e39190613807565b8c8c8c8c6040516110fc999897969594939291906138a1565b60405180910390a350610bb160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b611136611bab565b61113e6106b0565b8351600003611179576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036111b3576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006111c360608301836134c0565b905011156111fd576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061120984846127d1565b90506000336001600160a01b03167f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c87868886896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561127a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129e9190613807565b60405180604001604052808c6001600160a01b031663091d27886040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130b9190613807565b81526001602090910152604051611329969594939291908c9061392b565b60405180910390a350610bfe60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61138581612020565b610c8761283f565b3373735b14bb79463307aacbed86daf3322b1e6226ab146113da576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113e26106b0565b6001600160a01b03841615806113ff57506001600160a01b038216155b15611436576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003611470576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821673735b14bb79463307aacbed86daf3322b1e6226ab14806114a357506001600160a01b03821630145b156114da576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152602482018590528516906347e7ef24906044016020604051808303816000875af1158015611542573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156691906139ad565b61159c576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063c9028a36906115e190849060040161371a565b600060405180830381600087803b1580156115fb57600080fd5b505af115801561160f573d6000803e3d6000fd5b5050505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611666576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61166e6106b0565b6001600160a01b038516158061168b57506001600160a01b038316155b156116c2576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f5bcfd6160000000000000000000000000000000000000000000000000000000081526001600160a01b03841690635bcfd6169061170f908990899089908890889060040161378a565b600060405180830381600087803b15801561172957600080fd5b505af115801561173d573d6000803e3d6000fd5b50505050505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611796576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61179e6106b0565b6001600160a01b03851615806117bb57506001600160a01b038316155b156117f2576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8360000361182c576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061185f57506001600160a01b03831630145b15611896576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af11580156118fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192291906139ad565b6116c2576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461199281612020565b610bfe8383612117565b3373735b14bb79463307aacbed86daf3322b1e6226ab146119e9576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119f16106b0565b6001600160a01b0383161580611a0e57506001600160a01b038116155b15611a45576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600003611a7f576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab1480611ab257506001600160a01b03811630145b15611ae9576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611b51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7591906139ad565b610c50576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611c26576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b8551600003611c67576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516040517ffc5fecd5000000000000000000000000000000000000000000000000000000008152600481019190915260009081906001600160a01b0388169063fc5fecd5906024016040805180830381865afa158015611ccc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cf091906139ca565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af1158015611d75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d9991906139ad565b611dcf576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b866001600160a01b0316336001600160a01b03167f306ee13f48319a123b222c69908e44dcf91abffc20cacc502e3cf5a4ff23e0e48a89898989604051611e1a9594939291906139f8565b60405180910390a35050505050505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015611ec2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee691906139ad565b611f1c576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b158015611f7b57600080fd5b505af1158015611f8f573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d8060008114611fe0576040519150601f19603f3d011682016040523d82523d6000602084013e611fe5565b606091505b5050905080610c50576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c8781336128b8565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1661210d576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556120c33390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506107a1565b60009150506107a1565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff161561210d576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506107a1565b6121e3612945565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b61070c6129a0565b61227b6129a0565b61070c612a07565b61228b6129a0565b61070c612a58565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061232c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166123207f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b1561070c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610efa81612020565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156123e6575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526123e391810190613807565b60015b61242c576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114612488576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401612423565b610c508383612a60565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461070c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806000846001600160a01b031663fc5fecd5856040518263ffffffff1660e01b815260040161252791815260200190565b6040805180830381865afa158015612543573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061256791906139ca565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af11580156125ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061261091906139ad565b612646576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018790526001600160a01b038616906323b872dd906064016020604051808303816000875af11580156126b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d691906139ad565b61270c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018790526001600160a01b038616906342966c68906024016020604051808303816000875af115801561276c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061279091906139ad565b6127c6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60006127ca8383846001600160a01b031663091d27886040518163ffffffff1660e01b8152600401602060405180830381865afa158015612816573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061283a9190613807565b6124f4565b6128476106b0565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361224d565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610efa576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401612423565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1661070c576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661070c576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612a0f6129a0565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b611e2c6129a0565b612a6982612ab6565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115612aae57610c508282612b5e565b610efa612bd4565b806001600160a01b03163b600003612b05576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401612423565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051612b7b9190613a9b565b600060405180830381855af49150503d8060008114612bb6576040519150601f19603f3d011682016040523d82523d6000602084013e612bbb565b606091505b5091509150612bcb858383612c0c565b95945050505050565b341561070c576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082612c2157612c1c82612c81565b6127ca565b8151158015612c3857506001600160a01b0384163b155b15612c7a576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401612423565b50806127ca565b805115612c915780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215612cd557600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146127ca57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112612d4557600080fd5b813567ffffffffffffffff811115612d5f57612d5f612d05565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff81118282101715612dac57612dac612d05565b604052818152838201602001851015612dc457600080fd5b816020850160208301376000918101602001919091529392505050565b6001600160a01b0381168114610c8757600080fd5b60008083601f840112612e0857600080fd5b50813567ffffffffffffffff811115612e2057600080fd5b602083019150836020828501011115612e3857600080fd5b9250929050565b600060408284031215612e5157600080fd5b50919050565b600060a08284031215612e5157600080fd5b60008060008060008060c08789031215612e8257600080fd5b863567ffffffffffffffff811115612e9957600080fd5b612ea589828a01612d34565b9650506020870135612eb681612de1565b9450604087013567ffffffffffffffff811115612ed257600080fd5b612ede89828a01612df6565b9095509350612ef290508860608901612e3f565b915060a087013567ffffffffffffffff811115612f0e57600080fd5b612f1a89828a01612e57565b9150509295509295509295565b600060808284031215612e5157600080fd5b60008060408385031215612f4c57600080fd5b8235612f5781612de1565b9150602083013567ffffffffffffffff811115612f7357600080fd5b612f7f85828601612f27565b9150509250929050565b600060608284031215612e5157600080fd5b600080600080600060808688031215612fb357600080fd5b853567ffffffffffffffff811115612fca57600080fd5b612fd688828901612f89565b955050602086013593506040860135612fee81612de1565b9250606086013567ffffffffffffffff81111561300a57600080fd5b61301688828901612df6565b969995985093965092949392505050565b60006020828403121561303957600080fd5b5035919050565b600080600080600080600060e0888a03121561305b57600080fd5b873567ffffffffffffffff81111561307257600080fd5b61307e8a828b01612d34565b9750506020880135955060408801359450606088013567ffffffffffffffff8111156130a957600080fd5b6130b58a828b01612df6565b90955093506130c990508960808a01612e3f565b915060c088013567ffffffffffffffff8111156130e557600080fd5b6130f18a828b01612e57565b91505092959891949750929550565b6000806040838503121561311357600080fd5b82359150602083013561312581612de1565b809150509250929050565b6000806040838503121561314357600080fd5b823561314e81612de1565b9150602083013561312581612de1565b6000806040838503121561317157600080fd5b823561317c81612de1565b9150602083013567ffffffffffffffff81111561319857600080fd5b612f7f85828601612d34565b600080600080600080600060e0888a0312156131bf57600080fd5b873567ffffffffffffffff8111156131d657600080fd5b6131e28a828b01612d34565b9750506020880135955060408801356131fa81612de1565b9450606088013567ffffffffffffffff8111156130a957600080fd5b6000806000806080858703121561322c57600080fd5b843567ffffffffffffffff81111561324357600080fd5b61324f87828801612d34565b94505060208501359250604085013561326781612de1565b9150606085013567ffffffffffffffff81111561328357600080fd5b61328f87828801612e57565b91505092959194509250565b600080600080608085870312156132b157600080fd5b843567ffffffffffffffff8111156132c857600080fd5b6132d487828801612d34565b9450506020850135925060408501359150606085013567ffffffffffffffff81111561328357600080fd5b6000806000806080858703121561331557600080fd5b843561332081612de1565b935060208501359250604085013561333781612de1565b9150606085013567ffffffffffffffff81111561335357600080fd5b61328f87828801612f27565b60005b8381101561337a578181015183820152602001613362565b50506000910152565b6000815180845261339b81602086016020860161335f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006127ca6020830184613383565b60008060008060008060a087890312156133f957600080fd5b863567ffffffffffffffff81111561341057600080fd5b61341c89828a01612f89565b965050602087013561342d81612de1565b945060408701359350606087013561344481612de1565b9250608087013567ffffffffffffffff81111561346057600080fd5b61346c89828a01612df6565b979a9699509497509295939492505050565b60008060006060848603121561349357600080fd5b833561349e81612de1565b92506020840135915060408401356134b581612de1565b809150509250925092565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126134f557600080fd5b83018035915067ffffffffffffffff82111561351057600080fd5b602001915036819003821315612e3857600080fd5b808201808211156107a1577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8015158114610c8757600080fd5b6000604082840312801561358057600080fd5b506040805190810167ffffffffffffffff811182821017156135a4576135a4612d05565b6040528235815260208301356135b98161355f565b60208201529392505050565b600060a082360312156135d757600080fd5b60405160a0810167ffffffffffffffff811182821017156135fa576135fa612d05565b604052823561360881612de1565b815260208301356136188161355f565b6020820152604083013561362b81612de1565b6040820152606083013567ffffffffffffffff81111561364a57600080fd5b61365636828601612d34565b606083015250608092830135928101929092525090565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126136a257600080fd5b830160208101925035905067ffffffffffffffff8111156136c257600080fd5b803603821315612e3857600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000823561372b81612de1565b6001600160a01b038116602084015250602083013561374981612de1565b6001600160a01b03811660408401525060006040840135905080606084015250613776606084018461366d565b608080850152612bcb60a0850182846136d1565b60808152600061379a878861366d565b606060808501526137af60e0850182846136d1565b91505060208801356137c081612de1565b6001600160a01b0390811660a085015260408981013560c08601529088166020850152830186905282810360608401526137fb8185876136d1565b98975050505050505050565b60006020828403121561381957600080fd5b5051919050565b6000813561382d81612de1565b6001600160a01b0316835260208201356138468161355f565b15156020840152604082013561385b81612de1565b6001600160a01b03166040840152613876606083018361366d565b60a0606086015261388b60a0860182846136d1565b6080948501359590940194909452509092915050565b610120815260006138b661012083018c613383565b6001600160a01b038b16602084015289604084015288606084015287608084015282810360a08401526138ea8187896136d1565b853560c0850152905060208501356139018161355f565b151560e084015282810361010084015261391b8185613820565b9c9b505050505050505050505050565b6101208152600061394061012083018a613383565b6001600160a01b03891660208401528760408401528660608401528560808401528281038060a08501526000825261398760c0850187805182526020908101511515910152565b602081016101008501525061399f6020820185613820565b9a9950505050505050505050565b6000602082840312156139bf57600080fd5b81516127ca8161355f565b600080604083850312156139dd57600080fd5b82516139e881612de1565b6020939093015192949293505050565b60a081526000613a0b60a0830188613383565b8281036020840152613a1e8187896136d1565b85516040850152602086015115156060850152905082810360808401526001600160a01b0384511681526020840151151560208201526001600160a01b036040850151166040820152606084015160a06060830152613a8060a0830182613383565b90506080850151608083015280925050509695505050505050565b60008251613aad81846020870161335f565b919091019291505056fea2646970667358221220c1c36eb2cd88e78897862b0da6e7385d5f7141c3d4197e277f188fb56aa2dd0364736f6c634300081a0033", + Bin: "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051613aed6100fd6000396000818161229e015281816122c7015261249d0152613aed6000f3fe6080604052600436106101c65760003560e01c80635c975abb116100f75780639d4ba46511610095578063c39aca3711610064578063c39aca371461061c578063d547741f1461063c578063e63ab1e91461065c578063f45346dc1461069057600080fd5b80639d4ba46514610571578063a217fddf14610591578063ad3cb1cc146105a6578063bcf7f32b146105fc57600080fd5b80638456cb59116100d15780638456cb59146104c657806391d14854146104db57806397a1cef11461054057806397d340f51461055b57600080fd5b80635c975abb1461044f5780637b15118b146104865780637c0dcb5f146104a657600080fd5b80632810ae63116101645780633f4ba83a1161013e5780633f4ba83a146103f2578063485cc955146104075780634f1ef2861461042757806352d1902d1461043a57600080fd5b80632810ae63146103925780632f2ff15d146103b257806336568abe146103d257600080fd5b806321501a95116101a057806321501a95146102b557806321e093b1146102d5578063248a9ca31461030d5780632722feee1461036a57600080fd5b806301ffc9a71461024057806306cb898314610275578063184b07931461029557600080fd5b3661023b576101d36106b0565b6000546001600160a01b0316331480159061020257503373735b14bb79463307aacbed86daf3322b1e6226ab14155b15610239576040517fb3af013700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b34801561024c57600080fd5b5061026061025b366004612cc3565b61070e565b60405190151581526020015b60405180910390f35b34801561028157600080fd5b50610239610290366004612e69565b6107a7565b3480156102a157600080fd5b506102396102b0366004612f39565b61089a565b3480156102c157600080fd5b506102396102d0366004612f9b565b6109a2565b3480156102e157600080fd5b506000546102f5906001600160a01b031681565b6040516001600160a01b03909116815260200161026c565b34801561031957600080fd5b5061035c610328366004613027565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b60405190815260200161026c565b34801561037657600080fd5b506102f573735b14bb79463307aacbed86daf3322b1e6226ab81565b34801561039e57600080fd5b506102396103ad366004613040565b610b6f565b3480156103be57600080fd5b506102396103cd366004613100565b610bba565b3480156103de57600080fd5b506102396103ed366004613100565b610c04565b3480156103fe57600080fd5b50610239610c55565b34801561041357600080fd5b50610239610422366004613130565b610c8a565b61023961043536600461315e565b610edf565b34801561044657600080fd5b5061035c610efe565b34801561045b57600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610260565b34801561049257600080fd5b506102396104a13660046131a4565b610f2d565b3480156104b257600080fd5b506102396104c1366004613216565b61112e565b3480156104d257600080fd5b5061023961135b565b3480156104e757600080fd5b506102606104f6366004613100565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561054c57600080fd5b506102396103ad36600461329b565b34801561056757600080fd5b5061035c61040081565b34801561057d57600080fd5b5061023961058c3660046132ff565b61138d565b34801561059d57600080fd5b5061035c600081565b3480156105b257600080fd5b506105ef6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161026c91906133cd565b34801561060857600080fd5b506102396106173660046133e0565b611619565b34801561062857600080fd5b506102396106373660046133e0565b611749565b34801561064857600080fd5b50610239610657366004613100565b611958565b34801561066857600080fd5b5061035c7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b34801561069c57600080fd5b506102396106ab36600461347e565b61199c565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff161561070c576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806107a157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6107af611bab565b6107b76106b0565b81356000036107f2576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61040061080260608301836134c0565b61080d915085613525565b1115610845576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108698686868661085b3688900388018861356d565b610864876135c5565b611c2c565b61089260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108e7576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108ef6106b0565b6001600160a01b03821661092f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063c9028a369061097490849060040161371a565b600060405180830381600087803b15801561098e57600080fd5b505af1158015610892573d6000803e3d6000fd5b3373735b14bb79463307aacbed86daf3322b1e6226ab146109ef576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109f76106b0565b6001600160a01b038316610a37576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83600003610a71576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610aa457506001600160a01b03831630145b15610adb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ae58484611e52565b6000546040517f5bcfd6160000000000000000000000000000000000000000000000000000000081526001600160a01b0380861692635bcfd61692610b36928a92169089908890889060040161378a565b600060405180830381600087803b158015610b5057600080fd5b505af1158015610b64573d6000803e3d6000fd5b505050505050505050565b610b77611bab565b610b7f6106b0565b6040517fe4dd681d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610bf481612020565b610bfe838361202a565b50505050565b6001600160a01b0381163314610c46576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c508282612117565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610c7f81612020565b610c876121db565b50565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610cd55750825b905060008267ffffffffffffffff166001148015610cf25750303b155b905081158015610d00575080155b15610d37576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610d985784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610db557506001600160a01b038616155b15610dec576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610df461226b565b610dfc61226b565b610e04612273565b610e0c612283565b610e1760008761202a565b50610e427f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8761202a565b50600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0389161790558315610bb15784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050505050565b610ee7612293565b610ef082612363565b610efa828261236e565b5050565b6000610f08612492565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610f35611bab565b610f3d6106b0565b8651600003610f78576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85600003610fb2576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8135600003610fed576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610400610ffd60608301836134c0565b611008915085613525565b1115611040576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061104e878785356124f4565b90506000336001600160a01b03167f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c8a898b868c6001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e39190613807565b8c8c8c8c6040516110fc999897969594939291906138a1565b60405180910390a350610bb160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b611136611bab565b61113e6106b0565b8351600003611179576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036111b3576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006111c360608301836134c0565b905011156111fd576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061120984846127d1565b90506000336001600160a01b03167f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c87868886896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561127a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129e9190613807565b60405180604001604052808c6001600160a01b031663091d27886040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130b9190613807565b81526001602090910152604051611329969594939291908c9061392b565b60405180910390a350610bfe60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61138581612020565b610c8761283f565b3373735b14bb79463307aacbed86daf3322b1e6226ab146113da576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113e26106b0565b6001600160a01b03841615806113ff57506001600160a01b038216155b15611436576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003611470576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821673735b14bb79463307aacbed86daf3322b1e6226ab14806114a357506001600160a01b03821630145b156114da576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152602482018590528516906347e7ef24906044016020604051808303816000875af1158015611542573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156691906139ad565b61159c576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063c9028a36906115e190849060040161371a565b600060405180830381600087803b1580156115fb57600080fd5b505af115801561160f573d6000803e3d6000fd5b5050505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611666576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61166e6106b0565b6001600160a01b038516158061168b57506001600160a01b038316155b156116c2576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f5bcfd6160000000000000000000000000000000000000000000000000000000081526001600160a01b03841690635bcfd6169061170f908990899089908890889060040161378a565b600060405180830381600087803b15801561172957600080fd5b505af115801561173d573d6000803e3d6000fd5b50505050505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611796576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61179e6106b0565b6001600160a01b03851615806117bb57506001600160a01b038316155b156117f2576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8360000361182c576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061185f57506001600160a01b03831630145b15611896576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af11580156118fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192291906139ad565b6116c2576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461199281612020565b610bfe8383612117565b3373735b14bb79463307aacbed86daf3322b1e6226ab146119e9576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119f16106b0565b6001600160a01b0383161580611a0e57506001600160a01b038116155b15611a45576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600003611a7f576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab1480611ab257506001600160a01b03811630145b15611ae9576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611b51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7591906139ad565b610c50576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611c26576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b8551600003611c67576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516040517ffc5fecd5000000000000000000000000000000000000000000000000000000008152600481019190915260009081906001600160a01b0388169063fc5fecd5906024016040805180830381865afa158015611ccc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cf091906139ca565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af1158015611d75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d9991906139ad565b611dcf576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b866001600160a01b0316336001600160a01b03167f306ee13f48319a123b222c69908e44dcf91abffc20cacc502e3cf5a4ff23e0e48a89898989604051611e1a9594939291906139f8565b60405180910390a35050505050505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015611ec2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee691906139ad565b611f1c576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b158015611f7b57600080fd5b505af1158015611f8f573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d8060008114611fe0576040519150601f19603f3d011682016040523d82523d6000602084013e611fe5565b606091505b5050905080610c50576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c8781336128b8565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1661210d576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556120c33390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506107a1565b60009150506107a1565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff161561210d576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506107a1565b6121e3612945565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b61070c6129a0565b61227b6129a0565b61070c612a07565b61228b6129a0565b61070c612a58565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061232c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166123207f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b1561070c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610efa81612020565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156123e6575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526123e391810190613807565b60015b61242c576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114612488576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401612423565b610c508383612a60565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461070c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806000846001600160a01b031663fc5fecd5856040518263ffffffff1660e01b815260040161252791815260200190565b6040805180830381865afa158015612543573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061256791906139ca565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af11580156125ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061261091906139ad565b612646576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018790526001600160a01b038616906323b872dd906064016020604051808303816000875af11580156126b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d691906139ad565b61270c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018790526001600160a01b038616906342966c68906024016020604051808303816000875af115801561276c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061279091906139ad565b6127c6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60006127ca8383846001600160a01b031663091d27886040518163ffffffff1660e01b8152600401602060405180830381865afa158015612816573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061283a9190613807565b6124f4565b6128476106b0565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361224d565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610efa576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401612423565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1661070c576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661070c576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612a0f6129a0565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b611e2c6129a0565b612a6982612ab6565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115612aae57610c508282612b5e565b610efa612bd4565b806001600160a01b03163b600003612b05576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401612423565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051612b7b9190613a9b565b600060405180830381855af49150503d8060008114612bb6576040519150601f19603f3d011682016040523d82523d6000602084013e612bbb565b606091505b5091509150612bcb858383612c0c565b95945050505050565b341561070c576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082612c2157612c1c82612c81565b6127ca565b8151158015612c3857506001600160a01b0384163b155b15612c7a576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401612423565b50806127ca565b805115612c915780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215612cd557600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146127ca57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112612d4557600080fd5b813567ffffffffffffffff811115612d5f57612d5f612d05565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff81118282101715612dac57612dac612d05565b604052818152838201602001851015612dc457600080fd5b816020850160208301376000918101602001919091529392505050565b6001600160a01b0381168114610c8757600080fd5b60008083601f840112612e0857600080fd5b50813567ffffffffffffffff811115612e2057600080fd5b602083019150836020828501011115612e3857600080fd5b9250929050565b600060408284031215612e5157600080fd5b50919050565b600060a08284031215612e5157600080fd5b60008060008060008060c08789031215612e8257600080fd5b863567ffffffffffffffff811115612e9957600080fd5b612ea589828a01612d34565b9650506020870135612eb681612de1565b9450604087013567ffffffffffffffff811115612ed257600080fd5b612ede89828a01612df6565b9095509350612ef290508860608901612e3f565b915060a087013567ffffffffffffffff811115612f0e57600080fd5b612f1a89828a01612e57565b9150509295509295509295565b600060808284031215612e5157600080fd5b60008060408385031215612f4c57600080fd5b8235612f5781612de1565b9150602083013567ffffffffffffffff811115612f7357600080fd5b612f7f85828601612f27565b9150509250929050565b600060608284031215612e5157600080fd5b600080600080600060808688031215612fb357600080fd5b853567ffffffffffffffff811115612fca57600080fd5b612fd688828901612f89565b955050602086013593506040860135612fee81612de1565b9250606086013567ffffffffffffffff81111561300a57600080fd5b61301688828901612df6565b969995985093965092949392505050565b60006020828403121561303957600080fd5b5035919050565b600080600080600080600060e0888a03121561305b57600080fd5b873567ffffffffffffffff81111561307257600080fd5b61307e8a828b01612d34565b9750506020880135955060408801359450606088013567ffffffffffffffff8111156130a957600080fd5b6130b58a828b01612df6565b90955093506130c990508960808a01612e3f565b915060c088013567ffffffffffffffff8111156130e557600080fd5b6130f18a828b01612e57565b91505092959891949750929550565b6000806040838503121561311357600080fd5b82359150602083013561312581612de1565b809150509250929050565b6000806040838503121561314357600080fd5b823561314e81612de1565b9150602083013561312581612de1565b6000806040838503121561317157600080fd5b823561317c81612de1565b9150602083013567ffffffffffffffff81111561319857600080fd5b612f7f85828601612d34565b600080600080600080600060e0888a0312156131bf57600080fd5b873567ffffffffffffffff8111156131d657600080fd5b6131e28a828b01612d34565b9750506020880135955060408801356131fa81612de1565b9450606088013567ffffffffffffffff8111156130a957600080fd5b6000806000806080858703121561322c57600080fd5b843567ffffffffffffffff81111561324357600080fd5b61324f87828801612d34565b94505060208501359250604085013561326781612de1565b9150606085013567ffffffffffffffff81111561328357600080fd5b61328f87828801612e57565b91505092959194509250565b600080600080608085870312156132b157600080fd5b843567ffffffffffffffff8111156132c857600080fd5b6132d487828801612d34565b9450506020850135925060408501359150606085013567ffffffffffffffff81111561328357600080fd5b6000806000806080858703121561331557600080fd5b843561332081612de1565b935060208501359250604085013561333781612de1565b9150606085013567ffffffffffffffff81111561335357600080fd5b61328f87828801612f27565b60005b8381101561337a578181015183820152602001613362565b50506000910152565b6000815180845261339b81602086016020860161335f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006127ca6020830184613383565b60008060008060008060a087890312156133f957600080fd5b863567ffffffffffffffff81111561341057600080fd5b61341c89828a01612f89565b965050602087013561342d81612de1565b945060408701359350606087013561344481612de1565b9250608087013567ffffffffffffffff81111561346057600080fd5b61346c89828a01612df6565b979a9699509497509295939492505050565b60008060006060848603121561349357600080fd5b833561349e81612de1565b92506020840135915060408401356134b581612de1565b809150509250925092565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126134f557600080fd5b83018035915067ffffffffffffffff82111561351057600080fd5b602001915036819003821315612e3857600080fd5b808201808211156107a1577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8015158114610c8757600080fd5b6000604082840312801561358057600080fd5b506040805190810167ffffffffffffffff811182821017156135a4576135a4612d05565b6040528235815260208301356135b98161355f565b60208201529392505050565b600060a082360312156135d757600080fd5b60405160a0810167ffffffffffffffff811182821017156135fa576135fa612d05565b604052823561360881612de1565b815260208301356136188161355f565b6020820152604083013561362b81612de1565b6040820152606083013567ffffffffffffffff81111561364a57600080fd5b61365636828601612d34565b606083015250608092830135928101929092525090565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126136a257600080fd5b830160208101925035905067ffffffffffffffff8111156136c257600080fd5b803603821315612e3857600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000823561372b81612de1565b6001600160a01b038116602084015250602083013561374981612de1565b6001600160a01b03811660408401525060006040840135905080606084015250613776606084018461366d565b608080850152612bcb60a0850182846136d1565b60808152600061379a878861366d565b606060808501526137af60e0850182846136d1565b91505060208801356137c081612de1565b6001600160a01b0390811660a085015260408981013560c08601529088166020850152830186905282810360608401526137fb8185876136d1565b98975050505050505050565b60006020828403121561381957600080fd5b5051919050565b6000813561382d81612de1565b6001600160a01b0316835260208201356138468161355f565b15156020840152604082013561385b81612de1565b6001600160a01b03166040840152613876606083018361366d565b60a0606086015261388b60a0860182846136d1565b6080948501359590940194909452509092915050565b610120815260006138b661012083018c613383565b6001600160a01b038b16602084015289604084015288606084015287608084015282810360a08401526138ea8187896136d1565b853560c0850152905060208501356139018161355f565b151560e084015282810361010084015261391b8185613820565b9c9b505050505050505050505050565b6101208152600061394061012083018a613383565b6001600160a01b03891660208401528760408401528660608401528560808401528281038060a08501526000825261398760c0850187805182526020908101511515910152565b602081016101008501525061399f6020820185613820565b9a9950505050505050505050565b6000602082840312156139bf57600080fd5b81516127ca8161355f565b600080604083850312156139dd57600080fd5b82516139e881612de1565b6020939093015192949293505050565b60a081526000613a0b60a0830188613383565b8281036020840152613a1e8187896136d1565b85516040850152602086015115156060850152905082810360808401526001600160a01b0384511681526020840151151560208201526001600160a01b036040850151166040820152606084015160a06060830152613a8060a0830182613383565b90506080850151608083015280925050509695505050505050565b60008251613aad81846020870161335f565b919091019291505056fea26469706673582212201ddcf73d6c1640fc84dc0b3508ad2b024037657f752e7304b86608832c25552564736f6c634300081a0033", } // 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 8c21103b7..2be4fd3b8 100644 --- a/v2/pkg/gatewayzevm.t.sol/gatewayzevminboundtest.go +++ b/v2/pkg/gatewayzevm.t.sol/gatewayzevminboundtest.go @@ -65,7 +65,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\":\"testCallWithCallOpts\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testCallWithCallOptsFailsIfGasLimitIsZero\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testCallWithCallOptsFailsIfMessageSizeExceeded\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testCallWithCallOptsFailsIfReceiverIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpgradeAndWithdrawZRC20\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallZETAWithCallOptsFailsIfAmountIsReceiverIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallZETAWithCallOptsFailsIfAmountIsZero\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallZETAWithCallOptsFailsIfMessageSizeExceeded\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallZRC20FailsIfAmountIsZero\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallZRC20FailsIfGasLimitIsZero\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallZRC20FailsIfMessageSizeExceeded\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallZRC20FailsIfReceiverIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallZRC20WithCallOptsFailsIfAmountIsZero\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallZRC20WithCallOptsFailsIfGasLimitIsZero\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallZRC20WithCallOptsFailsIfMessageSizeExceeded\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallZRC20WithCallOptsFailsIfReceiverIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETA\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAFailsIfAmountIsZero\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAFailsIfMessageSizeExceeded\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAFailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAFailsIfNoBalance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAFailsIfReceiverIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAWithCallOptsWithMessage\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAWithCallOptsWithMessageFailsIfGasLimitIsZero\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAWithCallOptsWithMessageFailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20FailsIfMessageSizeExceeded\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20FailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20FailsIfNoBalanceForGasFee\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20FailsIfNoBalanceForTransfer\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20FailsIfReceiverIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20FailsIsAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20WithCallOptsWithMessage\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20WithMessage\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20WithMessageFailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20WithMessageWithCallOptsFailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Called\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"callOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structCallOptions\",\"components\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"isArbitraryCall\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawn\",\"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\"},{\"name\":\"callOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structCallOptions\",\"components\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"isArbitraryCall\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawnV2\",\"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\"},{\"name\":\"callOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structCallOptions\",\"components\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"isArbitraryCall\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\":\"CallerIsNotProtocol\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedZetaSent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientGasLimit\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZetaAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LowBalance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"MessageSizeExceeded\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrProtocol\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZETANotSupported\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20BurnFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20TransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5062010bd9806200003e6000396000f3fe608060405234801561001057600080fd5b506004361061032b5760003560e01c80636dfcbc50116101b2578063bed3e813116100f9578063e51c6388116100a2578063eb7a2fac1161007c578063eb7a2fac146104ec578063fa7626d4146104f4578063fbc611c814610501578063fdad0ad01461050957600080fd5b8063e51c6388146104dc578063e804a4061461035a578063ea37902f146104e457600080fd5b8063dc749dd7116100d3578063dc749dd7146104c4578063dde7e967146104cc578063e20c9f71146104d457600080fd5b8063bed3e813146104ac578063c946d7c0146104b4578063ceccfab3146104bc57600080fd5b8063b0464fdc1161015b578063ba414fa611610135578063ba414fa614610484578063ba800c911461049c578063ba9adeef146104a457600080fd5b8063b0464fdc1461046c578063b51ac07114610474578063b5508aa91461047c57600080fd5b806385226c811161018c57806385226c811461043a578063916a17c61461044f578063a721b2d31461046457600080fd5b80636dfcbc50146104225780637ae697301461042a57806383ababa91461043257600080fd5b80633e5e3c23116102765780635efe72a91161021f57806364002a1f116101f957806364002a1f146103fd57806366d9a9a0146104055780636d6ce0d01461041a57600080fd5b80635efe72a9146103e55780636198fb19146103ed5780636221b509146103f557600080fd5b8063431814371161025057806343181437146103cd5780634ffab9de146103d55780635d72228f146103dd57600080fd5b80633e5e3c23146103b55780633f7286f4146103bd57806342752d41146103c557600080fd5b80631ed7831c116102d8578063264b524c116102b2578063264b524c146103905780632ade38801461039857806336431b3f146103ad57600080fd5b80631ed7831c1461036257806320dee15f1461038057806321aeb18c1461038857600080fd5b80631475976611610309578063147597661461034a5780631b9641bf146103525780631e63d2b91461035a57600080fd5b80630a9254e4146103305780630b5ad28d1461033a5780631238212c14610342575b600080fd5b610338610511565b005b6103386110a6565b610338611259565b610338611625565b610338611853565b6103386119ca565b61036a611de4565b604051610377919061ac5e565b60405180910390f35b610338611e46565b610338612234565b610338612354565b6103a0612548565b604051610377919061acfa565b61033861268a565b61036a6127f1565b61036a612851565b6103386128b1565b610338612a03565b610338612b36565b610338612dba565b61033861310c565b610338613289565b61033861344f565b61033861363d565b61040d613819565b604051610377919061ae60565b61033861399b565b610338613ca0565b610338613eb9565b610338614087565b61044261416b565b604051610377919061aefe565b61045761423b565b604051610377919061af75565b610338614336565b61045761454f565b61033861464a565b610442614749565b61048c614819565b6040519015158152602001610377565b6103386148ed565b610338614a03565b610338614b89565b610338614d02565b610338614f86565b6103386152d2565b610338615375565b61036a6157b4565b610338615814565b610338615cbf565b610338615e52565b601f5461048c9060ff1681565b610338615f51565b6103386162de565b602580547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602680549091166112341790556040516105579061ab6d565b604051809103906000f080158015610573573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600f81527f476174657761795a45564d2e736f6c000000000000000000000000000000000060208201526025549151602481019390935292166044820152610657919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc95500000000000000000000000000000000000000000000000000000000179052616454565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b039384168102919091179182905560208054919092049092167fffffffffffffffffffffffff000000000000000000000000000000000000000090921682178155604080517f2722feee0000000000000000000000000000000000000000000000000000000081529051632722feee926004808401939192918290030181865afa158015610719573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073d919061b00c565b602780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516107819061ab7b565b604051809103906000f08015801561079d573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161781556027546040517f06447d5600000000000000000000000000000000000000000000000000000000815292166004830152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d569101600060405180830381600087803b15801561083957600080fd5b505af115801561084d573d6000803e3d6000fd5b5050505060008060006040516108629061ab89565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801561089e573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556020546040516012936001938493600093919216906108f49061ab97565b6109039695949392919061b035565b604051809103906000f08015801561091f573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556023546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b1580156109b657600080fd5b505af11580156109ca573d6000803e3d6000fd5b50506023546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b158015610a3457600080fd5b505af1158015610a48573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610ac857600080fd5b505af1158015610adc573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610b3157600080fd5b505af1158015610b45573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610bb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bdd919061b12a565b506021546025546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116906347e7ef24906044016020604051808303816000875af1158015610c4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c72919061b12a565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610cd157600080fd5b505af1158015610ce5573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610d5b57600080fd5b505af1158015610d6f573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116925063095ea7b391506044016020604051808303816000875af1158015610de3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e07919061b12a565b50602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610e5957600080fd5b505af1158015610e6d573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610ee1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f05919061b12a565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610f6457600080fd5b505af1158015610f78573d6000803e3d6000fd5b50506040805160a08101825261032180825260016020808401918252838501928352845190810190945260008085526060840185905260808401528251602880549251151574010000000000000000000000000000000000000000027fffffffffffffffffffffff0000000000000000000000000000000000000000009093166001600160a01b0392831617929092178255915160298054919093167fffffffffffffffffffffffff000000000000000000000000000000000000000091909116179091559093509150602a9061104f908261b20f565b50608091909101516003909101556040805180820190915260018082526020909101819052602c819055602d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b1790526000602c5551630618f58760e51b81527f60ee1247000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015b600060405180830381600087803b15801561117457600080fd5b505af1158015611188573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637b15118b91506034015b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168352611224926001916001600160a01b0316908790602c9060289060040161b3bd565b600060405180830381600087803b15801561123e57600080fd5b505af1158015611252573d6000803e3d6000fd5b5050505050565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa1580156112aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ce919061b42f565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561134357600080fd5b505af1158015611357573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af11580156113c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ed919061b12a565b506026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905280517ff48448140000000000000000000000000000000000000000000000000000000081529051919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f48448149160048082019260009290919082900301818387803b1580156114b057600080fd5b505af11580156114c4573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637b15118b915060340160408051601f198184030181526021548383018352600184526000602085015291517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815261156e93919289926001600160a01b039091169188919060289060040161b448565b600060405180830381600087803b15801561158857600080fd5b505af115801561159c573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156115ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611613919061b42f565b905061161f8382616473565b50505050565b6026546040516001600160a01b03909116602482015260019060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b179052602554602654925193945060019384936001600160a01b03928316937f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c936116e7939216910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f198184030181529082905260225461171f926001600160a01b0390911690899060009081908b90602c9060289061b49c565b60405180910390a3604051630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015b600060405180830381600087803b15801561179457600080fd5b505af11580156117a8573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250632810ae639150603401604051602081830303815290604052858486602c60286040518763ffffffff1660e01b815260040161181c9695949392919061b510565b600060405180830381600087803b15801561183657600080fd5b505af115801561184a573d6000803e3d6000fd5b50505050505050565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905251630618f58760e51b81527f5d67094f000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561191b57600080fd5b505af115801561192f573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637b15118b915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168352611224926000916001600160a01b0316908790602c9060289060040161b3bd565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611a1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3f919061b42f565b6026546040516001600160a01b03909116602482015290915060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b1790525490517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482018190526001600160a01b039092166084820152919250908190737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611b3157600080fd5b505af1158015611b45573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff19166020820152600093506001600160a01b0390911691507f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c9060340160408051601f198184030181528282526021547f4d8943bb000000000000000000000000000000000000000000000000000000008452915190926001600160a01b03909216918b9189918491634d8943bb916004808201926020929091908290030181865afa158015611c17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c3b919061b42f565b6040805180820182528a8152600160208201529051611c639695949392918d9160289061b541565b60405180910390a3602080546026546040516001600160a01b0392831693637b15118b93611cab9316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815260215483830183528684526001602085015291517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b168152611d179391928b926001600160a01b03909116918a919060289060040161b448565b600060405180830381600087803b158015611d3157600080fd5b505af1158015611d45573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611d98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbc919061b42f565b9050611ddc83611dcc888861b5d2565b611dd6919061b5d2565b82616473565b505050505050565b60606016805480602002602001604051908101604052809291908181526020018280548015611e3c57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611e1e575b5050505050905090565b601f54604080518082018252601a81527f476174657761795a45564d55706772616465546573742e736f6c000000000000602080830191909152825190810190925260008252602554611eab936001600160a01b0361010090910481169391166164f2565b601f546021546025546040516370a0823160e01b81526001600160a01b03918216600482015261010090930481169260019260009216906370a0823190602401602060405180830381865afa158015611f08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f2c919061b42f565b6040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b0385166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611fb957600080fd5b505af1158015611fcd573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff19166020820152600093506001600160a01b0390911691507f5d7cd8ae449a6b25de63f10534ddd17d8dd3e79c7aa5f28964b7a7c760258d979060340160408051601f198184030181528282526021547f4d8943bb000000000000000000000000000000000000000000000000000000008452915190926001600160a01b039092169188916000918491634d8943bb916004808201926020929091908290030181865afa1580156120a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c4919061b42f565b604080518082018252600081526001602082015290516120ec9695949392919060289061b5e5565b60405180910390a360265460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b03841690637c0dcb5f9060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526121809287916001600160a01b03169060289060040161b667565b600060405180830381600087803b15801561219a57600080fd5b505af11580156121ae573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015612201573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612225919061b42f565b905061161f611dd6848461b5d2565b604051630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156122a057600080fd5b505af11580156122b4573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b031692506397a1cef191506034015b6040516020818303038152906040526000600160286040518563ffffffff1660e01b8152600401612326949392919061b6a1565b600060405180830381600087803b15801561234057600080fd5b505af115801561161f573d6000803e3d6000fd5b60208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290516001600160a01b03909216926397d340f5926004808401938290030181865afa1580156123b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d6919061b42f565b6123e190600161b6d2565b67ffffffffffffffff8111156123f9576123f961b14c565b6040519080825280601f01601f191660200182016040528015612423576020820181803683370190505b50602a90612431908261b20f565b50604051630618f58760e51b81527f9507fb3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561249e57600080fd5b505af11580156124b2573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637c0dcb5f915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168352612326926002916001600160a01b03169060289060040161b667565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561268157600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561266a5783829060005260206000200180546125dd9061b17b565b80601f01602080910402602001604051908101604052809291908181526020018280546126099061b17b565b80156126565780601f1061262b57610100808354040283529160200191612656565b820191906000526020600020905b81548152906001019060200180831161263957829003601f168201915b5050505050815260200190600101906125be565b50505050815250508152602001906001019061256c565b50505050905090565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905251630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561275257600080fd5b505af1158015612766573d6000803e3d6000fd5b5050602080546040516001600160a01b039091169350637b15118b9250015b60408051601f19818403018152602154838301835260018085526000602086015292517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b168152611224949293926001600160a01b0390921691889160289060040161b448565b60606018805480602002602001604051908101604052809291908181526020018280548015611e3c576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611e1e575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015611e3c576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611e1e575050505050905090565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905251630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561297957600080fd5b505af115801561298d573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250632810ae6391506034016040516020818303038152906040526000600185602c60286040518763ffffffff1660e01b81526004016112249695949392919061b510565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905251630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015612acb57600080fd5b505af1158015612adf573d6000803e3d6000fd5b5050602080546040516001600160a01b039091169350632810ae639250015b60405160208183030381529060405260018085602c60286040518763ffffffff1660e01b81526004016112249695949392919061b510565b60208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290516000936002936001600160a01b0316926397d340f592600480830193928290030181865afa158015612b99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bbd919061b42f565b612bc7919061b6e5565b67ffffffffffffffff811115612bdf57612bdf61b14c565b6040519080825280601f01601f191660200182016040528015612c09576020820181803683370190505b5060208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290519394506002936001600160a01b03909216926397d340f5926004808401938290030181865afa158015612c6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c92919061b42f565b612c9c919061b6e5565b612ca790600161b6d2565b67ffffffffffffffff811115612cbf57612cbf61b14c565b6040519080825280601f01601f191660200182016040528015612ce9576020820181803683370190505b50602a90612cf7908261b20f565b50604051630618f58760e51b81527f9507fb3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015612d6457600080fd5b505af1158015612d78573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637b15118b9150603401612785565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015612e0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e2f919061b42f565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612ea457600080fd5b505af1158015612eb8573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015612f2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f4e919061b12a565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612fad57600080fd5b505af1158015612fc1573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637c0dcb5f915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526130569287916001600160a01b03169060289060040161b667565b600060405180830381600087803b15801561307057600080fd5b505af1158015613084573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156130d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130fb919061b42f565b90506131078282616473565b505050565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b1790526000602c5551630618f58760e51b81527f60ee1247000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015b600060405180830381600087803b1580156131da57600080fd5b505af11580156131ee573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b031692506306cb898391506034015b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168352611224926001600160a01b03909116908690602c9060289060040161b720565b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b1790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561337357600080fd5b505af1158015613387573d6000803e3d6000fd5b505060215460255460265460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039283169450911691507f306ee13f48319a123b222c69908e44dcf91abffc20cacc502e3cf5a4ff23e0e49060340160408051601f1981840301815290829052613407918690602c9060289061b78a565b60405180910390a3602080546026546040516001600160a01b03928316936306cb89839361322c9316910160609190911b6bffffffffffffffffffffffff1916815260140190565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa1580156134a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134c4919061b42f565b6022546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526101236004820152602481018390529192506001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015613531573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613555919061b12a565b506000600190507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156135ba57600080fd5b505af11580156135ce573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b031692506397a1cef19150603401604051602081830303815290604052858460286040518563ffffffff1660e01b815260040161181c949392919061b6a1565b6026546040516001600160a01b03909116602482015260019060009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905260255490517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561371257600080fd5b505af1158015613726573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015613798573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137bc919061b12a565b506000602c55604051630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e09060240161177a565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561268157838290600052602060002090600202016040518060400160405290816000820180546138709061b17b565b80601f016020809104026020016040519081016040528092919081815260200182805461389c9061b17b565b80156138e95780601f106138be576101008083540402835291602001916138e9565b820191906000526020600020905b8154815290600101906020018083116138cc57829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561398357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116139305790505b5050505050815250508152602001906001019061383d565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa1580156139ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a10919061b42f565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613a8557600080fd5b505af1158015613a99573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015613b0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b2f919061b12a565b506026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905280517ff48448140000000000000000000000000000000000000000000000000000000081529051919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f48448149160048082019260009290919082900301818387803b158015613bf257600080fd5b505af1158015613c06573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637b15118b915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261156e9288916001600160a01b0316908790602c9060289060040161b3bd565b60208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290516000936002936001600160a01b0316926397d340f592600480830193928290030181865afa158015613d03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d27919061b42f565b613d31919061b6e5565b67ffffffffffffffff811115613d4957613d4961b14c565b6040519080825280601f01601f191660200182016040528015613d73576020820181803683370190505b5060208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290519394506002936001600160a01b03909216926397d340f5926004808401938290030181865afa158015613dd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dfc919061b42f565b613e06919061b6e5565b613e1190600161b6d2565b67ffffffffffffffff811115613e2957613e2961b14c565b6040519080825280601f01601f191660200182016040528015613e53576020820181803683370190505b50602a90613e61908261b20f565b50604051630618f58760e51b81527f9507fb3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024016131c0565b60208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290516001600160a01b03909216926397d340f5926004808401938290030181865afa158015613f17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f3b919061b42f565b613f4690600161b6d2565b67ffffffffffffffff811115613f5e57613f5e61b14c565b6040519080825280601f01601f191660200182016040528015613f88576020820181803683370190505b50602a90613f96908261b20f565b50604051630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561400357600080fd5b505af1158015614017573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b031692506397a1cef1915060340160405160208183030381529060405260018060286040518563ffffffff1660e01b8152600401612326949392919061b6a1565b604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156140f357600080fd5b505af1158015614107573d6000803e3d6000fd5b5050602080546040805160008152928301908190526021547f7c0dcb5f000000000000000000000000000000000000000000000000000000009091526001600160a01b039182169450637c0dcb5f935061232692916001911660286024840161b667565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156126815783829060005260206000200180546141ae9061b17b565b80601f01602080910402602001604051908101604052809291908181526020018280546141da9061b17b565b80156142275780601f106141fc57610100808354040283529160200191614227565b820191906000526020600020905b81548152906001019060200180831161420a57829003601f168201915b50505050508152602001906001019061418f565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156126815760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561431e57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116142cb5790505b5050505050815250508152602001906001019061425f565b60208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290516000936002936001600160a01b0316926397d340f592600480830193928290030181865afa158015614399573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143bd919061b42f565b6143c7919061b6e5565b67ffffffffffffffff8111156143df576143df61b14c565b6040519080825280601f01601f191660200182016040528015614409576020820181803683370190505b5060208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290519394506002936001600160a01b03909216926397d340f5926004808401938290030181865afa15801561446e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614492919061b42f565b61449c919061b6e5565b6144a790600161b6d2565b67ffffffffffffffff8111156144bf576144bf61b14c565b6040519080825280601f01601f1916602001820160405280156144e9576020820181803683370190505b50602a906144f7908261b20f565b50604051630618f58760e51b81527f9507fb3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e09060240161115a565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156126815760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561463257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116145df5790505b50505050508152505081526020019060010190614573565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905251630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561471257600080fd5b505af1158015614726573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911693506306cb898392500161322c565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101561268157838290600052602060002001805461478c9061b17b565b80601f01602080910402602001604051908101604052809291908181526020018280546147b89061b17b565b80156148055780601f106147da57610100808354040283529160200191614805565b820191906000526020600020905b8154815290600101906020018083116147e857829003601f168201915b50505050508152602001906001019061476d565b60085460009060ff1615614831575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa1580156148c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148e6919061b42f565b1415905090565b604051630618f58760e51b81527f5d67094f000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561495957600080fd5b505af115801561496d573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637c0dcb5f915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168352612326926000916001600160a01b03169060289060040161b667565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905251630618f58760e51b81527f5d67094f000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015614acb57600080fd5b505af1158015614adf573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637b15118b915060340160408051601f1981840301815260215483830183526001845260006020850181905292517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b168152611224949293926001600160a01b0390921691889160289060040161b448565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905251630618f58760e51b81527f60ee1247000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015614c5157600080fd5b505af1158015614c65573d6000803e3d6000fd5b5050602080546026546040805160609290921b6bffffffffffffffffffffffff1916938201939093528251808203601401815260215460748301855260006034840181815260549094015293517f7b15118b0000000000000000000000000000000000000000000000000000000081526001600160a01b039384169650637b15118b9550611224949193600193921691889160289060040161b448565b60208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290516000936002936001600160a01b0316926397d340f592600480830193928290030181865afa158015614d65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614d89919061b42f565b614d93919061b6e5565b67ffffffffffffffff811115614dab57614dab61b14c565b6040519080825280601f01601f191660200182016040528015614dd5576020820181803683370190505b5060208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290519394506002936001600160a01b03909216926397d340f5926004808401938290030181865afa158015614e3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614e5e919061b42f565b614e68919061b6e5565b614e7390600161b6d2565b67ffffffffffffffff811115614e8b57614e8b61b14c565b6040519080825280601f01601f191660200182016040528015614eb5576020820181803683370190505b50602a90614ec3908261b20f565b50604051630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015614f3057600080fd5b505af1158015614f44573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250632810ae639150603401612afe565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015614fd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614ffb919061b42f565b6021546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526101236004820152602481018390529192506001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015615068573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061508c919061b12a565b506027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156150ff57600080fd5b505af1158015615113573d6000803e3d6000fd5b50506021546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a60048201526001600160a01b03909116925063f687d12a9150602401600060405180830381600087803b15801561517657600080fd5b505af115801561518a573d6000803e3d6000fd5b5050604051630618f58760e51b81527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b1580156151fb57600080fd5b505af115801561520f573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637c0dcb5f915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526152a49287916001600160a01b03169060289060040161b667565b600060405180830381600087803b1580156152be57600080fd5b505af1158015611ddc573d6000803e3d6000fd5b604051630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561533e57600080fd5b505af1158015615352573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911693506397a1cef19250016122f2565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa1580156153c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906153ea919061b42f565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa15801561543c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615460919061b42f565b6027546025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152929350163190600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156154de57600080fd5b505af11580156154f2573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015615564573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615588919061b12a565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156155e757600080fd5b505af11580156155fb573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b031692506397a1cef19150603401604051602081830303815290604052878460286040518563ffffffff1660e01b815260040161566a949392919061b6a1565b600060405180830381600087803b15801561568457600080fd5b505af1158015615698573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156156eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061570f919061b42f565b905061571b8582616473565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801561576c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615790919061b42f565b905061579c8582616473565b60275461184a9085906001600160a01b031631616473565b60606015805480602002602001604051908101604052809291908181526020018280548015611e3c576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611e1e575050505050905090565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015615865573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615889919061b42f565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa1580156158db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906158ff919061b42f565b6027546026546040516001600160a01b03918216602482015292935016319060009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905260255490517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156159da57600080fd5b505af11580156159ee573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015615a60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615a84919061b12a565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015615ae357600080fd5b505af1158015615af7573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250632810ae639150603401604051602081830303815290604052888486602c60286040518763ffffffff1660e01b8152600401615b6b9695949392919061b510565b600060405180830381600087803b158015615b8557600080fd5b505af1158015615b99573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015615bec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615c10919061b42f565b9050615c1c8682616473565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015615c6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615c91919061b42f565b9050615c9d8682616473565b602754615cb59086906001600160a01b031631616473565b5050505050505050565b60255460265460405160609190911b6bffffffffffffffffffffffff19166020820152600191829182916001600160a01b0316907f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c9060340160408051601f1981840301815260225483830183526000808552600160208601529251615d5b9492936001600160a01b03909216928a929182919060289061b5e5565b60405180910390a3604051630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015615dcf57600080fd5b505af1158015615de3573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b031692506397a1cef19150603401604051602081830303815290604052848460286040518563ffffffff1660e01b81526004016152a4949392919061b6a1565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905251630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015615f1a57600080fd5b505af1158015615f2e573d6000803e3d6000fd5b5050602080546040516001600160a01b039091169350637b15118b9250016111c6565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015615fa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615fc6919061b42f565b6020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561605757600080fd5b505af115801561606b573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff19166020820152600093506001600160a01b0390911691507f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c9060340160408051601f198184030181528282526021547f4d8943bb000000000000000000000000000000000000000000000000000000008452915190926001600160a01b039092169188916000918491634d8943bb916004808201926020929091908290030181865afa15801561613e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616162919061b42f565b6040805180820182526000815260016020820152905161618a9695949392919060289061b5e5565b60405180910390a3602080546026546040516001600160a01b0392831693637c0dcb5f936161d29316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261622a9287916001600160a01b03169060289060040161b667565b600060405180830381600087803b15801561624457600080fd5b505af1158015616258573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156162ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906162cf919061b42f565b9050613107611dd6848461b5d2565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260029260009216906370a0823190602401602060405180830381865afa15801561632f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616353919061b42f565b6021549091506001600160a01b031663a9059cbb61012361637560018561b5d2565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156163d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906163fc919061b12a565b50604051630618f58760e51b81527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024016151e1565b600061645e61aba5565b616469848483616507565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b1580156164de57600080fd5b505afa158015611ddc573d6000803e3d6000fd5b6164fa61aba5565b6112528585858486616582565b6000806165148584616682565b90506165776040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f7879000000815250828660405160200161656292919061b7d9565b6040516020818303038152906040528561668e565b9150505b9392505050565b6040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201528190737109709ecfa91a80626ff3989d68f67f5b1dd12d9081906306447d5690602401600060405180830381600087803b1580156165f457600080fd5b505af1925050508015616605575060015b61661a57616615878787876166bc565b61184a565b616626878787876166bc565b806001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561666157600080fd5b505af1158015616675573d6000803e3d6000fd5b5050505050505050505050565b600061657b83836166d5565b60c081015151600090156166b2576166ab84848460c001516166f0565b905061657b565b6166ab8484616896565b60006166c88483616981565b905061125285828561698d565b60006166e18383616d57565b61657b8383602001518461668e565b6000806166fb616d67565b905060006167098683616e3a565b9050600061672082606001518360200151856172e0565b90506000616730838389896174f2565b9050600061673d8261836f565b602081015181519192509060030b156167b05789826040015160405160200161676792919061b7fb565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526167a79160040161b87c565b60405180910390fd5b60006167f36040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a20000000000000000000000081525083600161853e565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d9061684690849060040161b87c565b602060405180830381865afa158015616863573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616887919061b00c565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc925906168eb90879060040161b87c565b600060405180830381865afa158015616908573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616930919081019061b948565b9050600061695e828560405160200161694a92919061b97d565b60405160208183030381529060405261873e565b90506001600160a01b03811661646957848460405160200161676792919061b9ac565b60006166e18383618751565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201527fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61036024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90600090829063667f9d7090604401602060405180830381865afa158015616a29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616a4d919061b42f565b905080616bf4576000616a5f8661875d565b604080518082018252600581527f352e302e3000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150616aea905b60408051808201825260008082526020918201528151808301909252845182528085019082015290618855565b80616af6575060008451115b15616b79576040517f4f1ef2860000000000000000000000000000000000000000000000000000000081526001600160a01b03871690634f1ef28690616b42908890889060040161b7d9565b600060405180830381600087803b158015616b5c57600080fd5b505af1158015616b70573d6000803e3d6000fd5b50505050616bee565b6040517f3659cfe60000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152871690633659cfe690602401600060405180830381600087803b158015616bd557600080fd5b505af1158015616be9573d6000803e3d6000fd5b505050505b50611252565b806000616c008261875d565b604080518082018252600581527f352e302e3000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150616c6290616abd565b80616c6e575060008551115b15616cf3576040517f9623609d0000000000000000000000000000000000000000000000000000000081526001600160a01b03831690639623609d90616cbc908a908a908a9060040161ba57565b600060405180830381600087803b158015616cd657600080fd5b505af1158015616cea573d6000803e3d6000fd5b5050505061184a565b6040517f99a88ec40000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015287811660248301528316906399a88ec490604401600060405180830381600087803b15801561666157600080fd5b616d6382826000618869565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90616dee90849060040161ba88565b600060405180830381865afa158015616e0b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616e33919081019061bacf565b9250505090565b616e6c6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050616eb76040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b616ec08561896c565b60208201526000616ed086618d51565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015616f12573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616f3a919081019061bacf565b86838560200151604051602001616f54949392919061bb18565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190616fac90859060040161b87c565b600060405180830381865afa158015616fc9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616ff1919081019061bacf565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f69061703990849060040161bc1c565b602060405180830381865afa158015617056573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061707a919061b12a565b61708f5781604051602001616767919061bc6e565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906170d490849060040161bd00565b600060405180830381865afa1580156170f1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617119919081019061bacf565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f69061716090849060040161bd52565b602060405180830381865afa15801561717d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906171a1919061b12a565b15617236576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906171eb90849060040161bd52565b600060405180830381865afa158015617208573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617230919081019061bacf565b60408501525b846001600160a01b03166349c4fac882866000015160405160200161725b919061bda4565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161728792919061be10565b600060405180830381865afa1580156172a4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526172cc919081019061bacf565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816172fc5790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061735c5761735c61be35565b60200260200101819052506040518060400160405280600381526020017f2d726c0000000000000000000000000000000000000000000000000000000000815250816001815181106173b0576173b061be35565b6020026020010181905250846040516020016173cc919061be64565b604051602081830303815290604052816002815181106173ee576173ee61be35565b60200260200101819052508260405160200161740a919061bed0565b6040516020818303038152906040528160038151811061742c5761742c61be35565b602002602001018190525060006174428261836f565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506174d39060408051808201825260008082526020918201528151808301909252845182528085019082015290618fd4565b6174e85785604051602001616767919061bf11565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015617542565b511590565b6176b6578260200151156175fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a4016167a7565b8260c00151156176b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a4016167a7565b6040805160ff8082526120008201909252600091816020015b60608152602001906001900390816176cf57905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061772a9061bfa2565b935060ff168151811061773f5761773f61be35565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001617790919061bfc1565b6040516020818303038152906040528282806177ab9061bfa2565b935060ff16815181106177c0576177c061be35565b60200260200101819052506040518060400160405280600681526020017f6465706c6f79000000000000000000000000000000000000000000000000000081525082828061780d9061bfa2565b935060ff16815181106178225761782261be35565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d6500000000000000000000000000000000000081525082828061786f9061bfa2565b935060ff16815181106178845761788461be35565b602002602001018190525087602001518282806178a09061bfa2565b935060ff16815181106178b5576178b561be35565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806179029061bfa2565b935060ff16815181106179175761791761be35565b60209081029190910101528751828261792f8161bfa2565b935060ff16815181106179445761794461be35565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806179919061bfa2565b935060ff16815181106179a6576179a661be35565b60200260200101819052506179ba46619035565b82826179c58161bfa2565b935060ff16815181106179da576179da61be35565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280617a279061bfa2565b935060ff1681518110617a3c57617a3c61be35565b602002602001018190525086828280617a549061bfa2565b935060ff1681518110617a6957617a6961be35565b6020908102919091010152855115617b905760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f6465000000000000000000000060208201528282617aba8161bfa2565b935060ff1681518110617acf57617acf61be35565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90617b1f90899060040161b87c565b600060405180830381865afa158015617b3c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617b64919081019061bacf565b8282617b6f8161bfa2565b935060ff1681518110617b8457617b8461be35565b60200260200101819052505b846020015115617c605760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282617bd98161bfa2565b935060ff1681518110617bee57617bee61be35565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280617c3b9061bfa2565b935060ff1681518110617c5057617c5061be35565b6020026020010181905250617e27565b617c9861753d8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b617d2b5760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282617cdb8161bfa2565b935060ff1681518110617cf057617cf061be35565b60200260200101819052508460a00151604051602001617d10919061be64565b604051602081830303815290604052828280617c3b9061bfa2565b8460c00151158015617d6e575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152617d6c90511590565b155b15617e275760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282617db28161bfa2565b935060ff1681518110617dc757617dc761be35565b6020026020010181905250617ddb886190d5565b604051602001617deb919061be64565b604051602081830303815290604052828280617e069061bfa2565b935060ff1681518110617e1b57617e1b61be35565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152617e5b90511590565b617ef05760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282617e9e8161bfa2565b935060ff1681518110617eb357617eb361be35565b60200260200101819052508460400151828280617ecf9061bfa2565b935060ff1681518110617ee457617ee461be35565b60200260200101819052505b6060850151156180115760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282617f398161bfa2565b935060ff1681518110617f4e57617f4e61be35565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015617fbd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617fe5919081019061bacf565b8282617ff08161bfa2565b935060ff16815181106180055761800561be35565b60200260200101819052505b60e085015151156180b85760408051808201909152600a81527f2d2d6761734c696d6974000000000000000000000000000000000000000000006020820152828261805b8161bfa2565b935060ff16815181106180705761807061be35565b602002602001018190525061808c8560e0015160000151619035565b82826180978161bfa2565b935060ff16815181106180ac576180ac61be35565b60200260200101819052505b60e085015160200151156181625760408051808201909152600a81527f2d2d676173507269636500000000000000000000000000000000000000000000602082015282826181058161bfa2565b935060ff168151811061811a5761811a61be35565b60200260200101819052506181368560e0015160200151619035565b82826181418161bfa2565b935060ff16815181106181565761815661be35565b60200260200101819052505b60e0850151604001511561820c5760408051808201909152600e81527f2d2d6d6178466565506572476173000000000000000000000000000000000000602082015282826181af8161bfa2565b935060ff16815181106181c4576181c461be35565b60200260200101819052506181e08560e0015160400151619035565b82826181eb8161bfa2565b935060ff16815181106182005761820061be35565b60200260200101819052505b60e085015160600151156182b65760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826182598161bfa2565b935060ff168151811061826e5761826e61be35565b602002602001018190525061828a8560e0015160600151619035565b82826182958161bfa2565b935060ff16815181106182aa576182aa61be35565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156182d4576182d461b14c565b60405190808252806020026020018201604052801561830757816020015b60608152602001906001900390816182f25790505b50905060005b8260ff168160ff16101561836057838160ff16815181106183305761833061be35565b6020026020010151828260ff168151811061834d5761834d61be35565b602090810291909101015260010161830d565b5093505050505b949350505050565b6183966040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c9161841c9186910161c02c565b600060405180830381865afa158015618439573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052618461919081019061bacf565b9050600061846f8683619bc4565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161849f919061aefe565b6000604051808303816000875af11580156184be573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526184e6919081019061c073565b805190915060030b158015906184ff5750602081015151155b801561850e5750604081015151155b156174e857816000815181106185265761852661be35565b6020026020010151604051602001616767919061c129565b606060006185738560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506185aa9082905b90619d19565b15618707576000618627826186218461861b6185ed8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90619d40565b90619da2565b604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061868b908290619d19565b156186f557604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526186f2905b8290619e27565b90505b6186fe81619e4d565b9250505061657b565b821561872057848460405160200161676792919061c315565b505060408051602081019091526000815261657b565b509392505050565b6000808251602084016000f09392505050565b616d6382826001618869565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fad3cb1cc00000000000000000000000000000000000000000000000000000000179052905160609160009182916001600160a01b038616916187d2919061c3bc565b600060405180830381855afa9150503d806000811461880d576040519150601f19603f3d011682016040523d82523d6000602084013e618812565b606091505b5091509150818015618825575060208151115b1561883e5780806020019051810190618367919061bacf565b505060408051602081019091526000815292915050565b60006188618383619eb6565b159392505050565b8160a001511561887857505050565b6000618885848484619f91565b905060006188928261836f565b602081015181519192509060030b15801561892e5750604080518082018252600781527f53554343455353000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261892e906040805180820182526000808252602091820152815180830190925284518252808501908201526185a4565b1561893b57505050505050565b6040820151511561895b578160400151604051602001616767919061c3d8565b80604051602001616767919061c436565b606060006189a18360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150618a06905b8290618fd4565b15618a7557604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261657b90618a7090839061a52c565b619e4d565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618ad7905b829061a5b6565b600103618ba457604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618b3d906186eb565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261657b90618a70905b8390619e27565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618c03906189ff565b15618d3a57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290618c6b90839061a650565b905060008160018351618c7e919061b5d2565b81518110618c8e57618c8e61be35565b60200260200101519050618d31618a70618d046040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529061a52c565b95945050505050565b82604051602001616767919061c4a1565b50919050565b60606000618d868360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150618de8906189ff565b15618df65761657b81619e4d565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618e5590618ad0565b600103618ebf57604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261657b90618a7090618b9d565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618f1e906189ff565b15618d3a57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290618f8690839061a650565b9050600181511115618fc2578060028251618fa1919061b5d2565b81518110618fb157618fb161be35565b602002602001015192505050919050565b5082604051602001616767919061c4a1565b805182516000911115618fe95750600061646d565b81518351602085015160009291618fff9161b6d2565b619009919061b5d2565b90508260200151810361902057600191505061646d565b82516020840151819020912014905092915050565b606060006190428361a6f5565b600101905060008167ffffffffffffffff8111156190625761906261b14c565b6040519080825280601f01601f19166020018201604052801561908c576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461909657509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091619161905b8290618855565b156191a157505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e73650000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526192009061915a565b1561924057505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d495400000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261929f9061915a565b156192df57505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261933e9061915a565b806193a35750604080518082018252601081527f47504c2d322e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526193a39061915a565b156193e357505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526194429061915a565b806194a75750604080518082018252601081527f47504c2d332e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526194a79061915a565b156194e757505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526195469061915a565b806195ab5750604080518082018252601181527f4c47504c2d322e312d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526195ab9061915a565b156195eb57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261964a9061915a565b806196af5750604080518082018252601181527f4c47504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526196af9061915a565b156196ef57505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261974e9061915a565b1561978e57505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526197ed9061915a565b1561982d57505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261988c9061915a565b156198cc57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261992b9061915a565b1561996b57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e3000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526199ca9061915a565b15619a0a57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152619a699061915a565b80619ace5750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152619ace9061915a565b15619b0e57505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e3100000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152619b6d9061915a565b15619bad57505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151616767929060200161c57f565b60608060005b8451811015619c4f5781858281518110619be657619be661be35565b6020026020010151604051602001619bff92919061b97d565b604051602081830303815290604052915060018551619c1e919061b5d2565b8114619c475781604051602001619c35919061c6e8565b60405160208183030381529060405291505b600101619bca565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081619c685790505090508381600081518110619c9357619c9361be35565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110619ce757619ce761be35565b60200260200101819052508181600281518110619d0657619d0661be35565b6020908102919091010152949350505050565b6020808301518351835192840151600093619d37929184919061a7d7565b14159392505050565b60408051808201909152600080825260208201526000619d72846000015185602001518560000151866020015161a8e8565b9050836020015181619d84919061b5d2565b84518590619d9390839061b5d2565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015619dc757508161646d565b6020808301519084015160019114619dee5750815160208481015190840151829020919020145b8015619e1f57825184518590619e0590839061b5d2565b9052508251602085018051619e1b90839061b6d2565b9052505b509192915050565b6040805180820190915260008082526020820152619e4683838361aa08565b5092915050565b60606000826000015167ffffffffffffffff811115619e6e57619e6e61b14c565b6040519080825280601f01601f191660200182016040528015619e98576020820181803683370190505b5090506000602082019050619e46818560200151866000015161aab3565b8151815160009190811115619ec9575081515b6020808501519084015160005b83811015619f825782518251808214619f52576000196020871015619f3157600184619f0389602061b5d2565b619f0d919061b6d2565b619f1890600861c729565b619f2390600261c827565b619f2d919061b5d2565b1990505b8181168382168181039114619f4f57975061646d9650505050505050565b50505b619f5d60208661b6d2565b9450619f6a60208561b6d2565b93505050602081619f7b919061b6d2565b9050619ed6565b50845186516174e8919061c833565b60606000619f9d616d67565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081619fba57905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061a0159061bfa2565b935060ff168151811061a02a5761a02a61be35565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e330000000000000000000000000000000000000000000000000081525060405160200161a07b919061c853565b60405160208183030381529060405282828061a0969061bfa2565b935060ff168151811061a0ab5761a0ab61be35565b60200260200101819052506040518060400160405280600881526020017f76616c696461746500000000000000000000000000000000000000000000000081525082828061a0f89061bfa2565b935060ff168151811061a10d5761a10d61be35565b60200260200101819052508260405160200161a129919061bed0565b60405160208183030381529060405282828061a1449061bfa2565b935060ff168151811061a1595761a15961be35565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e74726163740000000000000000000000000000000000000000000081525082828061a1a69061bfa2565b935060ff168151811061a1bb5761a1bb61be35565b602002602001018190525061a1d0878461ab2d565b828261a1db8161bfa2565b935060ff168151811061a1f05761a1f061be35565b60209081029190910101528551511561a29c5760408051808201909152600b81527f2d2d7265666572656e63650000000000000000000000000000000000000000006020820152828261a2428161bfa2565b935060ff168151811061a2575761a25761be35565b602002602001018190525061a27086600001518461ab2d565b828261a27b8161bfa2565b935060ff168151811061a2905761a29061be35565b60200260200101819052505b85608001511561a30a5760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261a2e58161bfa2565b935060ff168151811061a2fa5761a2fa61be35565b602002602001018190525061a370565b841561a3705760408051808201909152601281527f2d2d726571756972655265666572656e636500000000000000000000000000006020820152828261a34f8161bfa2565b935060ff168151811061a3645761a36461be35565b60200260200101819052505b6040860151511561a40c5760408051808201909152600d81527f2d2d756e73616665416c6c6f77000000000000000000000000000000000000006020820152828261a3ba8161bfa2565b935060ff168151811061a3cf5761a3cf61be35565b6020026020010181905250856040015182828061a3eb9061bfa2565b935060ff168151811061a4005761a40061be35565b60200260200101819052505b85606001511561a4765760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261a4558161bfa2565b935060ff168151811061a46a5761a46a61be35565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561a4945761a49461b14c565b60405190808252806020026020018201604052801561a4c757816020015b606081526020019060019003908161a4b25790505b50905060005b8260ff168160ff16101561a52057838160ff168151811061a4f05761a4f061be35565b6020026020010151828260ff168151811061a50d5761a50d61be35565b602090810291909101015260010161a4cd565b50979650505050505050565b604080518082019091526000808252602082015281518351101561a55157508161646d565b8151835160208501516000929161a5679161b6d2565b61a571919061b5d2565b6020840151909150600190821461a592575082516020840151819020908220145b801561a5ad5783518551869061a5a990839061b5d2565b9052505b50929392505050565b600080826000015161a5da856000015186602001518660000151876020015161a8e8565b61a5e4919061b6d2565b90505b8351602085015161a5f8919061b6d2565b8111619e46578161a6088161c898565b925050826000015161a63f85602001518361a623919061b5d2565b865161a62f919061b5d2565b838660000151876020015161a8e8565b61a649919061b6d2565b905061a5e7565b6060600061a65e848461a5b6565b61a66990600161b6d2565b67ffffffffffffffff81111561a6815761a68161b14c565b60405190808252806020026020018201604052801561a6b457816020015b606081526020019060019003908161a69f5790505b50905060005b81518110156187365761a6d0618a708686619e27565b82828151811061a6e25761a6e261be35565b602090810291909101015260010161a6ba565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061a73e577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831061a76a576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061a78857662386f26fc10000830492506010015b6305f5e100831061a7a0576305f5e100830492506008015b612710831061a7b457612710830492506004015b6064831061a7c6576064830492506002015b600a831061646d5760010192915050565b60008085841161a8de576020841161a88a576000841561a82257600161a7fe86602061b5d2565b61a80990600861c729565b61a81490600261c827565b61a81e919061b5d2565b1990505b835181168561a831898961b6d2565b61a83b919061b5d2565b805190935082165b81811461a8755787841161a85d5787945050505050618367565b8361a8678161c8b2565b94505082845116905061a843565b61a87f878561b6d2565b945050505050618367565b83832061a897858861b5d2565b61a8a1908761b6d2565b91505b85821061a8dc5784822080820361a8c95761a8bf868461b6d2565b9350505050618367565b61a8d460018461b5d2565b92505061a8a4565b505b5092949350505050565b6000838186851161a9f3576020851161a9a2576000851561a93457600161a91087602061b5d2565b61a91b90600861c729565b61a92690600261c827565b61a930919061b5d2565b1990505b8451811660008761a9458b8b61b6d2565b61a94f919061b5d2565b855190915083165b82811461a9945781861061a97c5761a96f8b8b61b6d2565b9650505050505050618367565b8561a9868161c898565b96505083865116905061a957565b859650505050505050618367565b508383206000905b61a9b4868961b5d2565b821161a9f15785832080820361a9d05783945050505050618367565b61a9db60018561b6d2565b935050818061a9e99061c898565b92505061a9aa565b505b61a9fd878761b6d2565b979650505050505050565b6040805180820190915260008082526020820152600061aa3a856000015186602001518660000151876020015161a8e8565b60208087018051918601919091525190915061aa56908261b5d2565b83528451602086015161aa69919061b6d2565b810361aa78576000855261aaaa565b8351835161aa86919061b6d2565b8551869061aa9590839061b5d2565b905250835161aaa4908261b6d2565b60208601525b50909392505050565b6020811061aaeb578151835261aaca60208461b6d2565b925061aad760208361b6d2565b915061aae460208261b5d2565b905061aab3565b600019811561ab1a57600161ab0183602061b5d2565b61ab0d9061010061c827565b61ab17919061b5d2565b90505b9151835183169219169190911790915250565b6060600061ab3b8484616e3a565b805160208083015160405193945061ab559390910161c8c9565b60405160208183030381529060405291505092915050565b610b67806200c92283390190565b61063a806200d48983390190565b61106f806200dac383390190565b612072806200eb3283390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161abe861abed565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161abe86040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b8181101561ac9f5783516001600160a01b031683526020938401939092019160010161ac78565b509095945050505050565b60005b8381101561acc557818101518382015260200161acad565b50506000910152565b6000815180845261ace681602086016020860161acaa565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561adf6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b8181101561addc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261adc684865161acce565b602095860195909450929092019160010161ad8c565b50919750505060209485019492909201915060010161ad22565b50929695505050505050565b600081518084526020840193506020830160005b8281101561ae565781517fffffffff000000000000000000000000000000000000000000000000000000001686526020958601959091019060010161ae16565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561adf6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516040875261aecc604088018261acce565b905060208201519150868103602088015261aee7818361ae02565b96505050602093840193919091019060010161ae88565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561adf6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845261af6085835161acce565b9450602093840193919091019060010161af26565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561adf6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b038151168652602081015190506040602087015261aff6604087018261ae02565b955050602093840193919091019060010161af9d565b60006020828403121561b01e57600080fd5b81516001600160a01b038116811461657b57600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff881660408301528660608301526003861061b0ef577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a083015261b11060c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b60006020828403121561b13c57600080fd5b8151801515811461657b57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600181811c9082168061b18f57607f821691505b602082108103618d4b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b601f82111561310757806000526020600020601f840160051c8101602085101561b1ef5750805b601f840160051c820191505b81811015611252576000815560010161b1fb565b815167ffffffffffffffff81111561b2295761b22961b14c565b61b23d8161b237845461b17b565b8461b1c8565b6020601f82116001811461b271576000831561b2595750848201515b600019600385901b1c1916600184901b178455611252565b600084815260208120601f198516915b8281101561b2a1578785015182556020948501946001909201910161b281565b508482101561b2bf5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b600081546001600160a01b038116845260ff8160a01c1615156020850152506001600160a01b0360018301541660408401526002820160a060608501526000815461b3188161b17b565b8060a0880152600182166000811461b337576001811461b3715761b3a5565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831660c089015260c082151560051b890101935061b3a5565b84600052602060002060005b8381101561b39c5781548a820160c0015260019091019060200161b37d565b890160c0019450505b50505060038401546080860152809250505092915050565b60e08152600061b3d060e083018961acce565b8760208401526001600160a01b0387166040840152828103606084015261b3f7818761acce565b85546080850152600186015460ff16151560a085015290505b82810360c084015261b422818561b2ce565b9998505050505050505050565b60006020828403121561b44157600080fd5b5051919050565b60e08152600061b45b60e083018961acce565b8760208401526001600160a01b0387166040840152828103606084015261b482818761acce565b855160808501526020860151151560a0850152905061b410565b6101208152600061b4b161012083018b61acce565b6001600160a01b038a16602084015288604084015287606084015286608084015282810360a084015261b4e4818761acce565b855460c0850152600186015460ff16151560e085015290505b828103610100840152616887818561b2ce565b60e08152600061b52360e083018961acce565b876020840152866040840152828103606084015261b3f7818761acce565b6101208152600061b55661012083018b61acce565b6001600160a01b038a16602084015288604084015287606084015286608084015282810360a084015261b589818761acce565b855160c08501526020860151151560e0850152905061b4fd565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561646d5761646d61b5a3565b6101208152600061b5fa61012083018a61acce565b6001600160a01b03891660208401528760408401528660608401528560808401528281038060a08501526000825261b64160c0850187805182526020908101511515910152565b602081016101008501525061b659602082018561b2ce565b9a9950505050505050505050565b60808152600061b67a608083018761acce565b8560208401526001600160a01b0385166040840152828103606084015261a9fd818561b2ce565b60808152600061b6b4608083018761acce565b856020840152846040840152828103606084015261a9fd818561b2ce565b8082018082111561646d5761646d61b5a3565b60008261b71b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60c08152600061b73360c083018861acce565b6001600160a01b0387166020840152828103604084015261b754818761acce565b85546060850152600186015460ff1615156080850152905082810360a084015261b77e818561b2ce565b98975050505050505050565b60a08152600061b79d60a083018761acce565b828103602084015261b7af818761acce565b85546040850152600186015460ff16151560608501529050828103608084015261a9fd818561b2ce565b6001600160a01b0383168152604060208201526000618367604083018461acce565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161b83381601a85016020880161acaa565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161b87081601c84016020880161acaa565b01601c01949350505050565b60208152600061657b602083018461acce565b6040516060810167ffffffffffffffff8111828210171561b8b25761b8b261b14c565b60405290565b60008067ffffffffffffffff84111561b8d35761b8d361b14c565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561b9025761b90261b14c565b60405283815290508082840185101561b91a57600080fd5b61873684602083018561acaa565b600082601f83011261b93957600080fd5b61657b8383516020850161b8b8565b60006020828403121561b95a57600080fd5b815167ffffffffffffffff81111561b97157600080fd5b6164698482850161b928565b6000835161b98f81846020880161acaa565b83519083019061b9a381836020880161acaa565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161b9e481601a85016020880161acaa565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161ba2181603384016020880161acaa565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b6001600160a01b03841681526001600160a01b0383166020820152606060408201526000618d31606083018461acce565b60408152600b60408201527f464f554e4452595f4f5554000000000000000000000000000000000000000000606082015260806020820152600061657b608083018461acce565b60006020828403121561bae157600080fd5b815167ffffffffffffffff81111561baf857600080fd5b8201601f8101841361bb0957600080fd5b6164698482516020840161b8b8565b6000855161bb2a818460208a0161acaa565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161bb64816001840160208a0161acaa565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161bba281600284016020890161acaa565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161bbe481600284016020880161acaa565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061bc2f604083018461acce565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161bca681601f85016020870161acaa565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061bd13604083018461acce565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061bd65604083018461acce565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161bddc81601485016020870161acaa565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061be23604083018561acce565b8281036020840152616577818561acce565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161be9c81600185016020870161acaa565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161bee281846020870161acaa565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161bf9581604b85016020870161acaa565b91909101604b0192915050565b600060ff821660ff810361bfb85761bfb861b5a3565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161c01f81602985016020870161acaa565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061657b608083018461acce565b60006020828403121561c08557600080fd5b815167ffffffffffffffff81111561c09c57600080fd5b82016060818503121561c0ae57600080fd5b61c0b661b88f565b81518060030b811461c0c757600080fd5b8152602082015167ffffffffffffffff81111561c0e357600080fd5b61c0ef8682850161b928565b602083015250604082015167ffffffffffffffff81111561c10f57600080fd5b61c11b8682850161b928565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161c18781602185016020870161acaa565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161c37381602185016020880161acaa565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161c3b081602e84016020880161acaa565b01602e01949350505050565b6000825161c3ce81846020870161acaa565b9190910192915050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161c01f81602985016020870161acaa565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161c49481602285016020870161acaa565b9190910160220192915050565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161c4d981600e85016020870161acaa565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161c5b781601885016020880161acaa565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161c5f481601c84016020880161acaa565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161c6fa81846020870161acaa565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b808202811582820484141761646d5761646d61b5a3565b6001815b600184111561c77b5780850481111561c75f5761c75f61b5a3565b600184161561c76d57908102905b60019390931c92800261c744565b935093915050565b60008261c7925750600161646d565b8161c79f5750600061646d565b816001811461c7b5576002811461c7bf5761c7db565b600191505061646d565b60ff84111561c7d05761c7d061b5a3565b50506001821b61646d565b5060208310610133831016604e8410600b841016171561c7fe575081810a61646d565b61c80b600019848461c740565b806000190482111561c81f5761c81f61b5a3565b029392505050565b600061657b838361c783565b8181036000831280158383131683831282161715619e4657619e4661b5a3565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161c88b81601c85016020870161acaa565b91909101601c0192915050565b6000600019820361c8ab5761c8ab61b5a3565b5060010190565b60008161c8c15761c8c161b5a3565b506000190190565b6000835161c8db81846020880161acaa565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161c91581600184016020880161acaa565b0160010194935050505056fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea2646970667358221220c069e4cb3e16bcddc5b07d6ba4019a062fbae92d695877ad19f66fc9ac6047fd64736f6c634300081a00336080604052348015600f57600080fd5b5061061b8061001f6000396000f3fe60806040526004361061002a5760003560e01c80635bcfd61614610033578063c9028a361461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e366004610151565b610073565b34801561005f57600080fd5b5061003161006e36600461020e565b6100ee565b6060811561008a576100878284018461027f565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610375565b6100c560408a0160208b016103e1565b896040013533866040516100de96959493929190610445565b60405180910390a1505050505050565b7fd75bb509c8f32a725aac99ac5c4541060dbfb889a3aca8314d6f00395618c4c48160405161011d9190610507565b60405180910390a150565b803573ffffffffffffffffffffffffffffffffffffffff8116811461014c57600080fd5b919050565b60008060008060006080868803121561016957600080fd5b853567ffffffffffffffff81111561018057600080fd5b86016060818903121561019257600080fd5b94506101a060208701610128565b935060408601359250606086013567ffffffffffffffff8111156101c357600080fd5b8601601f810188136101d457600080fd5b803567ffffffffffffffff8111156101eb57600080fd5b8860208284010111156101fd57600080fd5b959894975092955050506020019190565b60006020828403121561022057600080fd5b813567ffffffffffffffff81111561023757600080fd5b82016080818503121561024957600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561029157600080fd5b813567ffffffffffffffff8111156102a857600080fd5b8201601f810184136102b957600080fd5b803567ffffffffffffffff8111156102d3576102d3610250565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033f5761033f610250565b60405281815282820160200186101561035757600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126103aa57600080fd5b83018035915067ffffffffffffffff8211156103c557600080fd5b6020019150368190038213156103da57600080fd5b9250929050565b6000602082840312156103f357600080fd5b61024982610128565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60a08152600061045960a08301888a6103fc565b73ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff851660608401528281036080840152835180825260005b818110156104c3576020818701810151848301820152016104a7565b5060006020828401015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011683010192505050979650505050505050565b6020815273ffffffffffffffffffffffffffffffffffffffff61052983610128565b16602082015273ffffffffffffffffffffffffffffffffffffffff61055060208401610128565b166040820152600080604084013590508060608401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261059c57600080fd5b830160208101903567ffffffffffffffff8111156105b957600080fd5b8036038213156105c857600080fd5b6080808501526105dc60a0850182846103fc565b9594505050505056fea264697066735822122097b135946b5f8ffb91b019442462dc27864bb547c0a533c3cc3e01dd4abecc7964736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea2646970667358221220eaa287ea22d82335c1d97ef661cb17f1296902daa41cca34de107966248e954364736f6c634300081a003360c060405234801561001057600080fd5b5060405161207238038061207283398101604081905261002f916101f0565b6001600160a01b038216158061004c57506001600160a01b038116155b1561006a5760405163d92e233d60e01b815260040160405180910390fd5b60066100768982610342565b5060076100838882610342565b506008805460ff191660ff881617905560808590528360028111156100aa576100aa610400565b60a08160028111156100be576100be610400565b905250600192909255600080546001600160a01b039283166001600160a01b0319909116179055600880549190921661010002610100600160a81b0319909116179055506104169350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261013357600080fd5b81516001600160401b0381111561014c5761014c61010c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561017a5761017a61010c565b60405281815283820160200185101561019257600080fd5b60005b828110156101b157602081860181015183830182015201610195565b506000918101602001919091529392505050565b8051600381106101d457600080fd5b919050565b80516001600160a01b03811681146101d457600080fd5b600080600080600080600080610100898b03121561020d57600080fd5b88516001600160401b0381111561022357600080fd5b61022f8b828c01610122565b60208b015190995090506001600160401b0381111561024d57600080fd5b6102598b828c01610122565b975050604089015160ff8116811461027057600080fd5b60608a0151909650945061028660808a016101c5565b60a08a0151909450925061029c60c08a016101d9565b91506102aa60e08a016101d9565b90509295985092959890939650565b600181811c908216806102cd57607f821691505b6020821081036102ed57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561033d57806000526020600020601f840160051c8101602085101561031a5750805b601f840160051c820191505b8181101561033a5760008155600101610326565b50505b505050565b81516001600160401b0381111561035b5761035b61010c565b61036f8161036984546102b9565b846102f3565b6020601f8211600181146103a3576000831561038b5750848201515b600019600385901b1c1916600184901b17845561033a565b600084815260208120601f198516915b828110156103d357878501518255602094850194600190920191016103b3565b50848210156103f15786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a051611c1b61045760003960006103440152600081816102f001528181610bdc01528181610ce201528181610efe01526110040152611c1b6000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c806395d89b41116100f9578063ccc7759911610097578063eddeb12311610071578063eddeb12314610461578063f2441b3214610474578063f687d12a14610494578063fc5fecd5146104a757600080fd5b8063ccc77599146103d4578063d9eeebed146103e7578063dd62ed3e1461041b57600080fd5b8063b84c8246116100d3578063b84c824614610386578063c47f00271461039b578063c7012626146103ae578063c835d7cc146103c157600080fd5b806395d89b4114610337578063a3413d031461033f578063a9059cbb1461037357600080fd5b80633ce4a5bc116101665780634d8943bb116101405780634d8943bb146102ac57806370a08231146102b557806385e1f4d0146102eb5780638b851b951461031257600080fd5b80633ce4a5bc1461024657806342966c681461028657806347e7ef241461029957600080fd5b806318160ddd1161019757806318160ddd1461021657806323b872dd1461021e578063313ce5671461023157600080fd5b806306fdde03146101be578063091d2788146101dc578063095ea7b3146101f3575b600080fd5b6101c66104ba565b6040516101d39190611648565b60405180910390f35b6101e560015481565b6040519081526020016101d3565b610206610201366004611687565b61054c565b60405190151581526020016101d3565b6005546101e5565b61020661022c3660046116b3565b610563565b60085460405160ff90911681526020016101d3565b61026173735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d3565b6102066102943660046116f4565b6105fa565b6102066102a7366004611687565b61060e565b6101e560025481565b6101e56102c336600461170d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6101e57f000000000000000000000000000000000000000000000000000000000000000081565b60085461026190610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6101c6610767565b6103667f000000000000000000000000000000000000000000000000000000000000000081565b6040516101d3919061172a565b610206610381366004611687565b610776565b610399610394366004611832565b610783565b005b6103996103a9366004611832565b6107e0565b6102066103bc366004611883565b610839565b6103996103cf36600461170d565b610988565b6103996103e236600461170d565b610a9c565b6103ef610bb0565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101d3565b6101e56104293660046118dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205490565b61039961046f3660046116f4565b610dce565b6000546102619073ffffffffffffffffffffffffffffffffffffffff1681565b6103996104a23660046116f4565b610e50565b6103ef6104b53660046116f4565b610ed2565b6060600680546104c990611915565b80601f01602080910402602001604051908101604052809291908181526020018280546104f590611915565b80156105425780601f1061051757610100808354040283529160200191610542565b820191906000526020600020905b81548152906001019060200180831161052557829003601f168201915b5050505050905090565b60006105593384846110ee565b5060015b92915050565b60006105708484846111f7565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460209081526040808320338452909152902054828110156105db576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105ef85336105ea8685611997565b6110ee565b506001949350505050565b600061060633836113b2565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab1480159061064c575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156106755750600854610100900473ffffffffffffffffffffffffffffffffffffffff163314155b156106ac576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106b683836114f4565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526107569186906119aa565b60405180910390a250600192915050565b6060600780546104c990611915565b60006105593384846111f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab146107d0576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60076107dc8282611a1b565b5050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461082d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60066107dc8282611a1b565b6000806000610846610bb0565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156108d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fc9190611b34565b610932576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61093c33856113b2565b60025460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161097591899189918791611b56565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146109d5576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a22576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610ae9576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610b36576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c679190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610cb6576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d699190611ba2565b905080600003610da5576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060025460015483610db89190611bbb565b610dc29190611bd2565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e1b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610a91565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e9d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610f65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f899190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610fd8576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015611067573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108b9190611ba2565b9050806000036110c7576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000906110d78784611bbb565b6110e19190611bd2565b9296929550919350505050565b73ffffffffffffffffffffffffffffffffffffffff831661113b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611188576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611244576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611291576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040902054818110156112f1576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112fb8282611997565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260036020526040808220939093559085168152908120805484929061133e908490611bd2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113a491815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff82166113ff576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260409020548181101561145f576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114698282611997565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260036020526040812091909155600580548492906114a4908490611997565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016111ea565b73ffffffffffffffffffffffffffffffffffffffff8216611541576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008282546115539190611bd2565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805483929061158d908490611bd2565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561160a576020818501810151868301820152016115ee565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061165b60208301846115e4565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461168457600080fd5b50565b6000806040838503121561169a57600080fd5b82356116a581611662565b946020939093013593505050565b6000806000606084860312156116c857600080fd5b83356116d381611662565b925060208401356116e381611662565b929592945050506040919091013590565b60006020828403121561170657600080fd5b5035919050565b60006020828403121561171f57600080fd5b813561165b81611662565b6020810160038310611765577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff8411156117b5576117b561176b565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff821117156118025761180261176b565b60405283815290508082840185101561181a57600080fd5b83836020830137600060208583010152509392505050565b60006020828403121561184457600080fd5b813567ffffffffffffffff81111561185b57600080fd5b8201601f8101841361186c57600080fd5b61187b8482356020840161179a565b949350505050565b6000806040838503121561189657600080fd5b823567ffffffffffffffff8111156118ad57600080fd5b8301601f810185136118be57600080fd5b6118cd8582356020840161179a565b95602094909401359450505050565b600080604083850312156118ef57600080fd5b82356118fa81611662565b9150602083013561190a81611662565b809150509250929050565b600181811c9082168061192957607f821691505b602082108103611962577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561055d5761055d611968565b6040815260006119bd60408301856115e4565b90508260208301529392505050565b601f821115611a1657806000526020600020601f840160051c810160208510156119f35750805b601f840160051c820191505b81811015611a1357600081556001016119ff565b50505b505050565b815167ffffffffffffffff811115611a3557611a3561176b565b611a4981611a438454611915565b846119cc565b6020601f821160018114611a9b5760008315611a655750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611a13565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015611ae95787850151825560209485019460019092019101611ac9565b5084821015611b2557868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b600060208284031215611b4657600080fd5b8151801515811461165b57600080fd5b608081526000611b6960808301876115e4565b6020830195909552506040810192909252606090910152919050565b600060208284031215611b9757600080fd5b815161165b81611662565b600060208284031215611bb457600080fd5b5051919050565b808202811582820484141761055d5761055d611968565b8082018082111561055d5761055d61196856fea26469706673582212202a06c5d72036d88c206ff2bfdd016b3ce8555bc0090e8bb5487bc61ea043732b64736f6c634300081a0033a26469706673582212201d7c626a54787a1048f359859cd423bf772a64bc36419be67c1ddcdd4cf3e71764736f6c634300081a0033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5062010bd9806200003e6000396000f3fe608060405234801561001057600080fd5b506004361061032b5760003560e01c80636dfcbc50116101b2578063bed3e813116100f9578063e51c6388116100a2578063eb7a2fac1161007c578063eb7a2fac146104ec578063fa7626d4146104f4578063fbc611c814610501578063fdad0ad01461050957600080fd5b8063e51c6388146104dc578063e804a4061461035a578063ea37902f146104e457600080fd5b8063dc749dd7116100d3578063dc749dd7146104c4578063dde7e967146104cc578063e20c9f71146104d457600080fd5b8063bed3e813146104ac578063c946d7c0146104b4578063ceccfab3146104bc57600080fd5b8063b0464fdc1161015b578063ba414fa611610135578063ba414fa614610484578063ba800c911461049c578063ba9adeef146104a457600080fd5b8063b0464fdc1461046c578063b51ac07114610474578063b5508aa91461047c57600080fd5b806385226c811161018c57806385226c811461043a578063916a17c61461044f578063a721b2d31461046457600080fd5b80636dfcbc50146104225780637ae697301461042a57806383ababa91461043257600080fd5b80633e5e3c23116102765780635efe72a91161021f57806364002a1f116101f957806364002a1f146103fd57806366d9a9a0146104055780636d6ce0d01461041a57600080fd5b80635efe72a9146103e55780636198fb19146103ed5780636221b509146103f557600080fd5b8063431814371161025057806343181437146103cd5780634ffab9de146103d55780635d72228f146103dd57600080fd5b80633e5e3c23146103b55780633f7286f4146103bd57806342752d41146103c557600080fd5b80631ed7831c116102d8578063264b524c116102b2578063264b524c146103905780632ade38801461039857806336431b3f146103ad57600080fd5b80631ed7831c1461036257806320dee15f1461038057806321aeb18c1461038857600080fd5b80631475976611610309578063147597661461034a5780631b9641bf146103525780631e63d2b91461035a57600080fd5b80630a9254e4146103305780630b5ad28d1461033a5780631238212c14610342575b600080fd5b610338610511565b005b6103386110a6565b610338611259565b610338611625565b610338611853565b6103386119ca565b61036a611de4565b604051610377919061ac5e565b60405180910390f35b610338611e46565b610338612234565b610338612354565b6103a0612548565b604051610377919061acfa565b61033861268a565b61036a6127f1565b61036a612851565b6103386128b1565b610338612a03565b610338612b36565b610338612dba565b61033861310c565b610338613289565b61033861344f565b61033861363d565b61040d613819565b604051610377919061ae60565b61033861399b565b610338613ca0565b610338613eb9565b610338614087565b61044261416b565b604051610377919061aefe565b61045761423b565b604051610377919061af75565b610338614336565b61045761454f565b61033861464a565b610442614749565b61048c614819565b6040519015158152602001610377565b6103386148ed565b610338614a03565b610338614b89565b610338614d02565b610338614f86565b6103386152d2565b610338615375565b61036a6157b4565b610338615814565b610338615cbf565b610338615e52565b601f5461048c9060ff1681565b610338615f51565b6103386162de565b602580547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602680549091166112341790556040516105579061ab6d565b604051809103906000f080158015610573573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600f81527f476174657761795a45564d2e736f6c000000000000000000000000000000000060208201526025549151602481019390935292166044820152610657919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc95500000000000000000000000000000000000000000000000000000000179052616454565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b039384168102919091179182905560208054919092049092167fffffffffffffffffffffffff000000000000000000000000000000000000000090921682178155604080517f2722feee0000000000000000000000000000000000000000000000000000000081529051632722feee926004808401939192918290030181865afa158015610719573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073d919061b00c565b602780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516107819061ab7b565b604051809103906000f08015801561079d573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161781556027546040517f06447d5600000000000000000000000000000000000000000000000000000000815292166004830152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d569101600060405180830381600087803b15801561083957600080fd5b505af115801561084d573d6000803e3d6000fd5b5050505060008060006040516108629061ab89565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801561089e573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556020546040516012936001938493600093919216906108f49061ab97565b6109039695949392919061b035565b604051809103906000f08015801561091f573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556023546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b1580156109b657600080fd5b505af11580156109ca573d6000803e3d6000fd5b50506023546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b158015610a3457600080fd5b505af1158015610a48573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610ac857600080fd5b505af1158015610adc573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610b3157600080fd5b505af1158015610b45573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610bb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bdd919061b12a565b506021546025546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116906347e7ef24906044016020604051808303816000875af1158015610c4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c72919061b12a565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610cd157600080fd5b505af1158015610ce5573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610d5b57600080fd5b505af1158015610d6f573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116925063095ea7b391506044016020604051808303816000875af1158015610de3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e07919061b12a565b50602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610e5957600080fd5b505af1158015610e6d573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610ee1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f05919061b12a565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610f6457600080fd5b505af1158015610f78573d6000803e3d6000fd5b50506040805160a08101825261032180825260016020808401918252838501928352845190810190945260008085526060840185905260808401528251602880549251151574010000000000000000000000000000000000000000027fffffffffffffffffffffff0000000000000000000000000000000000000000009093166001600160a01b0392831617929092178255915160298054919093167fffffffffffffffffffffffff000000000000000000000000000000000000000091909116179091559093509150602a9061104f908261b20f565b50608091909101516003909101556040805180820190915260018082526020909101819052602c819055602d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b1790526000602c5551630618f58760e51b81527f60ee1247000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015b600060405180830381600087803b15801561117457600080fd5b505af1158015611188573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637b15118b91506034015b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168352611224926001916001600160a01b0316908790602c9060289060040161b3bd565b600060405180830381600087803b15801561123e57600080fd5b505af1158015611252573d6000803e3d6000fd5b5050505050565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa1580156112aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ce919061b42f565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561134357600080fd5b505af1158015611357573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af11580156113c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ed919061b12a565b506026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905280517ff48448140000000000000000000000000000000000000000000000000000000081529051919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f48448149160048082019260009290919082900301818387803b1580156114b057600080fd5b505af11580156114c4573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637b15118b915060340160408051601f198184030181526021548383018352600184526000602085015291517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815261156e93919289926001600160a01b039091169188919060289060040161b448565b600060405180830381600087803b15801561158857600080fd5b505af115801561159c573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156115ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611613919061b42f565b905061161f8382616473565b50505050565b6026546040516001600160a01b03909116602482015260019060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b179052602554602654925193945060019384936001600160a01b03928316937f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c936116e7939216910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f198184030181529082905260225461171f926001600160a01b0390911690899060009081908b90602c9060289061b49c565b60405180910390a3604051630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015b600060405180830381600087803b15801561179457600080fd5b505af11580156117a8573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250632810ae639150603401604051602081830303815290604052858486602c60286040518763ffffffff1660e01b815260040161181c9695949392919061b510565b600060405180830381600087803b15801561183657600080fd5b505af115801561184a573d6000803e3d6000fd5b50505050505050565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905251630618f58760e51b81527f5d67094f000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561191b57600080fd5b505af115801561192f573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637b15118b915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168352611224926000916001600160a01b0316908790602c9060289060040161b3bd565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611a1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3f919061b42f565b6026546040516001600160a01b03909116602482015290915060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b1790525490517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482018190526001600160a01b039092166084820152919250908190737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611b3157600080fd5b505af1158015611b45573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff19166020820152600093506001600160a01b0390911691507f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c9060340160408051601f198184030181528282526021547f4d8943bb000000000000000000000000000000000000000000000000000000008452915190926001600160a01b03909216918b9189918491634d8943bb916004808201926020929091908290030181865afa158015611c17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c3b919061b42f565b6040805180820182528a8152600160208201529051611c639695949392918d9160289061b541565b60405180910390a3602080546026546040516001600160a01b0392831693637b15118b93611cab9316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815260215483830183528684526001602085015291517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b168152611d179391928b926001600160a01b03909116918a919060289060040161b448565b600060405180830381600087803b158015611d3157600080fd5b505af1158015611d45573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611d98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbc919061b42f565b9050611ddc83611dcc888861b5d2565b611dd6919061b5d2565b82616473565b505050505050565b60606016805480602002602001604051908101604052809291908181526020018280548015611e3c57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611e1e575b5050505050905090565b601f54604080518082018252601a81527f476174657761795a45564d55706772616465546573742e736f6c000000000000602080830191909152825190810190925260008252602554611eab936001600160a01b0361010090910481169391166164f2565b601f546021546025546040516370a0823160e01b81526001600160a01b03918216600482015261010090930481169260019260009216906370a0823190602401602060405180830381865afa158015611f08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f2c919061b42f565b6040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b0385166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611fb957600080fd5b505af1158015611fcd573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff19166020820152600093506001600160a01b0390911691507f5d7cd8ae449a6b25de63f10534ddd17d8dd3e79c7aa5f28964b7a7c760258d979060340160408051601f198184030181528282526021547f4d8943bb000000000000000000000000000000000000000000000000000000008452915190926001600160a01b039092169188916000918491634d8943bb916004808201926020929091908290030181865afa1580156120a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c4919061b42f565b604080518082018252600081526001602082015290516120ec9695949392919060289061b5e5565b60405180910390a360265460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b03841690637c0dcb5f9060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526121809287916001600160a01b03169060289060040161b667565b600060405180830381600087803b15801561219a57600080fd5b505af11580156121ae573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015612201573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612225919061b42f565b905061161f611dd6848461b5d2565b604051630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156122a057600080fd5b505af11580156122b4573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b031692506397a1cef191506034015b6040516020818303038152906040526000600160286040518563ffffffff1660e01b8152600401612326949392919061b6a1565b600060405180830381600087803b15801561234057600080fd5b505af115801561161f573d6000803e3d6000fd5b60208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290516001600160a01b03909216926397d340f5926004808401938290030181865afa1580156123b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d6919061b42f565b6123e190600161b6d2565b67ffffffffffffffff8111156123f9576123f961b14c565b6040519080825280601f01601f191660200182016040528015612423576020820181803683370190505b50602a90612431908261b20f565b50604051630618f58760e51b81527f9507fb3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561249e57600080fd5b505af11580156124b2573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637c0dcb5f915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168352612326926002916001600160a01b03169060289060040161b667565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561268157600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561266a5783829060005260206000200180546125dd9061b17b565b80601f01602080910402602001604051908101604052809291908181526020018280546126099061b17b565b80156126565780601f1061262b57610100808354040283529160200191612656565b820191906000526020600020905b81548152906001019060200180831161263957829003601f168201915b5050505050815260200190600101906125be565b50505050815250508152602001906001019061256c565b50505050905090565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905251630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561275257600080fd5b505af1158015612766573d6000803e3d6000fd5b5050602080546040516001600160a01b039091169350637b15118b9250015b60408051601f19818403018152602154838301835260018085526000602086015292517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b168152611224949293926001600160a01b0390921691889160289060040161b448565b60606018805480602002602001604051908101604052809291908181526020018280548015611e3c576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611e1e575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015611e3c576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611e1e575050505050905090565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905251630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561297957600080fd5b505af115801561298d573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250632810ae6391506034016040516020818303038152906040526000600185602c60286040518763ffffffff1660e01b81526004016112249695949392919061b510565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905251630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015612acb57600080fd5b505af1158015612adf573d6000803e3d6000fd5b5050602080546040516001600160a01b039091169350632810ae639250015b60405160208183030381529060405260018085602c60286040518763ffffffff1660e01b81526004016112249695949392919061b510565b60208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290516000936002936001600160a01b0316926397d340f592600480830193928290030181865afa158015612b99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bbd919061b42f565b612bc7919061b6e5565b67ffffffffffffffff811115612bdf57612bdf61b14c565b6040519080825280601f01601f191660200182016040528015612c09576020820181803683370190505b5060208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290519394506002936001600160a01b03909216926397d340f5926004808401938290030181865afa158015612c6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c92919061b42f565b612c9c919061b6e5565b612ca790600161b6d2565b67ffffffffffffffff811115612cbf57612cbf61b14c565b6040519080825280601f01601f191660200182016040528015612ce9576020820181803683370190505b50602a90612cf7908261b20f565b50604051630618f58760e51b81527f9507fb3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015612d6457600080fd5b505af1158015612d78573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637b15118b9150603401612785565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015612e0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e2f919061b42f565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612ea457600080fd5b505af1158015612eb8573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015612f2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f4e919061b12a565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612fad57600080fd5b505af1158015612fc1573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637c0dcb5f915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526130569287916001600160a01b03169060289060040161b667565b600060405180830381600087803b15801561307057600080fd5b505af1158015613084573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156130d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130fb919061b42f565b90506131078282616473565b505050565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b1790526000602c5551630618f58760e51b81527f60ee1247000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015b600060405180830381600087803b1580156131da57600080fd5b505af11580156131ee573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b031692506306cb898391506034015b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168352611224926001600160a01b03909116908690602c9060289060040161b720565b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b1790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561337357600080fd5b505af1158015613387573d6000803e3d6000fd5b505060215460255460265460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039283169450911691507f306ee13f48319a123b222c69908e44dcf91abffc20cacc502e3cf5a4ff23e0e49060340160408051601f1981840301815290829052613407918690602c9060289061b78a565b60405180910390a3602080546026546040516001600160a01b03928316936306cb89839361322c9316910160609190911b6bffffffffffffffffffffffff1916815260140190565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa1580156134a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134c4919061b42f565b6022546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526101236004820152602481018390529192506001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015613531573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613555919061b12a565b506000600190507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156135ba57600080fd5b505af11580156135ce573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b031692506397a1cef19150603401604051602081830303815290604052858460286040518563ffffffff1660e01b815260040161181c949392919061b6a1565b6026546040516001600160a01b03909116602482015260019060009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905260255490517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561371257600080fd5b505af1158015613726573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015613798573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137bc919061b12a565b506000602c55604051630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e09060240161177a565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561268157838290600052602060002090600202016040518060400160405290816000820180546138709061b17b565b80601f016020809104026020016040519081016040528092919081815260200182805461389c9061b17b565b80156138e95780601f106138be576101008083540402835291602001916138e9565b820191906000526020600020905b8154815290600101906020018083116138cc57829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561398357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116139305790505b5050505050815250508152602001906001019061383d565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa1580156139ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a10919061b42f565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613a8557600080fd5b505af1158015613a99573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015613b0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b2f919061b12a565b506026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905280517ff48448140000000000000000000000000000000000000000000000000000000081529051919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f48448149160048082019260009290919082900301818387803b158015613bf257600080fd5b505af1158015613c06573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637b15118b915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261156e9288916001600160a01b0316908790602c9060289060040161b3bd565b60208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290516000936002936001600160a01b0316926397d340f592600480830193928290030181865afa158015613d03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d27919061b42f565b613d31919061b6e5565b67ffffffffffffffff811115613d4957613d4961b14c565b6040519080825280601f01601f191660200182016040528015613d73576020820181803683370190505b5060208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290519394506002936001600160a01b03909216926397d340f5926004808401938290030181865afa158015613dd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dfc919061b42f565b613e06919061b6e5565b613e1190600161b6d2565b67ffffffffffffffff811115613e2957613e2961b14c565b6040519080825280601f01601f191660200182016040528015613e53576020820181803683370190505b50602a90613e61908261b20f565b50604051630618f58760e51b81527f9507fb3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024016131c0565b60208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290516001600160a01b03909216926397d340f5926004808401938290030181865afa158015613f17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f3b919061b42f565b613f4690600161b6d2565b67ffffffffffffffff811115613f5e57613f5e61b14c565b6040519080825280601f01601f191660200182016040528015613f88576020820181803683370190505b50602a90613f96908261b20f565b50604051630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561400357600080fd5b505af1158015614017573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b031692506397a1cef1915060340160405160208183030381529060405260018060286040518563ffffffff1660e01b8152600401612326949392919061b6a1565b604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156140f357600080fd5b505af1158015614107573d6000803e3d6000fd5b5050602080546040805160008152928301908190526021547f7c0dcb5f000000000000000000000000000000000000000000000000000000009091526001600160a01b039182169450637c0dcb5f935061232692916001911660286024840161b667565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156126815783829060005260206000200180546141ae9061b17b565b80601f01602080910402602001604051908101604052809291908181526020018280546141da9061b17b565b80156142275780601f106141fc57610100808354040283529160200191614227565b820191906000526020600020905b81548152906001019060200180831161420a57829003601f168201915b50505050508152602001906001019061418f565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156126815760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561431e57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116142cb5790505b5050505050815250508152602001906001019061425f565b60208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290516000936002936001600160a01b0316926397d340f592600480830193928290030181865afa158015614399573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143bd919061b42f565b6143c7919061b6e5565b67ffffffffffffffff8111156143df576143df61b14c565b6040519080825280601f01601f191660200182016040528015614409576020820181803683370190505b5060208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290519394506002936001600160a01b03909216926397d340f5926004808401938290030181865afa15801561446e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614492919061b42f565b61449c919061b6e5565b6144a790600161b6d2565b67ffffffffffffffff8111156144bf576144bf61b14c565b6040519080825280601f01601f1916602001820160405280156144e9576020820181803683370190505b50602a906144f7908261b20f565b50604051630618f58760e51b81527f9507fb3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e09060240161115a565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156126815760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561463257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116145df5790505b50505050508152505081526020019060010190614573565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905251630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561471257600080fd5b505af1158015614726573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911693506306cb898392500161322c565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101561268157838290600052602060002001805461478c9061b17b565b80601f01602080910402602001604051908101604052809291908181526020018280546147b89061b17b565b80156148055780601f106147da57610100808354040283529160200191614805565b820191906000526020600020905b8154815290600101906020018083116147e857829003601f168201915b50505050508152602001906001019061476d565b60085460009060ff1615614831575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa1580156148c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148e6919061b42f565b1415905090565b604051630618f58760e51b81527f5d67094f000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561495957600080fd5b505af115801561496d573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637c0dcb5f915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168352612326926000916001600160a01b03169060289060040161b667565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905251630618f58760e51b81527f5d67094f000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015614acb57600080fd5b505af1158015614adf573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637b15118b915060340160408051601f1981840301815260215483830183526001845260006020850181905292517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b168152611224949293926001600160a01b0390921691889160289060040161b448565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905251630618f58760e51b81527f60ee1247000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015614c5157600080fd5b505af1158015614c65573d6000803e3d6000fd5b5050602080546026546040805160609290921b6bffffffffffffffffffffffff1916938201939093528251808203601401815260215460748301855260006034840181815260549094015293517f7b15118b0000000000000000000000000000000000000000000000000000000081526001600160a01b039384169650637b15118b9550611224949193600193921691889160289060040161b448565b60208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290516000936002936001600160a01b0316926397d340f592600480830193928290030181865afa158015614d65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614d89919061b42f565b614d93919061b6e5565b67ffffffffffffffff811115614dab57614dab61b14c565b6040519080825280601f01601f191660200182016040528015614dd5576020820181803683370190505b5060208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290519394506002936001600160a01b03909216926397d340f5926004808401938290030181865afa158015614e3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614e5e919061b42f565b614e68919061b6e5565b614e7390600161b6d2565b67ffffffffffffffff811115614e8b57614e8b61b14c565b6040519080825280601f01601f191660200182016040528015614eb5576020820181803683370190505b50602a90614ec3908261b20f565b50604051630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015614f3057600080fd5b505af1158015614f44573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250632810ae639150603401612afe565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015614fd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614ffb919061b42f565b6021546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526101236004820152602481018390529192506001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015615068573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061508c919061b12a565b506027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156150ff57600080fd5b505af1158015615113573d6000803e3d6000fd5b50506021546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a60048201526001600160a01b03909116925063f687d12a9150602401600060405180830381600087803b15801561517657600080fd5b505af115801561518a573d6000803e3d6000fd5b5050604051630618f58760e51b81527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b1580156151fb57600080fd5b505af115801561520f573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637c0dcb5f915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526152a49287916001600160a01b03169060289060040161b667565b600060405180830381600087803b1580156152be57600080fd5b505af1158015611ddc573d6000803e3d6000fd5b604051630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561533e57600080fd5b505af1158015615352573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911693506397a1cef19250016122f2565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa1580156153c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906153ea919061b42f565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa15801561543c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615460919061b42f565b6027546025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152929350163190600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156154de57600080fd5b505af11580156154f2573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015615564573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615588919061b12a565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156155e757600080fd5b505af11580156155fb573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b031692506397a1cef19150603401604051602081830303815290604052878460286040518563ffffffff1660e01b815260040161566a949392919061b6a1565b600060405180830381600087803b15801561568457600080fd5b505af1158015615698573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156156eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061570f919061b42f565b905061571b8582616473565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801561576c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615790919061b42f565b905061579c8582616473565b60275461184a9085906001600160a01b031631616473565b60606015805480602002602001604051908101604052809291908181526020018280548015611e3c576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611e1e575050505050905090565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015615865573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615889919061b42f565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa1580156158db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906158ff919061b42f565b6027546026546040516001600160a01b03918216602482015292935016319060009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905260255490517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156159da57600080fd5b505af11580156159ee573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015615a60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615a84919061b12a565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015615ae357600080fd5b505af1158015615af7573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250632810ae639150603401604051602081830303815290604052888486602c60286040518763ffffffff1660e01b8152600401615b6b9695949392919061b510565b600060405180830381600087803b158015615b8557600080fd5b505af1158015615b99573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015615bec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615c10919061b42f565b9050615c1c8682616473565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015615c6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615c91919061b42f565b9050615c9d8682616473565b602754615cb59086906001600160a01b031631616473565b5050505050505050565b60255460265460405160609190911b6bffffffffffffffffffffffff19166020820152600191829182916001600160a01b0316907f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c9060340160408051601f1981840301815260225483830183526000808552600160208601529251615d5b9492936001600160a01b03909216928a929182919060289061b5e5565b60405180910390a3604051630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015615dcf57600080fd5b505af1158015615de3573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b031692506397a1cef19150603401604051602081830303815290604052848460286040518563ffffffff1660e01b81526004016152a4949392919061b6a1565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905251630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015615f1a57600080fd5b505af1158015615f2e573d6000803e3d6000fd5b5050602080546040516001600160a01b039091169350637b15118b9250016111c6565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015615fa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615fc6919061b42f565b6020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561605757600080fd5b505af115801561606b573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff19166020820152600093506001600160a01b0390911691507f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c9060340160408051601f198184030181528282526021547f4d8943bb000000000000000000000000000000000000000000000000000000008452915190926001600160a01b039092169188916000918491634d8943bb916004808201926020929091908290030181865afa15801561613e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616162919061b42f565b6040805180820182526000815260016020820152905161618a9695949392919060289061b5e5565b60405180910390a3602080546026546040516001600160a01b0392831693637c0dcb5f936161d29316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261622a9287916001600160a01b03169060289060040161b667565b600060405180830381600087803b15801561624457600080fd5b505af1158015616258573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156162ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906162cf919061b42f565b9050613107611dd6848461b5d2565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260029260009216906370a0823190602401602060405180830381865afa15801561632f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616353919061b42f565b6021549091506001600160a01b031663a9059cbb61012361637560018561b5d2565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156163d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906163fc919061b12a565b50604051630618f58760e51b81527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024016151e1565b600061645e61aba5565b616469848483616507565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b1580156164de57600080fd5b505afa158015611ddc573d6000803e3d6000fd5b6164fa61aba5565b6112528585858486616582565b6000806165148584616682565b90506165776040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f7879000000815250828660405160200161656292919061b7d9565b6040516020818303038152906040528561668e565b9150505b9392505050565b6040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201528190737109709ecfa91a80626ff3989d68f67f5b1dd12d9081906306447d5690602401600060405180830381600087803b1580156165f457600080fd5b505af1925050508015616605575060015b61661a57616615878787876166bc565b61184a565b616626878787876166bc565b806001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561666157600080fd5b505af1158015616675573d6000803e3d6000fd5b5050505050505050505050565b600061657b83836166d5565b60c081015151600090156166b2576166ab84848460c001516166f0565b905061657b565b6166ab8484616896565b60006166c88483616981565b905061125285828561698d565b60006166e18383616d57565b61657b8383602001518461668e565b6000806166fb616d67565b905060006167098683616e3a565b9050600061672082606001518360200151856172e0565b90506000616730838389896174f2565b9050600061673d8261836f565b602081015181519192509060030b156167b05789826040015160405160200161676792919061b7fb565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526167a79160040161b87c565b60405180910390fd5b60006167f36040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a20000000000000000000000081525083600161853e565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d9061684690849060040161b87c565b602060405180830381865afa158015616863573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616887919061b00c565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc925906168eb90879060040161b87c565b600060405180830381865afa158015616908573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616930919081019061b948565b9050600061695e828560405160200161694a92919061b97d565b60405160208183030381529060405261873e565b90506001600160a01b03811661646957848460405160200161676792919061b9ac565b60006166e18383618751565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201527fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61036024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90600090829063667f9d7090604401602060405180830381865afa158015616a29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616a4d919061b42f565b905080616bf4576000616a5f8661875d565b604080518082018252600581527f352e302e3000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150616aea905b60408051808201825260008082526020918201528151808301909252845182528085019082015290618855565b80616af6575060008451115b15616b79576040517f4f1ef2860000000000000000000000000000000000000000000000000000000081526001600160a01b03871690634f1ef28690616b42908890889060040161b7d9565b600060405180830381600087803b158015616b5c57600080fd5b505af1158015616b70573d6000803e3d6000fd5b50505050616bee565b6040517f3659cfe60000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152871690633659cfe690602401600060405180830381600087803b158015616bd557600080fd5b505af1158015616be9573d6000803e3d6000fd5b505050505b50611252565b806000616c008261875d565b604080518082018252600581527f352e302e3000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150616c6290616abd565b80616c6e575060008551115b15616cf3576040517f9623609d0000000000000000000000000000000000000000000000000000000081526001600160a01b03831690639623609d90616cbc908a908a908a9060040161ba57565b600060405180830381600087803b158015616cd657600080fd5b505af1158015616cea573d6000803e3d6000fd5b5050505061184a565b6040517f99a88ec40000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015287811660248301528316906399a88ec490604401600060405180830381600087803b15801561666157600080fd5b616d6382826000618869565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90616dee90849060040161ba88565b600060405180830381865afa158015616e0b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616e33919081019061bacf565b9250505090565b616e6c6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050616eb76040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b616ec08561896c565b60208201526000616ed086618d51565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015616f12573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616f3a919081019061bacf565b86838560200151604051602001616f54949392919061bb18565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190616fac90859060040161b87c565b600060405180830381865afa158015616fc9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616ff1919081019061bacf565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f69061703990849060040161bc1c565b602060405180830381865afa158015617056573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061707a919061b12a565b61708f5781604051602001616767919061bc6e565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906170d490849060040161bd00565b600060405180830381865afa1580156170f1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617119919081019061bacf565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f69061716090849060040161bd52565b602060405180830381865afa15801561717d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906171a1919061b12a565b15617236576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906171eb90849060040161bd52565b600060405180830381865afa158015617208573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617230919081019061bacf565b60408501525b846001600160a01b03166349c4fac882866000015160405160200161725b919061bda4565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161728792919061be10565b600060405180830381865afa1580156172a4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526172cc919081019061bacf565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816172fc5790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061735c5761735c61be35565b60200260200101819052506040518060400160405280600381526020017f2d726c0000000000000000000000000000000000000000000000000000000000815250816001815181106173b0576173b061be35565b6020026020010181905250846040516020016173cc919061be64565b604051602081830303815290604052816002815181106173ee576173ee61be35565b60200260200101819052508260405160200161740a919061bed0565b6040516020818303038152906040528160038151811061742c5761742c61be35565b602002602001018190525060006174428261836f565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506174d39060408051808201825260008082526020918201528151808301909252845182528085019082015290618fd4565b6174e85785604051602001616767919061bf11565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015617542565b511590565b6176b6578260200151156175fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a4016167a7565b8260c00151156176b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a4016167a7565b6040805160ff8082526120008201909252600091816020015b60608152602001906001900390816176cf57905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061772a9061bfa2565b935060ff168151811061773f5761773f61be35565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001617790919061bfc1565b6040516020818303038152906040528282806177ab9061bfa2565b935060ff16815181106177c0576177c061be35565b60200260200101819052506040518060400160405280600681526020017f6465706c6f79000000000000000000000000000000000000000000000000000081525082828061780d9061bfa2565b935060ff16815181106178225761782261be35565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d6500000000000000000000000000000000000081525082828061786f9061bfa2565b935060ff16815181106178845761788461be35565b602002602001018190525087602001518282806178a09061bfa2565b935060ff16815181106178b5576178b561be35565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806179029061bfa2565b935060ff16815181106179175761791761be35565b60209081029190910101528751828261792f8161bfa2565b935060ff16815181106179445761794461be35565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806179919061bfa2565b935060ff16815181106179a6576179a661be35565b60200260200101819052506179ba46619035565b82826179c58161bfa2565b935060ff16815181106179da576179da61be35565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280617a279061bfa2565b935060ff1681518110617a3c57617a3c61be35565b602002602001018190525086828280617a549061bfa2565b935060ff1681518110617a6957617a6961be35565b6020908102919091010152855115617b905760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f6465000000000000000000000060208201528282617aba8161bfa2565b935060ff1681518110617acf57617acf61be35565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90617b1f90899060040161b87c565b600060405180830381865afa158015617b3c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617b64919081019061bacf565b8282617b6f8161bfa2565b935060ff1681518110617b8457617b8461be35565b60200260200101819052505b846020015115617c605760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282617bd98161bfa2565b935060ff1681518110617bee57617bee61be35565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280617c3b9061bfa2565b935060ff1681518110617c5057617c5061be35565b6020026020010181905250617e27565b617c9861753d8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b617d2b5760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282617cdb8161bfa2565b935060ff1681518110617cf057617cf061be35565b60200260200101819052508460a00151604051602001617d10919061be64565b604051602081830303815290604052828280617c3b9061bfa2565b8460c00151158015617d6e575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152617d6c90511590565b155b15617e275760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282617db28161bfa2565b935060ff1681518110617dc757617dc761be35565b6020026020010181905250617ddb886190d5565b604051602001617deb919061be64565b604051602081830303815290604052828280617e069061bfa2565b935060ff1681518110617e1b57617e1b61be35565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152617e5b90511590565b617ef05760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282617e9e8161bfa2565b935060ff1681518110617eb357617eb361be35565b60200260200101819052508460400151828280617ecf9061bfa2565b935060ff1681518110617ee457617ee461be35565b60200260200101819052505b6060850151156180115760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282617f398161bfa2565b935060ff1681518110617f4e57617f4e61be35565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015617fbd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617fe5919081019061bacf565b8282617ff08161bfa2565b935060ff16815181106180055761800561be35565b60200260200101819052505b60e085015151156180b85760408051808201909152600a81527f2d2d6761734c696d6974000000000000000000000000000000000000000000006020820152828261805b8161bfa2565b935060ff16815181106180705761807061be35565b602002602001018190525061808c8560e0015160000151619035565b82826180978161bfa2565b935060ff16815181106180ac576180ac61be35565b60200260200101819052505b60e085015160200151156181625760408051808201909152600a81527f2d2d676173507269636500000000000000000000000000000000000000000000602082015282826181058161bfa2565b935060ff168151811061811a5761811a61be35565b60200260200101819052506181368560e0015160200151619035565b82826181418161bfa2565b935060ff16815181106181565761815661be35565b60200260200101819052505b60e0850151604001511561820c5760408051808201909152600e81527f2d2d6d6178466565506572476173000000000000000000000000000000000000602082015282826181af8161bfa2565b935060ff16815181106181c4576181c461be35565b60200260200101819052506181e08560e0015160400151619035565b82826181eb8161bfa2565b935060ff16815181106182005761820061be35565b60200260200101819052505b60e085015160600151156182b65760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826182598161bfa2565b935060ff168151811061826e5761826e61be35565b602002602001018190525061828a8560e0015160600151619035565b82826182958161bfa2565b935060ff16815181106182aa576182aa61be35565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156182d4576182d461b14c565b60405190808252806020026020018201604052801561830757816020015b60608152602001906001900390816182f25790505b50905060005b8260ff168160ff16101561836057838160ff16815181106183305761833061be35565b6020026020010151828260ff168151811061834d5761834d61be35565b602090810291909101015260010161830d565b5093505050505b949350505050565b6183966040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c9161841c9186910161c02c565b600060405180830381865afa158015618439573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052618461919081019061bacf565b9050600061846f8683619bc4565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161849f919061aefe565b6000604051808303816000875af11580156184be573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526184e6919081019061c073565b805190915060030b158015906184ff5750602081015151155b801561850e5750604081015151155b156174e857816000815181106185265761852661be35565b6020026020010151604051602001616767919061c129565b606060006185738560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506185aa9082905b90619d19565b15618707576000618627826186218461861b6185ed8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90619d40565b90619da2565b604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061868b908290619d19565b156186f557604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526186f2905b8290619e27565b90505b6186fe81619e4d565b9250505061657b565b821561872057848460405160200161676792919061c315565b505060408051602081019091526000815261657b565b509392505050565b6000808251602084016000f09392505050565b616d6382826001618869565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fad3cb1cc00000000000000000000000000000000000000000000000000000000179052905160609160009182916001600160a01b038616916187d2919061c3bc565b600060405180830381855afa9150503d806000811461880d576040519150601f19603f3d011682016040523d82523d6000602084013e618812565b606091505b5091509150818015618825575060208151115b1561883e5780806020019051810190618367919061bacf565b505060408051602081019091526000815292915050565b60006188618383619eb6565b159392505050565b8160a001511561887857505050565b6000618885848484619f91565b905060006188928261836f565b602081015181519192509060030b15801561892e5750604080518082018252600781527f53554343455353000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261892e906040805180820182526000808252602091820152815180830190925284518252808501908201526185a4565b1561893b57505050505050565b6040820151511561895b578160400151604051602001616767919061c3d8565b80604051602001616767919061c436565b606060006189a18360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150618a06905b8290618fd4565b15618a7557604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261657b90618a7090839061a52c565b619e4d565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618ad7905b829061a5b6565b600103618ba457604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618b3d906186eb565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261657b90618a70905b8390619e27565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618c03906189ff565b15618d3a57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290618c6b90839061a650565b905060008160018351618c7e919061b5d2565b81518110618c8e57618c8e61be35565b60200260200101519050618d31618a70618d046040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529061a52c565b95945050505050565b82604051602001616767919061c4a1565b50919050565b60606000618d868360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150618de8906189ff565b15618df65761657b81619e4d565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618e5590618ad0565b600103618ebf57604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261657b90618a7090618b9d565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618f1e906189ff565b15618d3a57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290618f8690839061a650565b9050600181511115618fc2578060028251618fa1919061b5d2565b81518110618fb157618fb161be35565b602002602001015192505050919050565b5082604051602001616767919061c4a1565b805182516000911115618fe95750600061646d565b81518351602085015160009291618fff9161b6d2565b619009919061b5d2565b90508260200151810361902057600191505061646d565b82516020840151819020912014905092915050565b606060006190428361a6f5565b600101905060008167ffffffffffffffff8111156190625761906261b14c565b6040519080825280601f01601f19166020018201604052801561908c576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461909657509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091619161905b8290618855565b156191a157505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e73650000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526192009061915a565b1561924057505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d495400000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261929f9061915a565b156192df57505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261933e9061915a565b806193a35750604080518082018252601081527f47504c2d322e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526193a39061915a565b156193e357505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526194429061915a565b806194a75750604080518082018252601081527f47504c2d332e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526194a79061915a565b156194e757505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526195469061915a565b806195ab5750604080518082018252601181527f4c47504c2d322e312d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526195ab9061915a565b156195eb57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261964a9061915a565b806196af5750604080518082018252601181527f4c47504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526196af9061915a565b156196ef57505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261974e9061915a565b1561978e57505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526197ed9061915a565b1561982d57505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261988c9061915a565b156198cc57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261992b9061915a565b1561996b57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e3000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526199ca9061915a565b15619a0a57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152619a699061915a565b80619ace5750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152619ace9061915a565b15619b0e57505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e3100000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152619b6d9061915a565b15619bad57505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151616767929060200161c57f565b60608060005b8451811015619c4f5781858281518110619be657619be661be35565b6020026020010151604051602001619bff92919061b97d565b604051602081830303815290604052915060018551619c1e919061b5d2565b8114619c475781604051602001619c35919061c6e8565b60405160208183030381529060405291505b600101619bca565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081619c685790505090508381600081518110619c9357619c9361be35565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110619ce757619ce761be35565b60200260200101819052508181600281518110619d0657619d0661be35565b6020908102919091010152949350505050565b6020808301518351835192840151600093619d37929184919061a7d7565b14159392505050565b60408051808201909152600080825260208201526000619d72846000015185602001518560000151866020015161a8e8565b9050836020015181619d84919061b5d2565b84518590619d9390839061b5d2565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015619dc757508161646d565b6020808301519084015160019114619dee5750815160208481015190840151829020919020145b8015619e1f57825184518590619e0590839061b5d2565b9052508251602085018051619e1b90839061b6d2565b9052505b509192915050565b6040805180820190915260008082526020820152619e4683838361aa08565b5092915050565b60606000826000015167ffffffffffffffff811115619e6e57619e6e61b14c565b6040519080825280601f01601f191660200182016040528015619e98576020820181803683370190505b5090506000602082019050619e46818560200151866000015161aab3565b8151815160009190811115619ec9575081515b6020808501519084015160005b83811015619f825782518251808214619f52576000196020871015619f3157600184619f0389602061b5d2565b619f0d919061b6d2565b619f1890600861c729565b619f2390600261c827565b619f2d919061b5d2565b1990505b8181168382168181039114619f4f57975061646d9650505050505050565b50505b619f5d60208661b6d2565b9450619f6a60208561b6d2565b93505050602081619f7b919061b6d2565b9050619ed6565b50845186516174e8919061c833565b60606000619f9d616d67565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081619fba57905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061a0159061bfa2565b935060ff168151811061a02a5761a02a61be35565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e330000000000000000000000000000000000000000000000000081525060405160200161a07b919061c853565b60405160208183030381529060405282828061a0969061bfa2565b935060ff168151811061a0ab5761a0ab61be35565b60200260200101819052506040518060400160405280600881526020017f76616c696461746500000000000000000000000000000000000000000000000081525082828061a0f89061bfa2565b935060ff168151811061a10d5761a10d61be35565b60200260200101819052508260405160200161a129919061bed0565b60405160208183030381529060405282828061a1449061bfa2565b935060ff168151811061a1595761a15961be35565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e74726163740000000000000000000000000000000000000000000081525082828061a1a69061bfa2565b935060ff168151811061a1bb5761a1bb61be35565b602002602001018190525061a1d0878461ab2d565b828261a1db8161bfa2565b935060ff168151811061a1f05761a1f061be35565b60209081029190910101528551511561a29c5760408051808201909152600b81527f2d2d7265666572656e63650000000000000000000000000000000000000000006020820152828261a2428161bfa2565b935060ff168151811061a2575761a25761be35565b602002602001018190525061a27086600001518461ab2d565b828261a27b8161bfa2565b935060ff168151811061a2905761a29061be35565b60200260200101819052505b85608001511561a30a5760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261a2e58161bfa2565b935060ff168151811061a2fa5761a2fa61be35565b602002602001018190525061a370565b841561a3705760408051808201909152601281527f2d2d726571756972655265666572656e636500000000000000000000000000006020820152828261a34f8161bfa2565b935060ff168151811061a3645761a36461be35565b60200260200101819052505b6040860151511561a40c5760408051808201909152600d81527f2d2d756e73616665416c6c6f77000000000000000000000000000000000000006020820152828261a3ba8161bfa2565b935060ff168151811061a3cf5761a3cf61be35565b6020026020010181905250856040015182828061a3eb9061bfa2565b935060ff168151811061a4005761a40061be35565b60200260200101819052505b85606001511561a4765760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261a4558161bfa2565b935060ff168151811061a46a5761a46a61be35565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561a4945761a49461b14c565b60405190808252806020026020018201604052801561a4c757816020015b606081526020019060019003908161a4b25790505b50905060005b8260ff168160ff16101561a52057838160ff168151811061a4f05761a4f061be35565b6020026020010151828260ff168151811061a50d5761a50d61be35565b602090810291909101015260010161a4cd565b50979650505050505050565b604080518082019091526000808252602082015281518351101561a55157508161646d565b8151835160208501516000929161a5679161b6d2565b61a571919061b5d2565b6020840151909150600190821461a592575082516020840151819020908220145b801561a5ad5783518551869061a5a990839061b5d2565b9052505b50929392505050565b600080826000015161a5da856000015186602001518660000151876020015161a8e8565b61a5e4919061b6d2565b90505b8351602085015161a5f8919061b6d2565b8111619e46578161a6088161c898565b925050826000015161a63f85602001518361a623919061b5d2565b865161a62f919061b5d2565b838660000151876020015161a8e8565b61a649919061b6d2565b905061a5e7565b6060600061a65e848461a5b6565b61a66990600161b6d2565b67ffffffffffffffff81111561a6815761a68161b14c565b60405190808252806020026020018201604052801561a6b457816020015b606081526020019060019003908161a69f5790505b50905060005b81518110156187365761a6d0618a708686619e27565b82828151811061a6e25761a6e261be35565b602090810291909101015260010161a6ba565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061a73e577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831061a76a576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061a78857662386f26fc10000830492506010015b6305f5e100831061a7a0576305f5e100830492506008015b612710831061a7b457612710830492506004015b6064831061a7c6576064830492506002015b600a831061646d5760010192915050565b60008085841161a8de576020841161a88a576000841561a82257600161a7fe86602061b5d2565b61a80990600861c729565b61a81490600261c827565b61a81e919061b5d2565b1990505b835181168561a831898961b6d2565b61a83b919061b5d2565b805190935082165b81811461a8755787841161a85d5787945050505050618367565b8361a8678161c8b2565b94505082845116905061a843565b61a87f878561b6d2565b945050505050618367565b83832061a897858861b5d2565b61a8a1908761b6d2565b91505b85821061a8dc5784822080820361a8c95761a8bf868461b6d2565b9350505050618367565b61a8d460018461b5d2565b92505061a8a4565b505b5092949350505050565b6000838186851161a9f3576020851161a9a2576000851561a93457600161a91087602061b5d2565b61a91b90600861c729565b61a92690600261c827565b61a930919061b5d2565b1990505b8451811660008761a9458b8b61b6d2565b61a94f919061b5d2565b855190915083165b82811461a9945781861061a97c5761a96f8b8b61b6d2565b9650505050505050618367565b8561a9868161c898565b96505083865116905061a957565b859650505050505050618367565b508383206000905b61a9b4868961b5d2565b821161a9f15785832080820361a9d05783945050505050618367565b61a9db60018561b6d2565b935050818061a9e99061c898565b92505061a9aa565b505b61a9fd878761b6d2565b979650505050505050565b6040805180820190915260008082526020820152600061aa3a856000015186602001518660000151876020015161a8e8565b60208087018051918601919091525190915061aa56908261b5d2565b83528451602086015161aa69919061b6d2565b810361aa78576000855261aaaa565b8351835161aa86919061b6d2565b8551869061aa9590839061b5d2565b905250835161aaa4908261b6d2565b60208601525b50909392505050565b6020811061aaeb578151835261aaca60208461b6d2565b925061aad760208361b6d2565b915061aae460208261b5d2565b905061aab3565b600019811561ab1a57600161ab0183602061b5d2565b61ab0d9061010061c827565b61ab17919061b5d2565b90505b9151835183169219169190911790915250565b6060600061ab3b8484616e3a565b805160208083015160405193945061ab559390910161c8c9565b60405160208183030381529060405291505092915050565b610b67806200c92283390190565b61063a806200d48983390190565b61106f806200dac383390190565b612072806200eb3283390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161abe861abed565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161abe86040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b8181101561ac9f5783516001600160a01b031683526020938401939092019160010161ac78565b509095945050505050565b60005b8381101561acc557818101518382015260200161acad565b50506000910152565b6000815180845261ace681602086016020860161acaa565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561adf6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b8181101561addc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261adc684865161acce565b602095860195909450929092019160010161ad8c565b50919750505060209485019492909201915060010161ad22565b50929695505050505050565b600081518084526020840193506020830160005b8281101561ae565781517fffffffff000000000000000000000000000000000000000000000000000000001686526020958601959091019060010161ae16565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561adf6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516040875261aecc604088018261acce565b905060208201519150868103602088015261aee7818361ae02565b96505050602093840193919091019060010161ae88565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561adf6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845261af6085835161acce565b9450602093840193919091019060010161af26565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561adf6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b038151168652602081015190506040602087015261aff6604087018261ae02565b955050602093840193919091019060010161af9d565b60006020828403121561b01e57600080fd5b81516001600160a01b038116811461657b57600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff881660408301528660608301526003861061b0ef577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a083015261b11060c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b60006020828403121561b13c57600080fd5b8151801515811461657b57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600181811c9082168061b18f57607f821691505b602082108103618d4b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b601f82111561310757806000526020600020601f840160051c8101602085101561b1ef5750805b601f840160051c820191505b81811015611252576000815560010161b1fb565b815167ffffffffffffffff81111561b2295761b22961b14c565b61b23d8161b237845461b17b565b8461b1c8565b6020601f82116001811461b271576000831561b2595750848201515b600019600385901b1c1916600184901b178455611252565b600084815260208120601f198516915b8281101561b2a1578785015182556020948501946001909201910161b281565b508482101561b2bf5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b600081546001600160a01b038116845260ff8160a01c1615156020850152506001600160a01b0360018301541660408401526002820160a060608501526000815461b3188161b17b565b8060a0880152600182166000811461b337576001811461b3715761b3a5565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831660c089015260c082151560051b890101935061b3a5565b84600052602060002060005b8381101561b39c5781548a820160c0015260019091019060200161b37d565b890160c0019450505b50505060038401546080860152809250505092915050565b60e08152600061b3d060e083018961acce565b8760208401526001600160a01b0387166040840152828103606084015261b3f7818761acce565b85546080850152600186015460ff16151560a085015290505b82810360c084015261b422818561b2ce565b9998505050505050505050565b60006020828403121561b44157600080fd5b5051919050565b60e08152600061b45b60e083018961acce565b8760208401526001600160a01b0387166040840152828103606084015261b482818761acce565b855160808501526020860151151560a0850152905061b410565b6101208152600061b4b161012083018b61acce565b6001600160a01b038a16602084015288604084015287606084015286608084015282810360a084015261b4e4818761acce565b855460c0850152600186015460ff16151560e085015290505b828103610100840152616887818561b2ce565b60e08152600061b52360e083018961acce565b876020840152866040840152828103606084015261b3f7818761acce565b6101208152600061b55661012083018b61acce565b6001600160a01b038a16602084015288604084015287606084015286608084015282810360a084015261b589818761acce565b855160c08501526020860151151560e0850152905061b4fd565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561646d5761646d61b5a3565b6101208152600061b5fa61012083018a61acce565b6001600160a01b03891660208401528760408401528660608401528560808401528281038060a08501526000825261b64160c0850187805182526020908101511515910152565b602081016101008501525061b659602082018561b2ce565b9a9950505050505050505050565b60808152600061b67a608083018761acce565b8560208401526001600160a01b0385166040840152828103606084015261a9fd818561b2ce565b60808152600061b6b4608083018761acce565b856020840152846040840152828103606084015261a9fd818561b2ce565b8082018082111561646d5761646d61b5a3565b60008261b71b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60c08152600061b73360c083018861acce565b6001600160a01b0387166020840152828103604084015261b754818761acce565b85546060850152600186015460ff1615156080850152905082810360a084015261b77e818561b2ce565b98975050505050505050565b60a08152600061b79d60a083018761acce565b828103602084015261b7af818761acce565b85546040850152600186015460ff16151560608501529050828103608084015261a9fd818561b2ce565b6001600160a01b0383168152604060208201526000618367604083018461acce565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161b83381601a85016020880161acaa565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161b87081601c84016020880161acaa565b01601c01949350505050565b60208152600061657b602083018461acce565b6040516060810167ffffffffffffffff8111828210171561b8b25761b8b261b14c565b60405290565b60008067ffffffffffffffff84111561b8d35761b8d361b14c565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561b9025761b90261b14c565b60405283815290508082840185101561b91a57600080fd5b61873684602083018561acaa565b600082601f83011261b93957600080fd5b61657b8383516020850161b8b8565b60006020828403121561b95a57600080fd5b815167ffffffffffffffff81111561b97157600080fd5b6164698482850161b928565b6000835161b98f81846020880161acaa565b83519083019061b9a381836020880161acaa565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161b9e481601a85016020880161acaa565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161ba2181603384016020880161acaa565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b6001600160a01b03841681526001600160a01b0383166020820152606060408201526000618d31606083018461acce565b60408152600b60408201527f464f554e4452595f4f5554000000000000000000000000000000000000000000606082015260806020820152600061657b608083018461acce565b60006020828403121561bae157600080fd5b815167ffffffffffffffff81111561baf857600080fd5b8201601f8101841361bb0957600080fd5b6164698482516020840161b8b8565b6000855161bb2a818460208a0161acaa565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161bb64816001840160208a0161acaa565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161bba281600284016020890161acaa565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161bbe481600284016020880161acaa565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061bc2f604083018461acce565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161bca681601f85016020870161acaa565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061bd13604083018461acce565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061bd65604083018461acce565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161bddc81601485016020870161acaa565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061be23604083018561acce565b8281036020840152616577818561acce565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161be9c81600185016020870161acaa565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161bee281846020870161acaa565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161bf9581604b85016020870161acaa565b91909101604b0192915050565b600060ff821660ff810361bfb85761bfb861b5a3565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161c01f81602985016020870161acaa565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061657b608083018461acce565b60006020828403121561c08557600080fd5b815167ffffffffffffffff81111561c09c57600080fd5b82016060818503121561c0ae57600080fd5b61c0b661b88f565b81518060030b811461c0c757600080fd5b8152602082015167ffffffffffffffff81111561c0e357600080fd5b61c0ef8682850161b928565b602083015250604082015167ffffffffffffffff81111561c10f57600080fd5b61c11b8682850161b928565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161c18781602185016020870161acaa565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161c37381602185016020880161acaa565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161c3b081602e84016020880161acaa565b01602e01949350505050565b6000825161c3ce81846020870161acaa565b9190910192915050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161c01f81602985016020870161acaa565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161c49481602285016020870161acaa565b9190910160220192915050565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161c4d981600e85016020870161acaa565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161c5b781601885016020880161acaa565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161c5f481601c84016020880161acaa565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161c6fa81846020870161acaa565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b808202811582820484141761646d5761646d61b5a3565b6001815b600184111561c77b5780850481111561c75f5761c75f61b5a3565b600184161561c76d57908102905b60019390931c92800261c744565b935093915050565b60008261c7925750600161646d565b8161c79f5750600061646d565b816001811461c7b5576002811461c7bf5761c7db565b600191505061646d565b60ff84111561c7d05761c7d061b5a3565b50506001821b61646d565b5060208310610133831016604e8410600b841016171561c7fe575081810a61646d565b61c80b600019848461c740565b806000190482111561c81f5761c81f61b5a3565b029392505050565b600061657b838361c783565b8181036000831280158383131683831282161715619e4657619e4661b5a3565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161c88b81601c85016020870161acaa565b91909101601c0192915050565b6000600019820361c8ab5761c8ab61b5a3565b5060010190565b60008161c8c15761c8c161b5a3565b506000190190565b6000835161c8db81846020880161acaa565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161c91581600184016020880161acaa565b0160010194935050505056fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea2646970667358221220b09c98b42d894b1b92a74ecc691587bcc17012fff7ef3bcfa6fe755f9b6255a564736f6c634300081a00336080604052348015600f57600080fd5b5061061b8061001f6000396000f3fe60806040526004361061002a5760003560e01c80635bcfd61614610033578063c9028a361461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e366004610151565b610073565b34801561005f57600080fd5b5061003161006e36600461020e565b6100ee565b6060811561008a576100878284018461027f565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610375565b6100c560408a0160208b016103e1565b896040013533866040516100de96959493929190610445565b60405180910390a1505050505050565b7fd75bb509c8f32a725aac99ac5c4541060dbfb889a3aca8314d6f00395618c4c48160405161011d9190610507565b60405180910390a150565b803573ffffffffffffffffffffffffffffffffffffffff8116811461014c57600080fd5b919050565b60008060008060006080868803121561016957600080fd5b853567ffffffffffffffff81111561018057600080fd5b86016060818903121561019257600080fd5b94506101a060208701610128565b935060408601359250606086013567ffffffffffffffff8111156101c357600080fd5b8601601f810188136101d457600080fd5b803567ffffffffffffffff8111156101eb57600080fd5b8860208284010111156101fd57600080fd5b959894975092955050506020019190565b60006020828403121561022057600080fd5b813567ffffffffffffffff81111561023757600080fd5b82016080818503121561024957600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561029157600080fd5b813567ffffffffffffffff8111156102a857600080fd5b8201601f810184136102b957600080fd5b803567ffffffffffffffff8111156102d3576102d3610250565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033f5761033f610250565b60405281815282820160200186101561035757600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126103aa57600080fd5b83018035915067ffffffffffffffff8211156103c557600080fd5b6020019150368190038213156103da57600080fd5b9250929050565b6000602082840312156103f357600080fd5b61024982610128565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60a08152600061045960a08301888a6103fc565b73ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff851660608401528281036080840152835180825260005b818110156104c3576020818701810151848301820152016104a7565b5060006020828401015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011683010192505050979650505050505050565b6020815273ffffffffffffffffffffffffffffffffffffffff61052983610128565b16602082015273ffffffffffffffffffffffffffffffffffffffff61055060208401610128565b166040820152600080604084013590508060608401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261059c57600080fd5b830160208101903567ffffffffffffffff8111156105b957600080fd5b8036038213156105c857600080fd5b6080808501526105dc60a0850182846103fc565b9594505050505056fea264697066735822122034d8711688fa0746c516ebf736804e86c9e1dad5e64788e702413ad1a8eb9ff164736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea2646970667358221220b13ccf97234dc9b7f658234f9bf37a57d08f465bb99c431b865174e7a399a30764736f6c634300081a003360c060405234801561001057600080fd5b5060405161207238038061207283398101604081905261002f916101f0565b6001600160a01b038216158061004c57506001600160a01b038116155b1561006a5760405163d92e233d60e01b815260040160405180910390fd5b60066100768982610342565b5060076100838882610342565b506008805460ff191660ff881617905560808590528360028111156100aa576100aa610400565b60a08160028111156100be576100be610400565b905250600192909255600080546001600160a01b039283166001600160a01b0319909116179055600880549190921661010002610100600160a81b0319909116179055506104169350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261013357600080fd5b81516001600160401b0381111561014c5761014c61010c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561017a5761017a61010c565b60405281815283820160200185101561019257600080fd5b60005b828110156101b157602081860181015183830182015201610195565b506000918101602001919091529392505050565b8051600381106101d457600080fd5b919050565b80516001600160a01b03811681146101d457600080fd5b600080600080600080600080610100898b03121561020d57600080fd5b88516001600160401b0381111561022357600080fd5b61022f8b828c01610122565b60208b015190995090506001600160401b0381111561024d57600080fd5b6102598b828c01610122565b975050604089015160ff8116811461027057600080fd5b60608a0151909650945061028660808a016101c5565b60a08a0151909450925061029c60c08a016101d9565b91506102aa60e08a016101d9565b90509295985092959890939650565b600181811c908216806102cd57607f821691505b6020821081036102ed57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561033d57806000526020600020601f840160051c8101602085101561031a5750805b601f840160051c820191505b8181101561033a5760008155600101610326565b50505b505050565b81516001600160401b0381111561035b5761035b61010c565b61036f8161036984546102b9565b846102f3565b6020601f8211600181146103a3576000831561038b5750848201515b600019600385901b1c1916600184901b17845561033a565b600084815260208120601f198516915b828110156103d357878501518255602094850194600190920191016103b3565b50848210156103f15786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a051611c1b61045760003960006103440152600081816102f001528181610bdc01528181610ce201528181610efe01526110040152611c1b6000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c806395d89b41116100f9578063ccc7759911610097578063eddeb12311610071578063eddeb12314610461578063f2441b3214610474578063f687d12a14610494578063fc5fecd5146104a757600080fd5b8063ccc77599146103d4578063d9eeebed146103e7578063dd62ed3e1461041b57600080fd5b8063b84c8246116100d3578063b84c824614610386578063c47f00271461039b578063c7012626146103ae578063c835d7cc146103c157600080fd5b806395d89b4114610337578063a3413d031461033f578063a9059cbb1461037357600080fd5b80633ce4a5bc116101665780634d8943bb116101405780634d8943bb146102ac57806370a08231146102b557806385e1f4d0146102eb5780638b851b951461031257600080fd5b80633ce4a5bc1461024657806342966c681461028657806347e7ef241461029957600080fd5b806318160ddd1161019757806318160ddd1461021657806323b872dd1461021e578063313ce5671461023157600080fd5b806306fdde03146101be578063091d2788146101dc578063095ea7b3146101f3575b600080fd5b6101c66104ba565b6040516101d39190611648565b60405180910390f35b6101e560015481565b6040519081526020016101d3565b610206610201366004611687565b61054c565b60405190151581526020016101d3565b6005546101e5565b61020661022c3660046116b3565b610563565b60085460405160ff90911681526020016101d3565b61026173735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d3565b6102066102943660046116f4565b6105fa565b6102066102a7366004611687565b61060e565b6101e560025481565b6101e56102c336600461170d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6101e57f000000000000000000000000000000000000000000000000000000000000000081565b60085461026190610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6101c6610767565b6103667f000000000000000000000000000000000000000000000000000000000000000081565b6040516101d3919061172a565b610206610381366004611687565b610776565b610399610394366004611832565b610783565b005b6103996103a9366004611832565b6107e0565b6102066103bc366004611883565b610839565b6103996103cf36600461170d565b610988565b6103996103e236600461170d565b610a9c565b6103ef610bb0565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101d3565b6101e56104293660046118dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205490565b61039961046f3660046116f4565b610dce565b6000546102619073ffffffffffffffffffffffffffffffffffffffff1681565b6103996104a23660046116f4565b610e50565b6103ef6104b53660046116f4565b610ed2565b6060600680546104c990611915565b80601f01602080910402602001604051908101604052809291908181526020018280546104f590611915565b80156105425780601f1061051757610100808354040283529160200191610542565b820191906000526020600020905b81548152906001019060200180831161052557829003601f168201915b5050505050905090565b60006105593384846110ee565b5060015b92915050565b60006105708484846111f7565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460209081526040808320338452909152902054828110156105db576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105ef85336105ea8685611997565b6110ee565b506001949350505050565b600061060633836113b2565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab1480159061064c575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156106755750600854610100900473ffffffffffffffffffffffffffffffffffffffff163314155b156106ac576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106b683836114f4565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526107569186906119aa565b60405180910390a250600192915050565b6060600780546104c990611915565b60006105593384846111f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab146107d0576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60076107dc8282611a1b565b5050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461082d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60066107dc8282611a1b565b6000806000610846610bb0565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156108d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fc9190611b34565b610932576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61093c33856113b2565b60025460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161097591899189918791611b56565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146109d5576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a22576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610ae9576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610b36576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c679190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610cb6576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d699190611ba2565b905080600003610da5576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060025460015483610db89190611bbb565b610dc29190611bd2565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e1b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610a91565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e9d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610f65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f899190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610fd8576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015611067573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108b9190611ba2565b9050806000036110c7576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000906110d78784611bbb565b6110e19190611bd2565b9296929550919350505050565b73ffffffffffffffffffffffffffffffffffffffff831661113b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611188576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611244576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611291576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040902054818110156112f1576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112fb8282611997565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260036020526040808220939093559085168152908120805484929061133e908490611bd2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113a491815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff82166113ff576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260409020548181101561145f576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114698282611997565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260036020526040812091909155600580548492906114a4908490611997565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016111ea565b73ffffffffffffffffffffffffffffffffffffffff8216611541576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008282546115539190611bd2565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805483929061158d908490611bd2565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561160a576020818501810151868301820152016115ee565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061165b60208301846115e4565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461168457600080fd5b50565b6000806040838503121561169a57600080fd5b82356116a581611662565b946020939093013593505050565b6000806000606084860312156116c857600080fd5b83356116d381611662565b925060208401356116e381611662565b929592945050506040919091013590565b60006020828403121561170657600080fd5b5035919050565b60006020828403121561171f57600080fd5b813561165b81611662565b6020810160038310611765577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff8411156117b5576117b561176b565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff821117156118025761180261176b565b60405283815290508082840185101561181a57600080fd5b83836020830137600060208583010152509392505050565b60006020828403121561184457600080fd5b813567ffffffffffffffff81111561185b57600080fd5b8201601f8101841361186c57600080fd5b61187b8482356020840161179a565b949350505050565b6000806040838503121561189657600080fd5b823567ffffffffffffffff8111156118ad57600080fd5b8301601f810185136118be57600080fd5b6118cd8582356020840161179a565b95602094909401359450505050565b600080604083850312156118ef57600080fd5b82356118fa81611662565b9150602083013561190a81611662565b809150509250929050565b600181811c9082168061192957607f821691505b602082108103611962577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561055d5761055d611968565b6040815260006119bd60408301856115e4565b90508260208301529392505050565b601f821115611a1657806000526020600020601f840160051c810160208510156119f35750805b601f840160051c820191505b81811015611a1357600081556001016119ff565b50505b505050565b815167ffffffffffffffff811115611a3557611a3561176b565b611a4981611a438454611915565b846119cc565b6020601f821160018114611a9b5760008315611a655750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611a13565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015611ae95787850151825560209485019460019092019101611ac9565b5084821015611b2557868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b600060208284031215611b4657600080fd5b8151801515811461165b57600080fd5b608081526000611b6960808301876115e4565b6020830195909552506040810192909252606090910152919050565b600060208284031215611b9757600080fd5b815161165b81611662565b600060208284031215611bb457600080fd5b5051919050565b808202811582820484141761055d5761055d611968565b8082018082111561055d5761055d61196856fea2646970667358221220d6ba834f25782689ed13bffb6ac9ff2c8d3b5342c94a515aea8197a76070ad3f64736f6c634300081a0033a2646970667358221220e766449213463bed09a714210b2483e968532fcd0df5f7e884c59017b0f44e9c64736f6c634300081a0033", } // 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 55a97256c..1d0c3cb4d 100644 --- a/v2/pkg/gatewayzevm.t.sol/gatewayzevmoutboundtest.go +++ b/v2/pkg/gatewayzevm.t.sol/gatewayzevmoutboundtest.go @@ -73,7 +73,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\":\"testDepositAndRevertZRC20AndCallUniversalContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallUniversalContractFailsITargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallUniversalContractFailsITargetIsProtocol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallUniversalContractFailsIfAmountIsZero\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallUniversalContractFailsIfSenderIsNotProtocol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallUniversalContractFailsIfTargetIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallUniversalContractFailsIfZRC20IsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfSenderNotProtocol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfTargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfTargetIsProtocol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfTargetIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfZRC20IsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositTogglePause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallUniversal\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallUniversalContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallUniversalContractFailsIfSenderIsNotProtocol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallUniversalContractFailsIfTargetIsAmountIsZero\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallUniversalContractFailsIfTargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallUniversalContractFailsIfTargetIsProtocol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallUniversalContractFailsIfTargetIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallUniversalContractFailsIfZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallUniversalContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallUniversalContractFailsIfAmountIsZero\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallUniversalContractFailsIfSenderIsNotProtocol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallUniversalContractFailsIfTargetIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallUniversalContractFailsIfZRC20IsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallUniversalContractIfTargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallUniversalContractIfTargetIsProtocol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteFailsIfTargetIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteFailsIfZRC20IsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteRevertUniversalContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteRevertUniversalContractFailsIfTargetIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteRevertUniversalContractIfSenderIsNotProtocol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteUniversalContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteUniversalContractFailsIfSenderIsNotProtocol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteUniversalContractFailsIfZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Called\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"callOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structCallOptions\",\"components\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"isArbitraryCall\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawn\",\"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\"},{\"name\":\"callOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structCallOptions\",\"components\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"isArbitraryCall\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\":\"CallerIsNotProtocol\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedZetaSent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientGasLimit\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZetaAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"MessageSizeExceeded\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrProtocol\",\"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: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061fc598061003c6000396000f3fe608060405234801561001057600080fd5b506004361061034c5760003560e01c806385226c81116101bd578063c8814d2e116100f9578063eab7674e116100a2578063ef2b53941161007c578063ef2b539414610542578063f1d98f1b1461054a578063fa7626d414610552578063fb339a1c1461055f57600080fd5b8063eab7674e1461052a578063eb78bd7d14610532578063ec294d9f1461053a57600080fd5b8063e09bc659116100d3578063e09bc659146104e5578063e20c9f71146104ed578063e63ab1e9146104f557600080fd5b8063c8814d2e146104cd578063ca26929c146104d5578063cf2c3d1d146104dd57600080fd5b8063996b767511610166578063b5508aa911610140578063b5508aa9146104a5578063b936be8c14610443578063ba414fa6146104ad578063c35cb5e4146104c557600080fd5b8063996b76751461048d5780639c9acd5d14610495578063b0464fdc1461049d57600080fd5b8063916a17c611610197578063916a17c61461047057806396d9d8761461048557806397f7661f1461044357600080fd5b806385226c811461044b578063884660a314610460578063890a2d671461046857600080fd5b80633e5e3c231161028c5780635cec7db5116102355780636efa04b51161020f5780636efa04b51461042b5780637cec29b0146104335780637f924c4e1461043b578063828d267c1461044357600080fd5b80635cec7db5146104065780636163f8ef1461040e57806366d9a9a01461041657600080fd5b806351336fb01161026657806351336fb0146103f657806358c9987f146103fe5780635b4c90e1146103a157600080fd5b80633e5e3c23146103de5780633f7286f4146103e657806348f4fd07146103ee57600080fd5b806327820625116102f95780632ade3880116102d35780632ade3880146103b1578063339bd828146103c65780633626c616146103ce5780633ab5b199146103d657600080fd5b806327820625146103995780632948df41146103a15780632acb21b4146103a957600080fd5b80631c785a141161032a5780631c785a141461036b5780631ed7831c146103735780632468bc0f1461039157600080fd5b8063084fafab146103515780630a9254e41461035b57806314b7a6da14610363575b600080fd5b610359610567565b005b61035961073d565b610359611241565b610359611391565b61037b611ca8565b6040516103889190619f02565b60405180910390f35b610359611d0a565b6103596121d5565b61035961229d565b610359612486565b6103b9612645565b6040516103889190619f9e565b610359612787565b6103596128d3565b610359612a5b565b61037b612c0c565b61037b612c6c565b610359612ccc565b610359612e17565b610359612f62565b610359613117565b610359613305565b61041e613453565b604051610388919061a104565b6103596135d5565b610359613979565b610359613b64565b610359613b9d565b610453613d49565b604051610388919061a1a2565b610359613e19565b6103596140f8565b6104786142b3565b604051610388919061a219565b6103596143ae565b610359614501565b610359614655565b6104786147a5565b6104536148a0565b6104b5614970565b6040519015158152602001610388565b610359614a44565b610359614bff565b610359614d41565b610359614fc4565b610359615182565b61037b61533b565b61051c7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b604051908152602001610388565b61035961539b565b6103596154e9565b6103596156a7565b610359615856565b610359615a07565b601f546104b59060ff1681565b610359615b55565b602480546040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190529281018390526044810183905260648101929092526001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156105f657600080fd5b505af115801561060a573d6000803e3d6000fd5b505050507fd75bb509c8f32a725aac99ac5c4541060dbfb889a3aca8314d6f00395618c4c4602c60405161063e919061a3da565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b1580156106a057600080fd5b505af11580156106b4573d6000803e3d6000fd5b50506020546024546040517f184b07930000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063184b079393506107099290911690602c9060040161a3ed565b600060405180830381600087803b15801561072357600080fd5b505af1158015610737573d6000803e3d6000fd5b50505050565b602580547fffffffffffffffffffffffff000000000000000000000000000000000000000090811630179091556026805490911661123417905560405161078390619e15565b604051809103906000f08015801561079f573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600f81527f476174657761795a45564d2e736f6c000000000000000000000000000000000060208201526025549151602481019390935292166044820152610883919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc95500000000000000000000000000000000000000000000000000000000179052615d08565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b039384168102919091179182905560208054919092049092167fffffffffffffffffffffffff000000000000000000000000000000000000000090921682178155604080517f2722feee0000000000000000000000000000000000000000000000000000000081529051632722feee926004808401939192918290030181865afa158015610945573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610969919061a40f565b602780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516109ad90619e22565b604051809103906000f0801580156109c9573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161781556027546040517f06447d5600000000000000000000000000000000000000000000000000000000815292166004830152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d569101600060405180830381600087803b158015610a6557600080fd5b505af1158015610a79573d6000803e3d6000fd5b505050506000806000604051610a8e90619e2f565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610aca573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602054604051601293600193849360009391921690610b2090619e3c565b610b2f9695949392919061a438565b604051809103906000f080158015610b4b573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556023546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b158015610be257600080fd5b505af1158015610bf6573d6000803e3d6000fd5b50506023546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b158015610c6057600080fd5b505af1158015610c74573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610cf457600080fd5b505af1158015610d08573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610d5d57600080fd5b505af1158015610d71573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610de5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e09919061a52d565b506021546025546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116906347e7ef24906044016020604051808303816000875af1158015610e7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9e919061a52d565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610efd57600080fd5b505af1158015610f11573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610f8757600080fd5b505af1158015610f9b573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116925063095ea7b391506044016020604051808303816000875af115801561100f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611033919061a52d565b50602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b15801561108557600080fd5b505af1158015611099573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af115801561110d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611131919061a52d565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561119057600080fd5b505af11580156111a4573d6000803e3d6000fd5b5050604080516080810182526025546001600160a01b0390811682526000602080840182815260018587019081528651928301909652918152606084018190528351602c80549185167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161781559251602d8054919095169116179092559251602e55909350909150602f9061123c908261a5c5565b505050565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561129a57600080fd5b505af11580156112ae573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561131e57600080fd5b505af1158015611332573d6000803e3d6000fd5b50506020546021546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260016024820152600060448201529116925063f45346dc9150606401610709565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156113ea57600080fd5b505af11580156113fe573d6000803e3d6000fd5b5050602754604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506114e9919060040161a684565b600060405180830381600087803b15801561150357600080fd5b505af1158015611517573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561156b57600080fd5b505af115801561157f573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156115dc57600080fd5b505af11580156115f0573d6000803e3d6000fd5b5050602754604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506116db919060040161a684565b600060405180830381600087803b1580156116f557600080fd5b505af1158015611709573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561175d57600080fd5b505af1158015611771573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156117ce57600080fd5b505af11580156117e2573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561183657600080fd5b505af115801561184a573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd93c066500000000000000000000000000000000000000000000000000000000600482015260019250737109709ecfa91a80626ff3989d68f67f5b1dd12d915063c31eb0e090602401600060405180830381600087803b1580156118bd57600080fd5b505af11580156118d1573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561192e57600080fd5b505af1158015611942573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810187905290821660448201529116925063f45346dc9150606401600060405180830381600087803b1580156119ba57600080fd5b505af11580156119ce573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015611a2b57600080fd5b505af1158015611a3f573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611a9357600080fd5b505af1158015611aa7573d6000803e3d6000fd5b50506021546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a08231906024015b602060405180830381865afa158015611afb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b1f919061a697565b9050611b2c600082615d27565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611b8557600080fd5b505af1158015611b99573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810188905290821660448201529116925063f45346dc9150606401600060405180830381600087803b158015611c1157600080fd5b505af1158015611c25573d6000803e3d6000fd5b50506021546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611c78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9c919061a697565b905061123c8382615d27565b60606016805480602002602001604051908101604052809291908181526020018280548015611d0057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611ce2575b5050505050905090565b6022546027546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611d5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d7f919061a697565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015611dd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df5919061a697565b6024546040519192506001600160a01b03163190600090611e189060200161a6b0565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611f0657600080fd5b505af1158015611f1a573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e9450611f7593506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054611fa5936001600160a01b03928316928c92169061a6ed565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561200657600080fd5b505af115801561201a573d6000803e3d6000fd5b50506020546024546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a9593506120719286928c92911690889060040161a79e565b600060405180830381600087803b15801561208b57600080fd5b505af115801561209f573d6000803e3d6000fd5b50506022546027546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156120f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612116919061a697565b905061212b612125888861a807565b82615d27565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801561217c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121a0919061a697565b90506121ac8682615d27565b6121cb6121b9898761a81a565b6024546001600160a01b031631615d27565b5050505050505050565b604051630618f58760e51b81527f42c0407e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561224157600080fd5b505af1158015612255573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401610686565b60006040516020016122ae9061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b15801561235c57600080fd5b505af1158015612370573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156123e057600080fd5b505af11580156123f4573d6000803e3d6000fd5b50506020546024546040517fbcf7f32b0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063bcf7f32b935061245092869260009260019290911690899060040161a82d565b600060405180830381600087803b15801561246a57600080fd5b505af115801561247e573d6000803e3d6000fd5b505050505050565b60006040516020016124979061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f42c0407e0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561256157600080fd5b505af1158015612575573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015b600060405180830381600087803b1580156125d357600080fd5b505af11580156125e7573d6000803e3d6000fd5b50506020546021546024546040517fbcf7f32b0000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063bcf7f32b9450612450938793811692600192911690899060040161a82d565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561277e57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156127675783829060005260206000200180546126da9061a2b0565b80601f01602080910402602001604051908101604052809291908181526020018280546127069061a2b0565b80156127535780601f1061272857610100808354040283529160200191612753565b820191906000526020600020905b81548152906001019060200180831161273657829003601f168201915b5050505050815260200190600101906126bb565b505050508152505081526020019060010190612669565b50505050905090565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156127e057600080fd5b505af11580156127f4573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561286457600080fd5b505af1158015612878573d6000803e3d6000fd5b50506020546021546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450639d4ba46593506107099290911690600190600090602c9060040161a882565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561292f57600080fd5b505af1158015612943573d6000803e3d6000fd5b5050604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156129b357600080fd5b505af11580156129c7573d6000803e3d6000fd5b50506020546021546027546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810187905290821660448201529116925063f45346dc91506064015b600060405180830381600087803b158015612a4057600080fd5b505af1158015612a54573d6000803e3d6000fd5b5050505050565b6000604051602001612a6c9061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b158015612b1a57600080fd5b505af1158015612b2e573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015612b9e57600080fd5b505af1158015612bb2573d6000803e3d6000fd5b50506020546021546040517fbcf7f32b0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063bcf7f32b93506124509286921690600190600090899060040161a82d565b60606018805480602002602001604051908101604052809291908181526020018280548015611d00576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611ce2575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015611d00576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611ce2575050505050905090565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612d2557600080fd5b505af1158015612d39573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015612da957600080fd5b505af1158015612dbd573d6000803e3d6000fd5b50506020546024546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450639d4ba465935061070992600092600192911690602c9060040161a882565b604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015612e8357600080fd5b505af1158015612e97573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015612ef457600080fd5b505af1158015612f08573d6000803e3d6000fd5b50506020546021546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450639d4ba465935061070992909116906001908590602c9060040161a882565b6000604051602001612f739061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b15801561302157600080fd5b505af1158015613035573d6000803e3d6000fd5b5050604051630618f58760e51b81527f5d67094f000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156130a557600080fd5b505af11580156130b9573d6000803e3d6000fd5b50506020546021546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca379450612450938793811692600092911690899060040161a82d565b60405160019060009061312c9060200161a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156131f657600080fd5b505af115801561320a573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561326757600080fd5b505af115801561327b573d6000803e3d6000fd5b50506020546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0390911692506321501a9591506132ce90849087908590889060040161a79e565b600060405180830381600087803b1580156132e857600080fd5b505af11580156132fc573d6000803e3d6000fd5b50505050505050565b604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561337157600080fd5b505af1158015613385573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156133e257600080fd5b505af11580156133f6573d6000803e3d6000fd5b50506020546021546027546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550639d4ba465945061070993928316926001921690602c9060040161a882565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561277e57838290600052602060002090600202016040518060400160405290816000820180546134aa9061a2b0565b80601f01602080910402602001604051908101604052809291908181526020018280546134d69061a2b0565b80156135235780601f106134f857610100808354040283529160200191613523565b820191906000526020600020905b81548152906001019060200180831161350657829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156135bd57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161356a5790505b50505050508152505081526020019060010190613477565b602154602480546040516370a0823160e01b81526001600160a01b03918216600482015260009391909116916370a082319101602060405180830381865afa158015613625573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613649919061a697565b9050613656600082615d27565b60006040516020016136679061a6b0565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561375557600080fd5b505af1158015613769573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e94506137c493506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526027546020546137f5936001600160a01b0392831692600192169061a6ed565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561385657600080fd5b505af115801561386a573d6000803e3d6000fd5b50506020546021546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca3794506138c8938793811692600192911690899060040161a82d565b600060405180830381600087803b1580156138e257600080fd5b505af11580156138f6573d6000803e3d6000fd5b5050602154602480546040516370a0823160e01b81526001600160a01b03918216600482015260009550921692506370a082319101602060405180830381865afa158015613948573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061396c919061a697565b9050610737600182615d27565b600060405160200161398a9061a6b0565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015613a7857600080fd5b505af1158015613a8c573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e9450613ae793506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054613b18936001600160a01b0392831692600192169061a6ed565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024016125b9565b6021546026546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401611ade565b6000604051602001613bae9061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b158015613c5c57600080fd5b505af1158015613c70573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015613ce057600080fd5b505af1158015613cf4573d6000803e3d6000fd5b50506020546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0390911692506321501a959150612450908490600190600090889060040161a79e565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101561277e578382906000526020600020018054613d8c9061a2b0565b80601f0160208091040260200160405190810160405280929190818152602001828054613db89061a2b0565b8015613e055780601f10613dda57610100808354040283529160200191613e05565b820191906000526020600020905b815481529060010190602001808311613de857829003601f168201915b505050505081526020019060010190613d6d565b602154602480546040516370a0823160e01b81526001600160a01b03918216600482015260009391909116916370a082319101602060405180830381865afa158015613e69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e8d919061a697565b9050613e9a600082615d27565b602480546040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190529281018390526044810183905260648101929092526001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015613f2957600080fd5b505af1158015613f3d573d6000803e3d6000fd5b505050507fd75bb509c8f32a725aac99ac5c4541060dbfb889a3aca8314d6f00395618c4c4602c604051613f71919061a3da565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613fd257600080fd5b505af1158015613fe6573d6000803e3d6000fd5b50506020546021546024546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550639d4ba465945061404393928316926001921690602c9060040161a882565b600060405180830381600087803b15801561405d57600080fd5b505af1158015614071573d6000803e3d6000fd5b5050602154602480546040516370a0823160e01b81526001600160a01b03918216600482015260009550921692506370a082319101602060405180830381865afa1580156140c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140e7919061a697565b90506140f4600182615d27565b5050565b60405160019060009061410d9060200161a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156141d757600080fd5b505af11580156141eb573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561424857600080fd5b505af115801561425c573d6000803e3d6000fd5b50506020546027546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a9593506132ce9286928992911690889060040161a79e565b6060601d805480602002602001604051908101604052809291908181526020016000905b8282101561277e5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561439657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116143435790505b505050505081525050815260200190600101906142d7565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561440a57600080fd5b505af115801561441e573d6000803e3d6000fd5b5050604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561448e57600080fd5b505af11580156144a2573d6000803e3d6000fd5b50506020546021546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101869052911660448201819052925063f45346dc9150606401612a26565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561455a57600080fd5b505af115801561456e573d6000803e3d6000fd5b5050604051630618f58760e51b81527f5d67094f000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156145de57600080fd5b505af11580156145f2573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526000602482015290821660448201529116925063f45346dc9150606401610709565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156146ae57600080fd5b505af11580156146c2573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561473257600080fd5b505af1158015614746573d6000803e3d6000fd5b50506020546026546040517ff45346dc00000000000000000000000000000000000000000000000000000000815260006004820152600160248201526001600160a01b0391821660448201529116925063f45346dc9150606401610709565b6060601c805480602002602001604051908101604052809291908181526020016000905b8282101561277e5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561488857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116148355790505b505050505081525050815260200190600101906147c9565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101561277e5783829060005260206000200180546148e39061a2b0565b80601f016020809104026020016040519081016040528092919081815260200182805461490f9061a2b0565b801561495c5780601f106149315761010080835404028352916020019161495c565b820191906000526020600020905b81548152906001019060200180831161493f57829003601f168201915b5050505050815260200190600101906148c4565b60085460009060ff1615614988575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015614a19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a3d919061a697565b1415905090565b604051600190600090614a599060200161a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f42c0407e0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b158015614b2357600080fd5b505af1158015614b37573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015614b9457600080fd5b505af1158015614ba8573d6000803e3d6000fd5b50506020546024546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a9593506132ce9286928992911690889060040161a79e565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614c5857600080fd5b505af1158015614c6c573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015614cdc57600080fd5b505af1158015614cf0573d6000803e3d6000fd5b50506020546040517f184b07930000000000000000000000000000000000000000000000000000000081526001600160a01b03909116925063184b0793915061070990600090602c9060040161a3ed565b6021546026546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015614d92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614db6919061a697565b9050614dc3600082615d27565b60255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614e1c57600080fd5b505af1158015614e30573d6000803e3d6000fd5b5050604051630618f58760e51b81527f42c0407e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015614ea057600080fd5b505af1158015614eb4573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810188905290821660448201529116925063f45346dc9150606401600060405180830381600087803b158015614f2c57600080fd5b505af1158015614f40573d6000803e3d6000fd5b50506021546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015614f93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614fb7919061a697565b905061123c600082615d27565b6000604051602001614fd59061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f42c0407e0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561509f57600080fd5b505af11580156150b3573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561511057600080fd5b505af1158015615124573d6000803e3d6000fd5b50506020546021546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca379450612450938793811692600192911690899060040161a82d565b60006040516020016151939061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561525d57600080fd5b505af1158015615271573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156152ce57600080fd5b505af11580156152e2573d6000803e3d6000fd5b50506020546021546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063c39aca37935061245092869216906001908690899060040161a82d565b60606015805480602002602001604051908101604052809291908181526020018280548015611d00576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611ce2575050505050905090565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156153f457600080fd5b505af1158015615408573d6000803e3d6000fd5b5050604051630618f58760e51b81527f5d67094f000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561547857600080fd5b505af115801561548c573d6000803e3d6000fd5b50506020546021546024546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550639d4ba465945061070993928316926000921690602c9060040161a882565b60006040516020016154fa9061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156155c457600080fd5b505af11580156155d8573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561563557600080fd5b505af1158015615649573d6000803e3d6000fd5b50506020546021546027546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca379450612450938793811692600192911690899060040161a82d565b60006040516020016156b89061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b15801561576657600080fd5b505af115801561577a573d6000803e3d6000fd5b5050604051630618f58760e51b81527f19c08f49000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156157ea57600080fd5b505af11580156157fe573d6000803e3d6000fd5b50506020546021546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a959350612450928692600092911690889060040161a79e565b60006040516020016158679061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b15801561591557600080fd5b505af1158015615929573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561599957600080fd5b505af11580156159ad573d6000803e3d6000fd5b50506020546021546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063c39aca3793506124509286921690600190600090899060040161a82d565b604051630618f58760e51b81527f42c0407e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015615a7357600080fd5b505af1158015615a87573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015615ae457600080fd5b505af1158015615af8573d6000803e3d6000fd5b50506020546021546024546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550639d4ba465945061070993928316926001921690602c9060040161a882565b6000604051602001615b669061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b158015615c1457600080fd5b505af1158015615c28573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015615c9857600080fd5b505af1158015615cac573d6000803e3d6000fd5b50506020546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063c39aca37935061245092869260009260019290911690899060040161a82d565b6000615d12619e49565b615d1d848483615da6565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b158015615d9257600080fd5b505afa15801561247e573d6000803e3d6000fd5b600080615db38584615e21565b9050615e166040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001615e0192919061a8b9565b60405160208183030381529060405285615e2d565b9150505b9392505050565b6000615e1a8383615e5b565b60c08101515160009015615e5157615e4a84848460c00151615e76565b9050615e1a565b615e4a848461601c565b6000615e678383616107565b615e1a83836020015184615e2d565b600080615e81616113565b90506000615e8f86836161e6565b90506000615ea6826060015183602001518561668c565b90506000615eb68383898961689e565b90506000615ec38261771b565b602081015181519192509060030b15615f3657898260400151604051602001615eed92919061a8db565b60408051601f19818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252615f2d9160040161a684565b60405180910390fd5b6000615f796040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a2000000000000000000000008152508360016178ea565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90615fcc90849060040161a684565b602060405180830381865afa158015615fe9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061600d919061a40f565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc9259061607190879060040161a684565b600060405180830381865afa15801561608e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526160b6919081019061aa15565b905060006160e482856040516020016160d092919061aa4a565b604051602081830303815290604052617aea565b90506001600160a01b038116615d1d578484604051602001615eed92919061aa79565b6140f482826000617afd565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c9061619a90849060040161ab24565b600060405180830381865afa1580156161b7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526161df919081019061ab6b565b9250505090565b6162186040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d90506162636040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b61626c85617c00565b6020820152600061627c86617fe5565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa1580156162be573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526162e6919081019061ab6b565b86838560200151604051602001616300949392919061abb4565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb119061635890859060040161a684565b600060405180830381865afa158015616375573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261639d919081019061ab6b565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f6906163e590849060040161acb8565b602060405180830381865afa158015616402573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616426919061a52d565b61643b5781604051602001615eed919061ad0a565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061648090849060040161ad9c565b600060405180830381865afa15801561649d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526164c5919081019061ab6b565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f69061650c90849060040161adee565b602060405180830381865afa158015616529573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061654d919061a52d565b156165e2576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061659790849060040161adee565b600060405180830381865afa1580156165b4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526165dc919081019061ab6b565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001616607919061ae40565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161663392919061aeac565b600060405180830381865afa158015616650573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616678919081019061ab6b565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816166a85790505090506040518060400160405280600481526020017f6772657000000000000000000000000000000000000000000000000000000000815250816000815181106167085761670861aed1565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061675c5761675c61aed1565b602002602001018190525084604051602001616778919061af00565b6040516020818303038152906040528160028151811061679a5761679a61aed1565b6020026020010181905250826040516020016167b6919061af6c565b604051602081830303815290604052816003815181106167d8576167d861aed1565b602002602001018190525060006167ee8261771b565b602080820151604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000818501908152825180840184526000808252908601528251808401909352905182529281019290925291925061687f9060408051808201825260008082526020918201528151808301909252845182528085019082015290618268565b6168945785604051602001615eed919061afad565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d90156168ee565b511590565b616a62578260200151156169aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401615f2d565b8260c0015115616a62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401615f2d565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081616a7b57905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616ad69061b03e565b935060ff1681518110616aeb57616aeb61aed1565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001616b3c919061b05d565b604051602081830303815290604052828280616b579061b03e565b935060ff1681518110616b6c57616b6c61aed1565b60200260200101819052506040518060400160405280600681526020017f6465706c6f790000000000000000000000000000000000000000000000000000815250828280616bb99061b03e565b935060ff1681518110616bce57616bce61aed1565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d65000000000000000000000000000000000000815250828280616c1b9061b03e565b935060ff1681518110616c3057616c3061aed1565b60200260200101819052508760200151828280616c4c9061b03e565b935060ff1681518110616c6157616c6161aed1565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e747261637450617468000000000000000000000000000000000000815250828280616cae9061b03e565b935060ff1681518110616cc357616cc361aed1565b602090810291909101015287518282616cdb8161b03e565b935060ff1681518110616cf057616cf061aed1565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280616d3d9061b03e565b935060ff1681518110616d5257616d5261aed1565b6020026020010181905250616d66466182c9565b8282616d718161b03e565b935060ff1681518110616d8657616d8661aed1565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280616dd39061b03e565b935060ff1681518110616de857616de861aed1565b602002602001018190525086828280616e009061b03e565b935060ff1681518110616e1557616e1561aed1565b6020908102919091010152855115616f3c5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f6465000000000000000000000060208201528282616e668161b03e565b935060ff1681518110616e7b57616e7b61aed1565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90616ecb90899060040161a684565b600060405180830381865afa158015616ee8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616f10919081019061ab6b565b8282616f1b8161b03e565b935060ff1681518110616f3057616f3061aed1565b60200260200101819052505b84602001511561700c5760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282616f858161b03e565b935060ff1681518110616f9a57616f9a61aed1565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280616fe79061b03e565b935060ff1681518110616ffc57616ffc61aed1565b60200260200101819052506171d3565b6170446168e98660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6170d75760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826170878161b03e565b935060ff168151811061709c5761709c61aed1565b60200260200101819052508460a001516040516020016170bc919061af00565b604051602081830303815290604052828280616fe79061b03e565b8460c0015115801561711a57506040808901518151808301835260008082526020918201528251808401909352815183529081019082015261711890511590565b155b156171d35760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828261715e8161b03e565b935060ff16815181106171735761717361aed1565b602002602001018190525061718788618369565b604051602001617197919061af00565b6040516020818303038152906040528282806171b29061b03e565b935060ff16815181106171c7576171c761aed1565b60200260200101819052505b6040808601518151808301835260008082526020918201528251808401909352815183529081019082015261720790511590565b61729c5760408051808201909152600b81527f2d2d72656c6179657249640000000000000000000000000000000000000000006020820152828261724a8161b03e565b935060ff168151811061725f5761725f61aed1565b6020026020010181905250846040015182828061727b9061b03e565b935060ff16815181106172905761729061aed1565b60200260200101819052505b6060850151156173bd5760408051808201909152600681527f2d2d73616c740000000000000000000000000000000000000000000000000000602082015282826172e58161b03e565b935060ff16815181106172fa576172fa61aed1565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015617369573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617391919081019061ab6b565b828261739c8161b03e565b935060ff16815181106173b1576173b161aed1565b60200260200101819052505b60e085015151156174645760408051808201909152600a81527f2d2d6761734c696d697400000000000000000000000000000000000000000000602082015282826174078161b03e565b935060ff168151811061741c5761741c61aed1565b60200260200101819052506174388560e00151600001516182c9565b82826174438161b03e565b935060ff16815181106174585761745861aed1565b60200260200101819052505b60e0850151602001511561750e5760408051808201909152600a81527f2d2d676173507269636500000000000000000000000000000000000000000000602082015282826174b18161b03e565b935060ff16815181106174c6576174c661aed1565b60200260200101819052506174e28560e00151602001516182c9565b82826174ed8161b03e565b935060ff16815181106175025761750261aed1565b60200260200101819052505b60e085015160400151156175b85760408051808201909152600e81527f2d2d6d61784665655065724761730000000000000000000000000000000000006020820152828261755b8161b03e565b935060ff16815181106175705761757061aed1565b602002602001018190525061758c8560e00151604001516182c9565b82826175978161b03e565b935060ff16815181106175ac576175ac61aed1565b60200260200101819052505b60e085015160600151156176625760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826176058161b03e565b935060ff168151811061761a5761761a61aed1565b60200260200101819052506176368560e00151606001516182c9565b82826176418161b03e565b935060ff16815181106176565761765661aed1565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156176805761768061a54f565b6040519080825280602002602001820160405280156176b357816020015b606081526020019060019003908161769e5790505b50905060005b8260ff168160ff16101561770c57838160ff16815181106176dc576176dc61aed1565b6020026020010151828260ff16815181106176f9576176f961aed1565b60209081029190910101526001016176b9565b5093505050505b949350505050565b6177426040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916177c89186910161b0c8565b600060405180830381865afa1580156177e5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261780d919081019061ab6b565b9050600061781b8683618e58565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161784b919061a1a2565b6000604051808303816000875af115801561786a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617892919081019061b10f565b805190915060030b158015906178ab5750602081015151155b80156178ba5750604081015151155b1561689457816000815181106178d2576178d261aed1565b6020026020010151604051602001615eed919061b1c5565b6060600061791f8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506179569082905b90618fad565b15617ab35760006179d3826179cd846179c76179998a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90618fd4565b90619036565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150617a37908290618fad565b15617aa157604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617a9e905b82906190bb565b90505b617aaa816190e1565b92505050615e1a565b8215617acc578484604051602001615eed92919061b3b1565b5050604080516020810190915260008152615e1a565b509392505050565b6000808251602084016000f09392505050565b8160a0015115617b0c57505050565b6000617b1984848461914a565b90506000617b268261771b565b602081015181519192509060030b158015617bc25750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617bc290604080518082018252600080825260209182015281518083019092528451825280850190820152617950565b15617bcf57505050505050565b60408201515115617bef578160400151604051602001615eed919061b458565b80604051602001615eed919061b4b6565b60606000617c358360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150617c9a905b8290618268565b15617d0957604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615e1a90617d049083906196e5565b6190e1565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617d6b905b829061976f565b600103617e3857604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617dd190617a97565b50604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615e1a90617d04905b83906190bb565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617e9790617c93565b15617fce57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290617eff908390619809565b905060008160018351617f12919061a807565b81518110617f2257617f2261aed1565b60200260200101519050617fc5617d04617f986040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528551825280860190820152906196e5565b95945050505050565b82604051602001615eed919061b521565b50919050565b6060600061801a8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061807c90617c93565b1561808a57615e1a816190e1565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526180e990617d64565b60010361815357604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615e1a90617d0490617e31565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526181b290617c93565b15617fce57604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061821a908390619809565b9050600181511115618256578060028251618235919061a807565b815181106182455761824561aed1565b602002602001015192505050919050565b5082604051602001615eed919061b521565b80518251600091111561827d57506000615d21565b815183516020850151600092916182939161a81a565b61829d919061a807565b9050826020015181036182b4576001915050615d21565b82516020840151819020912014905092915050565b606060006182d6836198ae565b600101905060008167ffffffffffffffff8111156182f6576182f661a54f565b6040519080825280601f01601f191660200182016040528015618320576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461832a57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e53454400000000000000000000000000000000000000000000818401908152855180870187528381528401929092528451808601909552518452908301526060916183f5905b8290619990565b1561843557505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618494906183ee565b156184d457505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618533906183ee565b1561857357505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526185d2906183ee565b806186375750604080518082018252601081527f47504c2d322e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618637906183ee565b1561867757505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526186d6906183ee565b8061873b5750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261873b906183ee565b1561877b57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526187da906183ee565b8061883f5750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261883f906183ee565b1561887f57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526188de906183ee565b806189435750604080518082018252601181527f4c47504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618943906183ee565b1561898357505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526189e2906183ee565b15618a2257505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618a81906183ee565b15618ac157505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618b20906183ee565b15618b6057505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618bbf906183ee565b15618bff57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e300000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618c5e906183ee565b15618c9e57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618cfd906183ee565b80618d625750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618d62906183ee565b15618da257505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e3100000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618e01906183ee565b15618e4157505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151615eed929060200161b5ff565b60608060005b8451811015618ee35781858281518110618e7a57618e7a61aed1565b6020026020010151604051602001618e9392919061aa4a565b604051602081830303815290604052915060018551618eb2919061a807565b8114618edb5781604051602001618ec9919061b768565b60405160208183030381529060405291505b600101618e5e565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081618efc5790505090508381600081518110618f2757618f2761aed1565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110618f7b57618f7b61aed1565b60200260200101819052508181600281518110618f9a57618f9a61aed1565b6020908102919091010152949350505050565b6020808301518351835192840151600093618fcb92918491906199a4565b14159392505050565b604080518082019091526000808252602082015260006190068460000151856020015185600001518660200151619ab5565b9050836020015181619018919061a807565b8451859061902790839061a807565b90525060208401525090919050565b604080518082019091526000808252602082015281518351101561905b575081615d21565b60208083015190840151600191146190825750815160208481015190840151829020919020145b80156190b35782518451859061909990839061a807565b90525082516020850180516190af90839061a81a565b9052505b509192915050565b60408051808201909152600080825260208201526190da838383619bd5565b5092915050565b60606000826000015167ffffffffffffffff8111156191025761910261a54f565b6040519080825280601f01601f19166020018201604052801561912c576020820181803683370190505b50905060006020820190506190da8185602001518660000151619c80565b60606000619156616113565b6040805160ff808252612000820190925291925060009190816020015b606081526020019060019003908161917357905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806191ce9061b03e565b935060ff16815181106191e3576191e361aed1565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001619234919061b7a9565b60405160208183030381529060405282828061924f9061b03e565b935060ff16815181106192645761926461aed1565b60200260200101819052506040518060400160405280600881526020017f76616c69646174650000000000000000000000000000000000000000000000008152508282806192b19061b03e565b935060ff16815181106192c6576192c661aed1565b6020026020010181905250826040516020016192e2919061af6c565b6040516020818303038152906040528282806192fd9061b03e565b935060ff16815181106193125761931261aed1565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e74726163740000000000000000000000000000000000000000000081525082828061935f9061b03e565b935060ff16815181106193745761937461aed1565b60200260200101819052506193898784619cfa565b82826193948161b03e565b935060ff16815181106193a9576193a961aed1565b6020908102919091010152855151156194555760408051808201909152600b81527f2d2d7265666572656e6365000000000000000000000000000000000000000000602082015282826193fb8161b03e565b935060ff16815181106194105761941061aed1565b6020026020010181905250619429866000015184619cfa565b82826194348161b03e565b935060ff16815181106194495761944961aed1565b60200260200101819052505b8560800151156194c35760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261949e8161b03e565b935060ff16815181106194b3576194b361aed1565b6020026020010181905250619529565b84156195295760408051808201909152601281527f2d2d726571756972655265666572656e63650000000000000000000000000000602082015282826195088161b03e565b935060ff168151811061951d5761951d61aed1565b60200260200101819052505b604086015151156195c55760408051808201909152600d81527f2d2d756e73616665416c6c6f7700000000000000000000000000000000000000602082015282826195738161b03e565b935060ff16815181106195885761958861aed1565b602002602001018190525085604001518282806195a49061b03e565b935060ff16815181106195b9576195b961aed1565b60200260200101819052505b85606001511561962f5760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261960e8161b03e565b935060ff16815181106196235761962361aed1565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561964d5761964d61a54f565b60405190808252806020026020018201604052801561968057816020015b606081526020019060019003908161966b5790505b50905060005b8260ff168160ff1610156196d957838160ff16815181106196a9576196a961aed1565b6020026020010151828260ff16815181106196c6576196c661aed1565b6020908102919091010152600101619686565b50979650505050505050565b604080518082019091526000808252602082015281518351101561970a575081615d21565b815183516020850151600092916197209161a81a565b61972a919061a807565b6020840151909150600190821461974b575082516020840151819020908220145b80156197665783518551869061976290839061a807565b9052505b50929392505050565b60008082600001516197938560000151866020015186600001518760200151619ab5565b61979d919061a81a565b90505b835160208501516197b1919061a81a565b81116190da57816197c18161b7ee565b92505082600001516197f88560200151836197dc919061a807565b86516197e8919061a807565b8386600001518760200151619ab5565b619802919061a81a565b90506197a0565b60606000619817848461976f565b61982290600161a81a565b67ffffffffffffffff81111561983a5761983a61a54f565b60405190808252806020026020018201604052801561986d57816020015b60608152602001906001900390816198585790505b50905060005b8151811015617ae257619889617d0486866190bb565b82828151811061989b5761989b61aed1565b6020908102919091010152600101619873565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106198f7577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310619923576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061994157662386f26fc10000830492506010015b6305f5e1008310619959576305f5e100830492506008015b612710831061996d57612710830492506004015b6064831061997f576064830492506002015b600a8310615d215760010192915050565b600061999c8383619d3a565b159392505050565b600080858411619aab5760208411619a5757600084156199ef5760016199cb86602061a807565b6199d690600861b808565b6199e190600261b906565b6199eb919061a807565b1990505b83518116856199fe898961a81a565b619a08919061a807565b805190935082165b818114619a4257878411619a2a5787945050505050617713565b83619a348161b912565b945050828451169050619a10565b619a4c878561a81a565b945050505050617713565b838320619a64858861a807565b619a6e908761a81a565b91505b858210619aa957848220808203619a9657619a8c868461a81a565b9350505050617713565b619aa160018461a807565b925050619a71565b505b5092949350505050565b60008381868511619bc05760208511619b6f5760008515619b01576001619add87602061a807565b619ae890600861b808565b619af390600261b906565b619afd919061a807565b1990505b84518116600087619b128b8b61a81a565b619b1c919061a807565b855190915083165b828114619b6157818610619b4957619b3c8b8b61a81a565b9650505050505050617713565b85619b538161b7ee565b965050838651169050619b24565b859650505050505050617713565b508383206000905b619b81868961a807565b8211619bbe57858320808203619b9d5783945050505050617713565b619ba860018561a81a565b9350508180619bb69061b7ee565b925050619b77565b505b619bca878761a81a565b979650505050505050565b60408051808201909152600080825260208201526000619c078560000151866020015186600001518760200151619ab5565b602080870180519186019190915251909150619c23908261a807565b835284516020860151619c36919061a81a565b8103619c455760008552619c77565b83518351619c53919061a81a565b85518690619c6290839061a807565b9052508351619c71908261a81a565b60208601525b50909392505050565b60208110619cb85781518352619c9760208461a81a565b9250619ca460208361a81a565b9150619cb160208261a807565b9050619c80565b6000198115619ce7576001619cce83602061a807565b619cda9061010061b906565b619ce4919061a807565b90505b9151835183169219169190911790915250565b60606000619d0884846161e6565b8051602080830151604051939450619d229390910161b929565b60405160208183030381529060405291505092915050565b8151815160009190811115619d4d575081515b6020808501519084015160005b83811015619e065782518251808214619dd6576000196020871015619db557600184619d8789602061a807565b619d91919061a81a565b619d9c90600861b808565b619da790600261b906565b619db1919061a807565b1990505b8181168382168181039114619dd3579750615d219650505050505050565b50505b619de160208661a81a565b9450619dee60208561a81a565b93505050602081619dff919061a81a565b9050619d5a565b5084518651616894919061b981565b610b678061b9a283390190565b61063a8061c50983390190565b61106f8061cb4383390190565b6120728061dbb283390190565b6040518060e00160405280606081526020016060815260200160608152602001600015158152602001600015158152602001600015158152602001619e8c619e91565b905290565b60405180610100016040528060001515815260200160001515815260200160608152602001600080191681526020016060815260200160608152602001600015158152602001619e8c6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b81811015619f435783516001600160a01b0316835260209384019390920191600101619f1c565b509095945050505050565b60005b83811015619f69578181015183820152602001619f51565b50506000910152565b60008151808452619f8a816020860160208601619f4e565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a09a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b8181101561a080577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261a06a848651619f72565b602095860195909450929092019160010161a030565b509197505050602094850194929092019150600101619fc6565b50929695505050505050565b600081518084526020840193506020830160005b8281101561a0fa5781517fffffffff000000000000000000000000000000000000000000000000000000001686526020958601959091019060010161a0ba565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a09a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516040875261a1706040880182619f72565b905060208201519150868103602088015261a18b818361a0a6565b96505050602093840193919091019060010161a12c565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a09a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845261a204858351619f72565b9450602093840193919091019060010161a1ca565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a09a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b038151168652602081015190506040602087015261a29a604087018261a0a6565b955050602093840193919091019060010161a241565b600181811c9082168061a2c457607f821691505b602082108103617fdf577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6001600160a01b0381541682526001600160a01b03600182015416602083015260028101546040830152600060038201608060608501526000815461a3418161a2b0565b806080880152600182166000811461a360576001811461a39a5761a3ce565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831660a089015260a082151560051b890101935061a3ce565b84600052602060002060005b8381101561a3c55781548a820160a0015260019091019060200161a3a6565b890160a0019450505b50919695505050505050565b602081526000615e1a602083018461a2fd565b6001600160a01b0383168152604060208201526000617713604083018461a2fd565b60006020828403121561a42157600080fd5b81516001600160a01b0381168114615e1a57600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff881660408301528660608301526003861061a4f2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a083015261a51360c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b60006020828403121561a53f57600080fd5b81518015158114615e1a57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b601f82111561123c57806000526020600020601f840160051c8101602085101561a5a55750805b601f840160051c820191505b81811015612a54576000815560010161a5b1565b815167ffffffffffffffff81111561a5df5761a5df61a54f565b61a5f38161a5ed845461a2b0565b8461a57e565b6020601f82116001811461a627576000831561a60f5750848201515b600019600385901b1c1916600184901b178455612a54565b600084815260208120601f198516915b8281101561a657578785015182556020948501946001909201910161a637565b508482101561a6755786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b602081526000615e1a6020830184619f72565b60006020828403121561a6a957600080fd5b5051919050565b602081526000615d2160208301600581527f68656c6c6f000000000000000000000000000000000000000000000000000000602082015260400190565b60a08152600061a70060a0830187619f72565b6001600160a01b03861660208401528460408401526001600160a01b03841660608401528281036080840152619bca81600581527f68656c6c6f000000000000000000000000000000000000000000000000000000602082015260400190565b600081516060845261a7756060850182619f72565b90506001600160a01b036020840151166020850152604083015160408501528091505092915050565b60808152600061a7b1608083018761a760565b8560208401526001600160a01b03851660408401528281036060840152619bca8185619f72565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115615d2157615d2161a7d8565b80820180821115615d2157615d2161a7d8565b60a08152600061a84060a083018861a760565b6001600160a01b03871660208401528560408401526001600160a01b0385166060840152828103608084015261a8768185619f72565b98975050505050505050565b6001600160a01b03851681528360208201526001600160a01b0383166040820152608060608201526000616894608083018461a2fd565b6001600160a01b03831681526040602082015260006177136040830184619f72565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161a91381601a850160208801619f4e565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161a95081601c840160208801619f4e565b01601c01949350505050565b6040516060810167ffffffffffffffff8111828210171561a97f5761a97f61a54f565b60405290565b60008067ffffffffffffffff84111561a9a05761a9a061a54f565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561a9cf5761a9cf61a54f565b60405283815290508082840185101561a9e757600080fd5b617ae2846020830185619f4e565b600082601f83011261aa0657600080fd5b615e1a8383516020850161a985565b60006020828403121561aa2757600080fd5b815167ffffffffffffffff81111561aa3e57600080fd5b615d1d8482850161a9f5565b6000835161aa5c818460208801619f4e565b83519083019061aa70818360208801619f4e565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161aab181601a850160208801619f4e565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161aaee816033840160208801619f4e565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000615e1a6080830184619f72565b60006020828403121561ab7d57600080fd5b815167ffffffffffffffff81111561ab9457600080fd5b8201601f8101841361aba557600080fd5b615d1d8482516020840161a985565b6000855161abc6818460208a01619f4e565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161ac00816001840160208a01619f4e565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161ac3e816002840160208901619f4e565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161ac80816002840160208801619f4e565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061accb6040830184619f72565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161ad4281601f850160208701619f4e565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061adaf6040830184619f72565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061ae016040830184619f72565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161ae78816014850160208701619f4e565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061aebf6040830185619f72565b8281036020840152615e168185619f72565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161af38816001850160208701619f4e565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161af7e818460208701619f4e565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161b03181604b850160208701619f4e565b91909101604b0192915050565b600060ff821660ff810361b0545761b05461a7d8565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161b0bb816029850160208701619f4e565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000615e1a6080830184619f72565b60006020828403121561b12157600080fd5b815167ffffffffffffffff81111561b13857600080fd5b82016060818503121561b14a57600080fd5b61b15261a95c565b81518060030b811461b16357600080fd5b8152602082015167ffffffffffffffff81111561b17f57600080fd5b61b18b8682850161a9f5565b602083015250604082015167ffffffffffffffff81111561b1ab57600080fd5b61b1b78682850161a9f5565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161b223816021850160208701619f4e565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161b40f816021850160208801619f4e565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161b44c81602e840160208801619f4e565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161b0bb816029850160208701619f4e565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161b514816022850160208701619f4e565b9190910160220192915050565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161b55981600e850160208701619f4e565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161b637816018850160208801619f4e565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161b67481601c840160208801619f4e565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161b77a818460208701619f4e565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161b7e181601c850160208701619f4e565b91909101601c0192915050565b6000600019820361b8015761b80161a7d8565b5060010190565b8082028115828204841417615d2157615d2161a7d8565b6001815b600184111561b85a5780850481111561b83e5761b83e61a7d8565b600184161561b84c57908102905b60019390931c92800261b823565b935093915050565b60008261b87157506001615d21565b8161b87e57506000615d21565b816001811461b894576002811461b89e5761b8ba565b6001915050615d21565b60ff84111561b8af5761b8af61a7d8565b50506001821b615d21565b5060208310610133831016604e8410600b841016171561b8dd575081810a615d21565b61b8ea600019848461b81f565b806000190482111561b8fe5761b8fe61a7d8565b029392505050565b6000615e1a838361b862565b60008161b9215761b92161a7d8565b506000190190565b6000835161b93b818460208801619f4e565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161b975816001840160208801619f4e565b01600101949350505050565b81810360008312801583831316838312821617156190da576190da61a7d856fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea2646970667358221220c069e4cb3e16bcddc5b07d6ba4019a062fbae92d695877ad19f66fc9ac6047fd64736f6c634300081a00336080604052348015600f57600080fd5b5061061b8061001f6000396000f3fe60806040526004361061002a5760003560e01c80635bcfd61614610033578063c9028a361461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e366004610151565b610073565b34801561005f57600080fd5b5061003161006e36600461020e565b6100ee565b6060811561008a576100878284018461027f565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610375565b6100c560408a0160208b016103e1565b896040013533866040516100de96959493929190610445565b60405180910390a1505050505050565b7fd75bb509c8f32a725aac99ac5c4541060dbfb889a3aca8314d6f00395618c4c48160405161011d9190610507565b60405180910390a150565b803573ffffffffffffffffffffffffffffffffffffffff8116811461014c57600080fd5b919050565b60008060008060006080868803121561016957600080fd5b853567ffffffffffffffff81111561018057600080fd5b86016060818903121561019257600080fd5b94506101a060208701610128565b935060408601359250606086013567ffffffffffffffff8111156101c357600080fd5b8601601f810188136101d457600080fd5b803567ffffffffffffffff8111156101eb57600080fd5b8860208284010111156101fd57600080fd5b959894975092955050506020019190565b60006020828403121561022057600080fd5b813567ffffffffffffffff81111561023757600080fd5b82016080818503121561024957600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561029157600080fd5b813567ffffffffffffffff8111156102a857600080fd5b8201601f810184136102b957600080fd5b803567ffffffffffffffff8111156102d3576102d3610250565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033f5761033f610250565b60405281815282820160200186101561035757600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126103aa57600080fd5b83018035915067ffffffffffffffff8211156103c557600080fd5b6020019150368190038213156103da57600080fd5b9250929050565b6000602082840312156103f357600080fd5b61024982610128565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60a08152600061045960a08301888a6103fc565b73ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff851660608401528281036080840152835180825260005b818110156104c3576020818701810151848301820152016104a7565b5060006020828401015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011683010192505050979650505050505050565b6020815273ffffffffffffffffffffffffffffffffffffffff61052983610128565b16602082015273ffffffffffffffffffffffffffffffffffffffff61055060208401610128565b166040820152600080604084013590508060608401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261059c57600080fd5b830160208101903567ffffffffffffffff8111156105b957600080fd5b8036038213156105c857600080fd5b6080808501526105dc60a0850182846103fc565b9594505050505056fea264697066735822122097b135946b5f8ffb91b019442462dc27864bb547c0a533c3cc3e01dd4abecc7964736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea2646970667358221220eaa287ea22d82335c1d97ef661cb17f1296902daa41cca34de107966248e954364736f6c634300081a003360c060405234801561001057600080fd5b5060405161207238038061207283398101604081905261002f916101f0565b6001600160a01b038216158061004c57506001600160a01b038116155b1561006a5760405163d92e233d60e01b815260040160405180910390fd5b60066100768982610342565b5060076100838882610342565b506008805460ff191660ff881617905560808590528360028111156100aa576100aa610400565b60a08160028111156100be576100be610400565b905250600192909255600080546001600160a01b039283166001600160a01b0319909116179055600880549190921661010002610100600160a81b0319909116179055506104169350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261013357600080fd5b81516001600160401b0381111561014c5761014c61010c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561017a5761017a61010c565b60405281815283820160200185101561019257600080fd5b60005b828110156101b157602081860181015183830182015201610195565b506000918101602001919091529392505050565b8051600381106101d457600080fd5b919050565b80516001600160a01b03811681146101d457600080fd5b600080600080600080600080610100898b03121561020d57600080fd5b88516001600160401b0381111561022357600080fd5b61022f8b828c01610122565b60208b015190995090506001600160401b0381111561024d57600080fd5b6102598b828c01610122565b975050604089015160ff8116811461027057600080fd5b60608a0151909650945061028660808a016101c5565b60a08a0151909450925061029c60c08a016101d9565b91506102aa60e08a016101d9565b90509295985092959890939650565b600181811c908216806102cd57607f821691505b6020821081036102ed57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561033d57806000526020600020601f840160051c8101602085101561031a5750805b601f840160051c820191505b8181101561033a5760008155600101610326565b50505b505050565b81516001600160401b0381111561035b5761035b61010c565b61036f8161036984546102b9565b846102f3565b6020601f8211600181146103a3576000831561038b5750848201515b600019600385901b1c1916600184901b17845561033a565b600084815260208120601f198516915b828110156103d357878501518255602094850194600190920191016103b3565b50848210156103f15786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a051611c1b61045760003960006103440152600081816102f001528181610bdc01528181610ce201528181610efe01526110040152611c1b6000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c806395d89b41116100f9578063ccc7759911610097578063eddeb12311610071578063eddeb12314610461578063f2441b3214610474578063f687d12a14610494578063fc5fecd5146104a757600080fd5b8063ccc77599146103d4578063d9eeebed146103e7578063dd62ed3e1461041b57600080fd5b8063b84c8246116100d3578063b84c824614610386578063c47f00271461039b578063c7012626146103ae578063c835d7cc146103c157600080fd5b806395d89b4114610337578063a3413d031461033f578063a9059cbb1461037357600080fd5b80633ce4a5bc116101665780634d8943bb116101405780634d8943bb146102ac57806370a08231146102b557806385e1f4d0146102eb5780638b851b951461031257600080fd5b80633ce4a5bc1461024657806342966c681461028657806347e7ef241461029957600080fd5b806318160ddd1161019757806318160ddd1461021657806323b872dd1461021e578063313ce5671461023157600080fd5b806306fdde03146101be578063091d2788146101dc578063095ea7b3146101f3575b600080fd5b6101c66104ba565b6040516101d39190611648565b60405180910390f35b6101e560015481565b6040519081526020016101d3565b610206610201366004611687565b61054c565b60405190151581526020016101d3565b6005546101e5565b61020661022c3660046116b3565b610563565b60085460405160ff90911681526020016101d3565b61026173735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d3565b6102066102943660046116f4565b6105fa565b6102066102a7366004611687565b61060e565b6101e560025481565b6101e56102c336600461170d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6101e57f000000000000000000000000000000000000000000000000000000000000000081565b60085461026190610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6101c6610767565b6103667f000000000000000000000000000000000000000000000000000000000000000081565b6040516101d3919061172a565b610206610381366004611687565b610776565b610399610394366004611832565b610783565b005b6103996103a9366004611832565b6107e0565b6102066103bc366004611883565b610839565b6103996103cf36600461170d565b610988565b6103996103e236600461170d565b610a9c565b6103ef610bb0565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101d3565b6101e56104293660046118dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205490565b61039961046f3660046116f4565b610dce565b6000546102619073ffffffffffffffffffffffffffffffffffffffff1681565b6103996104a23660046116f4565b610e50565b6103ef6104b53660046116f4565b610ed2565b6060600680546104c990611915565b80601f01602080910402602001604051908101604052809291908181526020018280546104f590611915565b80156105425780601f1061051757610100808354040283529160200191610542565b820191906000526020600020905b81548152906001019060200180831161052557829003601f168201915b5050505050905090565b60006105593384846110ee565b5060015b92915050565b60006105708484846111f7565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460209081526040808320338452909152902054828110156105db576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105ef85336105ea8685611997565b6110ee565b506001949350505050565b600061060633836113b2565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab1480159061064c575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156106755750600854610100900473ffffffffffffffffffffffffffffffffffffffff163314155b156106ac576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106b683836114f4565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526107569186906119aa565b60405180910390a250600192915050565b6060600780546104c990611915565b60006105593384846111f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab146107d0576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60076107dc8282611a1b565b5050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461082d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60066107dc8282611a1b565b6000806000610846610bb0565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156108d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fc9190611b34565b610932576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61093c33856113b2565b60025460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161097591899189918791611b56565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146109d5576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a22576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610ae9576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610b36576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c679190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610cb6576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d699190611ba2565b905080600003610da5576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060025460015483610db89190611bbb565b610dc29190611bd2565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e1b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610a91565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e9d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610f65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f899190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610fd8576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015611067573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108b9190611ba2565b9050806000036110c7576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000906110d78784611bbb565b6110e19190611bd2565b9296929550919350505050565b73ffffffffffffffffffffffffffffffffffffffff831661113b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611188576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611244576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611291576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040902054818110156112f1576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112fb8282611997565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260036020526040808220939093559085168152908120805484929061133e908490611bd2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113a491815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff82166113ff576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260409020548181101561145f576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114698282611997565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260036020526040812091909155600580548492906114a4908490611997565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016111ea565b73ffffffffffffffffffffffffffffffffffffffff8216611541576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008282546115539190611bd2565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805483929061158d908490611bd2565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561160a576020818501810151868301820152016115ee565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061165b60208301846115e4565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461168457600080fd5b50565b6000806040838503121561169a57600080fd5b82356116a581611662565b946020939093013593505050565b6000806000606084860312156116c857600080fd5b83356116d381611662565b925060208401356116e381611662565b929592945050506040919091013590565b60006020828403121561170657600080fd5b5035919050565b60006020828403121561171f57600080fd5b813561165b81611662565b6020810160038310611765577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff8411156117b5576117b561176b565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff821117156118025761180261176b565b60405283815290508082840185101561181a57600080fd5b83836020830137600060208583010152509392505050565b60006020828403121561184457600080fd5b813567ffffffffffffffff81111561185b57600080fd5b8201601f8101841361186c57600080fd5b61187b8482356020840161179a565b949350505050565b6000806040838503121561189657600080fd5b823567ffffffffffffffff8111156118ad57600080fd5b8301601f810185136118be57600080fd5b6118cd8582356020840161179a565b95602094909401359450505050565b600080604083850312156118ef57600080fd5b82356118fa81611662565b9150602083013561190a81611662565b809150509250929050565b600181811c9082168061192957607f821691505b602082108103611962577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561055d5761055d611968565b6040815260006119bd60408301856115e4565b90508260208301529392505050565b601f821115611a1657806000526020600020601f840160051c810160208510156119f35750805b601f840160051c820191505b81811015611a1357600081556001016119ff565b50505b505050565b815167ffffffffffffffff811115611a3557611a3561176b565b611a4981611a438454611915565b846119cc565b6020601f821160018114611a9b5760008315611a655750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611a13565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015611ae95787850151825560209485019460019092019101611ac9565b5084821015611b2557868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b600060208284031215611b4657600080fd5b8151801515811461165b57600080fd5b608081526000611b6960808301876115e4565b6020830195909552506040810192909252606090910152919050565b600060208284031215611b9757600080fd5b815161165b81611662565b600060208284031215611bb457600080fd5b5051919050565b808202811582820484141761055d5761055d611968565b8082018082111561055d5761055d61196856fea26469706673582212202a06c5d72036d88c206ff2bfdd016b3ce8555bc0090e8bb5487bc61ea043732b64736f6c634300081a0033a2646970667358221220076d6099d381c9dcb384cc42228e961410a0e6b550a6dcfea74080e545716fd864736f6c634300081a0033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061fc598061003c6000396000f3fe608060405234801561001057600080fd5b506004361061034c5760003560e01c806385226c81116101bd578063c8814d2e116100f9578063eab7674e116100a2578063ef2b53941161007c578063ef2b539414610542578063f1d98f1b1461054a578063fa7626d414610552578063fb339a1c1461055f57600080fd5b8063eab7674e1461052a578063eb78bd7d14610532578063ec294d9f1461053a57600080fd5b8063e09bc659116100d3578063e09bc659146104e5578063e20c9f71146104ed578063e63ab1e9146104f557600080fd5b8063c8814d2e146104cd578063ca26929c146104d5578063cf2c3d1d146104dd57600080fd5b8063996b767511610166578063b5508aa911610140578063b5508aa9146104a5578063b936be8c14610443578063ba414fa6146104ad578063c35cb5e4146104c557600080fd5b8063996b76751461048d5780639c9acd5d14610495578063b0464fdc1461049d57600080fd5b8063916a17c611610197578063916a17c61461047057806396d9d8761461048557806397f7661f1461044357600080fd5b806385226c811461044b578063884660a314610460578063890a2d671461046857600080fd5b80633e5e3c231161028c5780635cec7db5116102355780636efa04b51161020f5780636efa04b51461042b5780637cec29b0146104335780637f924c4e1461043b578063828d267c1461044357600080fd5b80635cec7db5146104065780636163f8ef1461040e57806366d9a9a01461041657600080fd5b806351336fb01161026657806351336fb0146103f657806358c9987f146103fe5780635b4c90e1146103a157600080fd5b80633e5e3c23146103de5780633f7286f4146103e657806348f4fd07146103ee57600080fd5b806327820625116102f95780632ade3880116102d35780632ade3880146103b1578063339bd828146103c65780633626c616146103ce5780633ab5b199146103d657600080fd5b806327820625146103995780632948df41146103a15780632acb21b4146103a957600080fd5b80631c785a141161032a5780631c785a141461036b5780631ed7831c146103735780632468bc0f1461039157600080fd5b8063084fafab146103515780630a9254e41461035b57806314b7a6da14610363575b600080fd5b610359610567565b005b61035961073d565b610359611241565b610359611391565b61037b611ca8565b6040516103889190619f02565b60405180910390f35b610359611d0a565b6103596121d5565b61035961229d565b610359612486565b6103b9612645565b6040516103889190619f9e565b610359612787565b6103596128d3565b610359612a5b565b61037b612c0c565b61037b612c6c565b610359612ccc565b610359612e17565b610359612f62565b610359613117565b610359613305565b61041e613453565b604051610388919061a104565b6103596135d5565b610359613979565b610359613b64565b610359613b9d565b610453613d49565b604051610388919061a1a2565b610359613e19565b6103596140f8565b6104786142b3565b604051610388919061a219565b6103596143ae565b610359614501565b610359614655565b6104786147a5565b6104536148a0565b6104b5614970565b6040519015158152602001610388565b610359614a44565b610359614bff565b610359614d41565b610359614fc4565b610359615182565b61037b61533b565b61051c7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b604051908152602001610388565b61035961539b565b6103596154e9565b6103596156a7565b610359615856565b610359615a07565b601f546104b59060ff1681565b610359615b55565b602480546040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190529281018390526044810183905260648101929092526001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156105f657600080fd5b505af115801561060a573d6000803e3d6000fd5b505050507fd75bb509c8f32a725aac99ac5c4541060dbfb889a3aca8314d6f00395618c4c4602c60405161063e919061a3da565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b1580156106a057600080fd5b505af11580156106b4573d6000803e3d6000fd5b50506020546024546040517f184b07930000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063184b079393506107099290911690602c9060040161a3ed565b600060405180830381600087803b15801561072357600080fd5b505af1158015610737573d6000803e3d6000fd5b50505050565b602580547fffffffffffffffffffffffff000000000000000000000000000000000000000090811630179091556026805490911661123417905560405161078390619e15565b604051809103906000f08015801561079f573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600f81527f476174657761795a45564d2e736f6c000000000000000000000000000000000060208201526025549151602481019390935292166044820152610883919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc95500000000000000000000000000000000000000000000000000000000179052615d08565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b039384168102919091179182905560208054919092049092167fffffffffffffffffffffffff000000000000000000000000000000000000000090921682178155604080517f2722feee0000000000000000000000000000000000000000000000000000000081529051632722feee926004808401939192918290030181865afa158015610945573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610969919061a40f565b602780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516109ad90619e22565b604051809103906000f0801580156109c9573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161781556027546040517f06447d5600000000000000000000000000000000000000000000000000000000815292166004830152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d569101600060405180830381600087803b158015610a6557600080fd5b505af1158015610a79573d6000803e3d6000fd5b505050506000806000604051610a8e90619e2f565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610aca573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602054604051601293600193849360009391921690610b2090619e3c565b610b2f9695949392919061a438565b604051809103906000f080158015610b4b573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556023546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b158015610be257600080fd5b505af1158015610bf6573d6000803e3d6000fd5b50506023546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b158015610c6057600080fd5b505af1158015610c74573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610cf457600080fd5b505af1158015610d08573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610d5d57600080fd5b505af1158015610d71573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610de5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e09919061a52d565b506021546025546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116906347e7ef24906044016020604051808303816000875af1158015610e7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9e919061a52d565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610efd57600080fd5b505af1158015610f11573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610f8757600080fd5b505af1158015610f9b573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116925063095ea7b391506044016020604051808303816000875af115801561100f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611033919061a52d565b50602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b15801561108557600080fd5b505af1158015611099573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af115801561110d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611131919061a52d565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561119057600080fd5b505af11580156111a4573d6000803e3d6000fd5b5050604080516080810182526025546001600160a01b0390811682526000602080840182815260018587019081528651928301909652918152606084018190528351602c80549185167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161781559251602d8054919095169116179092559251602e55909350909150602f9061123c908261a5c5565b505050565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561129a57600080fd5b505af11580156112ae573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561131e57600080fd5b505af1158015611332573d6000803e3d6000fd5b50506020546021546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260016024820152600060448201529116925063f45346dc9150606401610709565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156113ea57600080fd5b505af11580156113fe573d6000803e3d6000fd5b5050602754604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506114e9919060040161a684565b600060405180830381600087803b15801561150357600080fd5b505af1158015611517573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561156b57600080fd5b505af115801561157f573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156115dc57600080fd5b505af11580156115f0573d6000803e3d6000fd5b5050602754604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506116db919060040161a684565b600060405180830381600087803b1580156116f557600080fd5b505af1158015611709573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561175d57600080fd5b505af1158015611771573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156117ce57600080fd5b505af11580156117e2573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561183657600080fd5b505af115801561184a573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd93c066500000000000000000000000000000000000000000000000000000000600482015260019250737109709ecfa91a80626ff3989d68f67f5b1dd12d915063c31eb0e090602401600060405180830381600087803b1580156118bd57600080fd5b505af11580156118d1573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561192e57600080fd5b505af1158015611942573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810187905290821660448201529116925063f45346dc9150606401600060405180830381600087803b1580156119ba57600080fd5b505af11580156119ce573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015611a2b57600080fd5b505af1158015611a3f573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611a9357600080fd5b505af1158015611aa7573d6000803e3d6000fd5b50506021546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a08231906024015b602060405180830381865afa158015611afb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b1f919061a697565b9050611b2c600082615d27565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611b8557600080fd5b505af1158015611b99573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810188905290821660448201529116925063f45346dc9150606401600060405180830381600087803b158015611c1157600080fd5b505af1158015611c25573d6000803e3d6000fd5b50506021546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611c78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9c919061a697565b905061123c8382615d27565b60606016805480602002602001604051908101604052809291908181526020018280548015611d0057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611ce2575b5050505050905090565b6022546027546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611d5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d7f919061a697565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015611dd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df5919061a697565b6024546040519192506001600160a01b03163190600090611e189060200161a6b0565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611f0657600080fd5b505af1158015611f1a573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e9450611f7593506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054611fa5936001600160a01b03928316928c92169061a6ed565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561200657600080fd5b505af115801561201a573d6000803e3d6000fd5b50506020546024546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a9593506120719286928c92911690889060040161a79e565b600060405180830381600087803b15801561208b57600080fd5b505af115801561209f573d6000803e3d6000fd5b50506022546027546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156120f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612116919061a697565b905061212b612125888861a807565b82615d27565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801561217c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121a0919061a697565b90506121ac8682615d27565b6121cb6121b9898761a81a565b6024546001600160a01b031631615d27565b5050505050505050565b604051630618f58760e51b81527f42c0407e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561224157600080fd5b505af1158015612255573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401610686565b60006040516020016122ae9061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b15801561235c57600080fd5b505af1158015612370573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156123e057600080fd5b505af11580156123f4573d6000803e3d6000fd5b50506020546024546040517fbcf7f32b0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063bcf7f32b935061245092869260009260019290911690899060040161a82d565b600060405180830381600087803b15801561246a57600080fd5b505af115801561247e573d6000803e3d6000fd5b505050505050565b60006040516020016124979061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f42c0407e0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561256157600080fd5b505af1158015612575573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015b600060405180830381600087803b1580156125d357600080fd5b505af11580156125e7573d6000803e3d6000fd5b50506020546021546024546040517fbcf7f32b0000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063bcf7f32b9450612450938793811692600192911690899060040161a82d565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561277e57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156127675783829060005260206000200180546126da9061a2b0565b80601f01602080910402602001604051908101604052809291908181526020018280546127069061a2b0565b80156127535780601f1061272857610100808354040283529160200191612753565b820191906000526020600020905b81548152906001019060200180831161273657829003601f168201915b5050505050815260200190600101906126bb565b505050508152505081526020019060010190612669565b50505050905090565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156127e057600080fd5b505af11580156127f4573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561286457600080fd5b505af1158015612878573d6000803e3d6000fd5b50506020546021546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450639d4ba46593506107099290911690600190600090602c9060040161a882565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561292f57600080fd5b505af1158015612943573d6000803e3d6000fd5b5050604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156129b357600080fd5b505af11580156129c7573d6000803e3d6000fd5b50506020546021546027546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810187905290821660448201529116925063f45346dc91506064015b600060405180830381600087803b158015612a4057600080fd5b505af1158015612a54573d6000803e3d6000fd5b5050505050565b6000604051602001612a6c9061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b158015612b1a57600080fd5b505af1158015612b2e573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015612b9e57600080fd5b505af1158015612bb2573d6000803e3d6000fd5b50506020546021546040517fbcf7f32b0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063bcf7f32b93506124509286921690600190600090899060040161a82d565b60606018805480602002602001604051908101604052809291908181526020018280548015611d00576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611ce2575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015611d00576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611ce2575050505050905090565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612d2557600080fd5b505af1158015612d39573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015612da957600080fd5b505af1158015612dbd573d6000803e3d6000fd5b50506020546024546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450639d4ba465935061070992600092600192911690602c9060040161a882565b604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015612e8357600080fd5b505af1158015612e97573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015612ef457600080fd5b505af1158015612f08573d6000803e3d6000fd5b50506020546021546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450639d4ba465935061070992909116906001908590602c9060040161a882565b6000604051602001612f739061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b15801561302157600080fd5b505af1158015613035573d6000803e3d6000fd5b5050604051630618f58760e51b81527f5d67094f000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156130a557600080fd5b505af11580156130b9573d6000803e3d6000fd5b50506020546021546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca379450612450938793811692600092911690899060040161a82d565b60405160019060009061312c9060200161a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156131f657600080fd5b505af115801561320a573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561326757600080fd5b505af115801561327b573d6000803e3d6000fd5b50506020546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0390911692506321501a9591506132ce90849087908590889060040161a79e565b600060405180830381600087803b1580156132e857600080fd5b505af11580156132fc573d6000803e3d6000fd5b50505050505050565b604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561337157600080fd5b505af1158015613385573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156133e257600080fd5b505af11580156133f6573d6000803e3d6000fd5b50506020546021546027546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550639d4ba465945061070993928316926001921690602c9060040161a882565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561277e57838290600052602060002090600202016040518060400160405290816000820180546134aa9061a2b0565b80601f01602080910402602001604051908101604052809291908181526020018280546134d69061a2b0565b80156135235780601f106134f857610100808354040283529160200191613523565b820191906000526020600020905b81548152906001019060200180831161350657829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156135bd57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161356a5790505b50505050508152505081526020019060010190613477565b602154602480546040516370a0823160e01b81526001600160a01b03918216600482015260009391909116916370a082319101602060405180830381865afa158015613625573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613649919061a697565b9050613656600082615d27565b60006040516020016136679061a6b0565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561375557600080fd5b505af1158015613769573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e94506137c493506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526027546020546137f5936001600160a01b0392831692600192169061a6ed565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561385657600080fd5b505af115801561386a573d6000803e3d6000fd5b50506020546021546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca3794506138c8938793811692600192911690899060040161a82d565b600060405180830381600087803b1580156138e257600080fd5b505af11580156138f6573d6000803e3d6000fd5b5050602154602480546040516370a0823160e01b81526001600160a01b03918216600482015260009550921692506370a082319101602060405180830381865afa158015613948573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061396c919061a697565b9050610737600182615d27565b600060405160200161398a9061a6b0565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015613a7857600080fd5b505af1158015613a8c573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e9450613ae793506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054613b18936001600160a01b0392831692600192169061a6ed565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024016125b9565b6021546026546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401611ade565b6000604051602001613bae9061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b158015613c5c57600080fd5b505af1158015613c70573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015613ce057600080fd5b505af1158015613cf4573d6000803e3d6000fd5b50506020546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0390911692506321501a959150612450908490600190600090889060040161a79e565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101561277e578382906000526020600020018054613d8c9061a2b0565b80601f0160208091040260200160405190810160405280929190818152602001828054613db89061a2b0565b8015613e055780601f10613dda57610100808354040283529160200191613e05565b820191906000526020600020905b815481529060010190602001808311613de857829003601f168201915b505050505081526020019060010190613d6d565b602154602480546040516370a0823160e01b81526001600160a01b03918216600482015260009391909116916370a082319101602060405180830381865afa158015613e69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e8d919061a697565b9050613e9a600082615d27565b602480546040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190529281018390526044810183905260648101929092526001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015613f2957600080fd5b505af1158015613f3d573d6000803e3d6000fd5b505050507fd75bb509c8f32a725aac99ac5c4541060dbfb889a3aca8314d6f00395618c4c4602c604051613f71919061a3da565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613fd257600080fd5b505af1158015613fe6573d6000803e3d6000fd5b50506020546021546024546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550639d4ba465945061404393928316926001921690602c9060040161a882565b600060405180830381600087803b15801561405d57600080fd5b505af1158015614071573d6000803e3d6000fd5b5050602154602480546040516370a0823160e01b81526001600160a01b03918216600482015260009550921692506370a082319101602060405180830381865afa1580156140c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140e7919061a697565b90506140f4600182615d27565b5050565b60405160019060009061410d9060200161a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156141d757600080fd5b505af11580156141eb573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561424857600080fd5b505af115801561425c573d6000803e3d6000fd5b50506020546027546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a9593506132ce9286928992911690889060040161a79e565b6060601d805480602002602001604051908101604052809291908181526020016000905b8282101561277e5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561439657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116143435790505b505050505081525050815260200190600101906142d7565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561440a57600080fd5b505af115801561441e573d6000803e3d6000fd5b5050604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561448e57600080fd5b505af11580156144a2573d6000803e3d6000fd5b50506020546021546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101869052911660448201819052925063f45346dc9150606401612a26565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561455a57600080fd5b505af115801561456e573d6000803e3d6000fd5b5050604051630618f58760e51b81527f5d67094f000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156145de57600080fd5b505af11580156145f2573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526000602482015290821660448201529116925063f45346dc9150606401610709565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156146ae57600080fd5b505af11580156146c2573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561473257600080fd5b505af1158015614746573d6000803e3d6000fd5b50506020546026546040517ff45346dc00000000000000000000000000000000000000000000000000000000815260006004820152600160248201526001600160a01b0391821660448201529116925063f45346dc9150606401610709565b6060601c805480602002602001604051908101604052809291908181526020016000905b8282101561277e5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561488857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116148355790505b505050505081525050815260200190600101906147c9565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101561277e5783829060005260206000200180546148e39061a2b0565b80601f016020809104026020016040519081016040528092919081815260200182805461490f9061a2b0565b801561495c5780601f106149315761010080835404028352916020019161495c565b820191906000526020600020905b81548152906001019060200180831161493f57829003601f168201915b5050505050815260200190600101906148c4565b60085460009060ff1615614988575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015614a19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a3d919061a697565b1415905090565b604051600190600090614a599060200161a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f42c0407e0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b158015614b2357600080fd5b505af1158015614b37573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015614b9457600080fd5b505af1158015614ba8573d6000803e3d6000fd5b50506020546024546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a9593506132ce9286928992911690889060040161a79e565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614c5857600080fd5b505af1158015614c6c573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015614cdc57600080fd5b505af1158015614cf0573d6000803e3d6000fd5b50506020546040517f184b07930000000000000000000000000000000000000000000000000000000081526001600160a01b03909116925063184b0793915061070990600090602c9060040161a3ed565b6021546026546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015614d92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614db6919061a697565b9050614dc3600082615d27565b60255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614e1c57600080fd5b505af1158015614e30573d6000803e3d6000fd5b5050604051630618f58760e51b81527f42c0407e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015614ea057600080fd5b505af1158015614eb4573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810188905290821660448201529116925063f45346dc9150606401600060405180830381600087803b158015614f2c57600080fd5b505af1158015614f40573d6000803e3d6000fd5b50506021546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015614f93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614fb7919061a697565b905061123c600082615d27565b6000604051602001614fd59061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f42c0407e0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561509f57600080fd5b505af11580156150b3573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561511057600080fd5b505af1158015615124573d6000803e3d6000fd5b50506020546021546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca379450612450938793811692600192911690899060040161a82d565b60006040516020016151939061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561525d57600080fd5b505af1158015615271573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156152ce57600080fd5b505af11580156152e2573d6000803e3d6000fd5b50506020546021546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063c39aca37935061245092869216906001908690899060040161a82d565b60606015805480602002602001604051908101604052809291908181526020018280548015611d00576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611ce2575050505050905090565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156153f457600080fd5b505af1158015615408573d6000803e3d6000fd5b5050604051630618f58760e51b81527f5d67094f000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561547857600080fd5b505af115801561548c573d6000803e3d6000fd5b50506020546021546024546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550639d4ba465945061070993928316926000921690602c9060040161a882565b60006040516020016154fa9061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156155c457600080fd5b505af11580156155d8573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561563557600080fd5b505af1158015615649573d6000803e3d6000fd5b50506020546021546027546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca379450612450938793811692600192911690899060040161a82d565b60006040516020016156b89061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b15801561576657600080fd5b505af115801561577a573d6000803e3d6000fd5b5050604051630618f58760e51b81527f19c08f49000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156157ea57600080fd5b505af11580156157fe573d6000803e3d6000fd5b50506020546021546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a959350612450928692600092911690889060040161a79e565b60006040516020016158679061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b15801561591557600080fd5b505af1158015615929573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561599957600080fd5b505af11580156159ad573d6000803e3d6000fd5b50506020546021546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063c39aca3793506124509286921690600190600090899060040161a82d565b604051630618f58760e51b81527f42c0407e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015615a7357600080fd5b505af1158015615a87573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015615ae457600080fd5b505af1158015615af8573d6000803e3d6000fd5b50506020546021546024546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550639d4ba465945061070993928316926001921690602c9060040161a882565b6000604051602001615b669061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b158015615c1457600080fd5b505af1158015615c28573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015615c9857600080fd5b505af1158015615cac573d6000803e3d6000fd5b50506020546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063c39aca37935061245092869260009260019290911690899060040161a82d565b6000615d12619e49565b615d1d848483615da6565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b158015615d9257600080fd5b505afa15801561247e573d6000803e3d6000fd5b600080615db38584615e21565b9050615e166040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001615e0192919061a8b9565b60405160208183030381529060405285615e2d565b9150505b9392505050565b6000615e1a8383615e5b565b60c08101515160009015615e5157615e4a84848460c00151615e76565b9050615e1a565b615e4a848461601c565b6000615e678383616107565b615e1a83836020015184615e2d565b600080615e81616113565b90506000615e8f86836161e6565b90506000615ea6826060015183602001518561668c565b90506000615eb68383898961689e565b90506000615ec38261771b565b602081015181519192509060030b15615f3657898260400151604051602001615eed92919061a8db565b60408051601f19818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252615f2d9160040161a684565b60405180910390fd5b6000615f796040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a2000000000000000000000008152508360016178ea565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90615fcc90849060040161a684565b602060405180830381865afa158015615fe9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061600d919061a40f565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc9259061607190879060040161a684565b600060405180830381865afa15801561608e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526160b6919081019061aa15565b905060006160e482856040516020016160d092919061aa4a565b604051602081830303815290604052617aea565b90506001600160a01b038116615d1d578484604051602001615eed92919061aa79565b6140f482826000617afd565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c9061619a90849060040161ab24565b600060405180830381865afa1580156161b7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526161df919081019061ab6b565b9250505090565b6162186040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d90506162636040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b61626c85617c00565b6020820152600061627c86617fe5565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa1580156162be573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526162e6919081019061ab6b565b86838560200151604051602001616300949392919061abb4565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb119061635890859060040161a684565b600060405180830381865afa158015616375573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261639d919081019061ab6b565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f6906163e590849060040161acb8565b602060405180830381865afa158015616402573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616426919061a52d565b61643b5781604051602001615eed919061ad0a565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061648090849060040161ad9c565b600060405180830381865afa15801561649d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526164c5919081019061ab6b565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f69061650c90849060040161adee565b602060405180830381865afa158015616529573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061654d919061a52d565b156165e2576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061659790849060040161adee565b600060405180830381865afa1580156165b4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526165dc919081019061ab6b565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001616607919061ae40565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161663392919061aeac565b600060405180830381865afa158015616650573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616678919081019061ab6b565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816166a85790505090506040518060400160405280600481526020017f6772657000000000000000000000000000000000000000000000000000000000815250816000815181106167085761670861aed1565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061675c5761675c61aed1565b602002602001018190525084604051602001616778919061af00565b6040516020818303038152906040528160028151811061679a5761679a61aed1565b6020026020010181905250826040516020016167b6919061af6c565b604051602081830303815290604052816003815181106167d8576167d861aed1565b602002602001018190525060006167ee8261771b565b602080820151604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000818501908152825180840184526000808252908601528251808401909352905182529281019290925291925061687f9060408051808201825260008082526020918201528151808301909252845182528085019082015290618268565b6168945785604051602001615eed919061afad565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d90156168ee565b511590565b616a62578260200151156169aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401615f2d565b8260c0015115616a62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401615f2d565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081616a7b57905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616ad69061b03e565b935060ff1681518110616aeb57616aeb61aed1565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001616b3c919061b05d565b604051602081830303815290604052828280616b579061b03e565b935060ff1681518110616b6c57616b6c61aed1565b60200260200101819052506040518060400160405280600681526020017f6465706c6f790000000000000000000000000000000000000000000000000000815250828280616bb99061b03e565b935060ff1681518110616bce57616bce61aed1565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d65000000000000000000000000000000000000815250828280616c1b9061b03e565b935060ff1681518110616c3057616c3061aed1565b60200260200101819052508760200151828280616c4c9061b03e565b935060ff1681518110616c6157616c6161aed1565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e747261637450617468000000000000000000000000000000000000815250828280616cae9061b03e565b935060ff1681518110616cc357616cc361aed1565b602090810291909101015287518282616cdb8161b03e565b935060ff1681518110616cf057616cf061aed1565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280616d3d9061b03e565b935060ff1681518110616d5257616d5261aed1565b6020026020010181905250616d66466182c9565b8282616d718161b03e565b935060ff1681518110616d8657616d8661aed1565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280616dd39061b03e565b935060ff1681518110616de857616de861aed1565b602002602001018190525086828280616e009061b03e565b935060ff1681518110616e1557616e1561aed1565b6020908102919091010152855115616f3c5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f6465000000000000000000000060208201528282616e668161b03e565b935060ff1681518110616e7b57616e7b61aed1565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90616ecb90899060040161a684565b600060405180830381865afa158015616ee8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616f10919081019061ab6b565b8282616f1b8161b03e565b935060ff1681518110616f3057616f3061aed1565b60200260200101819052505b84602001511561700c5760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282616f858161b03e565b935060ff1681518110616f9a57616f9a61aed1565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280616fe79061b03e565b935060ff1681518110616ffc57616ffc61aed1565b60200260200101819052506171d3565b6170446168e98660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6170d75760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826170878161b03e565b935060ff168151811061709c5761709c61aed1565b60200260200101819052508460a001516040516020016170bc919061af00565b604051602081830303815290604052828280616fe79061b03e565b8460c0015115801561711a57506040808901518151808301835260008082526020918201528251808401909352815183529081019082015261711890511590565b155b156171d35760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828261715e8161b03e565b935060ff16815181106171735761717361aed1565b602002602001018190525061718788618369565b604051602001617197919061af00565b6040516020818303038152906040528282806171b29061b03e565b935060ff16815181106171c7576171c761aed1565b60200260200101819052505b6040808601518151808301835260008082526020918201528251808401909352815183529081019082015261720790511590565b61729c5760408051808201909152600b81527f2d2d72656c6179657249640000000000000000000000000000000000000000006020820152828261724a8161b03e565b935060ff168151811061725f5761725f61aed1565b6020026020010181905250846040015182828061727b9061b03e565b935060ff16815181106172905761729061aed1565b60200260200101819052505b6060850151156173bd5760408051808201909152600681527f2d2d73616c740000000000000000000000000000000000000000000000000000602082015282826172e58161b03e565b935060ff16815181106172fa576172fa61aed1565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015617369573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617391919081019061ab6b565b828261739c8161b03e565b935060ff16815181106173b1576173b161aed1565b60200260200101819052505b60e085015151156174645760408051808201909152600a81527f2d2d6761734c696d697400000000000000000000000000000000000000000000602082015282826174078161b03e565b935060ff168151811061741c5761741c61aed1565b60200260200101819052506174388560e00151600001516182c9565b82826174438161b03e565b935060ff16815181106174585761745861aed1565b60200260200101819052505b60e0850151602001511561750e5760408051808201909152600a81527f2d2d676173507269636500000000000000000000000000000000000000000000602082015282826174b18161b03e565b935060ff16815181106174c6576174c661aed1565b60200260200101819052506174e28560e00151602001516182c9565b82826174ed8161b03e565b935060ff16815181106175025761750261aed1565b60200260200101819052505b60e085015160400151156175b85760408051808201909152600e81527f2d2d6d61784665655065724761730000000000000000000000000000000000006020820152828261755b8161b03e565b935060ff16815181106175705761757061aed1565b602002602001018190525061758c8560e00151604001516182c9565b82826175978161b03e565b935060ff16815181106175ac576175ac61aed1565b60200260200101819052505b60e085015160600151156176625760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826176058161b03e565b935060ff168151811061761a5761761a61aed1565b60200260200101819052506176368560e00151606001516182c9565b82826176418161b03e565b935060ff16815181106176565761765661aed1565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156176805761768061a54f565b6040519080825280602002602001820160405280156176b357816020015b606081526020019060019003908161769e5790505b50905060005b8260ff168160ff16101561770c57838160ff16815181106176dc576176dc61aed1565b6020026020010151828260ff16815181106176f9576176f961aed1565b60209081029190910101526001016176b9565b5093505050505b949350505050565b6177426040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916177c89186910161b0c8565b600060405180830381865afa1580156177e5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261780d919081019061ab6b565b9050600061781b8683618e58565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161784b919061a1a2565b6000604051808303816000875af115801561786a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617892919081019061b10f565b805190915060030b158015906178ab5750602081015151155b80156178ba5750604081015151155b1561689457816000815181106178d2576178d261aed1565b6020026020010151604051602001615eed919061b1c5565b6060600061791f8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506179569082905b90618fad565b15617ab35760006179d3826179cd846179c76179998a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90618fd4565b90619036565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150617a37908290618fad565b15617aa157604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617a9e905b82906190bb565b90505b617aaa816190e1565b92505050615e1a565b8215617acc578484604051602001615eed92919061b3b1565b5050604080516020810190915260008152615e1a565b509392505050565b6000808251602084016000f09392505050565b8160a0015115617b0c57505050565b6000617b1984848461914a565b90506000617b268261771b565b602081015181519192509060030b158015617bc25750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617bc290604080518082018252600080825260209182015281518083019092528451825280850190820152617950565b15617bcf57505050505050565b60408201515115617bef578160400151604051602001615eed919061b458565b80604051602001615eed919061b4b6565b60606000617c358360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150617c9a905b8290618268565b15617d0957604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615e1a90617d049083906196e5565b6190e1565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617d6b905b829061976f565b600103617e3857604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617dd190617a97565b50604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615e1a90617d04905b83906190bb565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617e9790617c93565b15617fce57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290617eff908390619809565b905060008160018351617f12919061a807565b81518110617f2257617f2261aed1565b60200260200101519050617fc5617d04617f986040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528551825280860190820152906196e5565b95945050505050565b82604051602001615eed919061b521565b50919050565b6060600061801a8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061807c90617c93565b1561808a57615e1a816190e1565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526180e990617d64565b60010361815357604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615e1a90617d0490617e31565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526181b290617c93565b15617fce57604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061821a908390619809565b9050600181511115618256578060028251618235919061a807565b815181106182455761824561aed1565b602002602001015192505050919050565b5082604051602001615eed919061b521565b80518251600091111561827d57506000615d21565b815183516020850151600092916182939161a81a565b61829d919061a807565b9050826020015181036182b4576001915050615d21565b82516020840151819020912014905092915050565b606060006182d6836198ae565b600101905060008167ffffffffffffffff8111156182f6576182f661a54f565b6040519080825280601f01601f191660200182016040528015618320576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461832a57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e53454400000000000000000000000000000000000000000000818401908152855180870187528381528401929092528451808601909552518452908301526060916183f5905b8290619990565b1561843557505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618494906183ee565b156184d457505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618533906183ee565b1561857357505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526185d2906183ee565b806186375750604080518082018252601081527f47504c2d322e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618637906183ee565b1561867757505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526186d6906183ee565b8061873b5750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261873b906183ee565b1561877b57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526187da906183ee565b8061883f5750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261883f906183ee565b1561887f57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526188de906183ee565b806189435750604080518082018252601181527f4c47504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618943906183ee565b1561898357505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526189e2906183ee565b15618a2257505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618a81906183ee565b15618ac157505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618b20906183ee565b15618b6057505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618bbf906183ee565b15618bff57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e300000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618c5e906183ee565b15618c9e57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618cfd906183ee565b80618d625750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618d62906183ee565b15618da257505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e3100000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618e01906183ee565b15618e4157505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151615eed929060200161b5ff565b60608060005b8451811015618ee35781858281518110618e7a57618e7a61aed1565b6020026020010151604051602001618e9392919061aa4a565b604051602081830303815290604052915060018551618eb2919061a807565b8114618edb5781604051602001618ec9919061b768565b60405160208183030381529060405291505b600101618e5e565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081618efc5790505090508381600081518110618f2757618f2761aed1565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110618f7b57618f7b61aed1565b60200260200101819052508181600281518110618f9a57618f9a61aed1565b6020908102919091010152949350505050565b6020808301518351835192840151600093618fcb92918491906199a4565b14159392505050565b604080518082019091526000808252602082015260006190068460000151856020015185600001518660200151619ab5565b9050836020015181619018919061a807565b8451859061902790839061a807565b90525060208401525090919050565b604080518082019091526000808252602082015281518351101561905b575081615d21565b60208083015190840151600191146190825750815160208481015190840151829020919020145b80156190b35782518451859061909990839061a807565b90525082516020850180516190af90839061a81a565b9052505b509192915050565b60408051808201909152600080825260208201526190da838383619bd5565b5092915050565b60606000826000015167ffffffffffffffff8111156191025761910261a54f565b6040519080825280601f01601f19166020018201604052801561912c576020820181803683370190505b50905060006020820190506190da8185602001518660000151619c80565b60606000619156616113565b6040805160ff808252612000820190925291925060009190816020015b606081526020019060019003908161917357905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806191ce9061b03e565b935060ff16815181106191e3576191e361aed1565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001619234919061b7a9565b60405160208183030381529060405282828061924f9061b03e565b935060ff16815181106192645761926461aed1565b60200260200101819052506040518060400160405280600881526020017f76616c69646174650000000000000000000000000000000000000000000000008152508282806192b19061b03e565b935060ff16815181106192c6576192c661aed1565b6020026020010181905250826040516020016192e2919061af6c565b6040516020818303038152906040528282806192fd9061b03e565b935060ff16815181106193125761931261aed1565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e74726163740000000000000000000000000000000000000000000081525082828061935f9061b03e565b935060ff16815181106193745761937461aed1565b60200260200101819052506193898784619cfa565b82826193948161b03e565b935060ff16815181106193a9576193a961aed1565b6020908102919091010152855151156194555760408051808201909152600b81527f2d2d7265666572656e6365000000000000000000000000000000000000000000602082015282826193fb8161b03e565b935060ff16815181106194105761941061aed1565b6020026020010181905250619429866000015184619cfa565b82826194348161b03e565b935060ff16815181106194495761944961aed1565b60200260200101819052505b8560800151156194c35760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261949e8161b03e565b935060ff16815181106194b3576194b361aed1565b6020026020010181905250619529565b84156195295760408051808201909152601281527f2d2d726571756972655265666572656e63650000000000000000000000000000602082015282826195088161b03e565b935060ff168151811061951d5761951d61aed1565b60200260200101819052505b604086015151156195c55760408051808201909152600d81527f2d2d756e73616665416c6c6f7700000000000000000000000000000000000000602082015282826195738161b03e565b935060ff16815181106195885761958861aed1565b602002602001018190525085604001518282806195a49061b03e565b935060ff16815181106195b9576195b961aed1565b60200260200101819052505b85606001511561962f5760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261960e8161b03e565b935060ff16815181106196235761962361aed1565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561964d5761964d61a54f565b60405190808252806020026020018201604052801561968057816020015b606081526020019060019003908161966b5790505b50905060005b8260ff168160ff1610156196d957838160ff16815181106196a9576196a961aed1565b6020026020010151828260ff16815181106196c6576196c661aed1565b6020908102919091010152600101619686565b50979650505050505050565b604080518082019091526000808252602082015281518351101561970a575081615d21565b815183516020850151600092916197209161a81a565b61972a919061a807565b6020840151909150600190821461974b575082516020840151819020908220145b80156197665783518551869061976290839061a807565b9052505b50929392505050565b60008082600001516197938560000151866020015186600001518760200151619ab5565b61979d919061a81a565b90505b835160208501516197b1919061a81a565b81116190da57816197c18161b7ee565b92505082600001516197f88560200151836197dc919061a807565b86516197e8919061a807565b8386600001518760200151619ab5565b619802919061a81a565b90506197a0565b60606000619817848461976f565b61982290600161a81a565b67ffffffffffffffff81111561983a5761983a61a54f565b60405190808252806020026020018201604052801561986d57816020015b60608152602001906001900390816198585790505b50905060005b8151811015617ae257619889617d0486866190bb565b82828151811061989b5761989b61aed1565b6020908102919091010152600101619873565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106198f7577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310619923576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061994157662386f26fc10000830492506010015b6305f5e1008310619959576305f5e100830492506008015b612710831061996d57612710830492506004015b6064831061997f576064830492506002015b600a8310615d215760010192915050565b600061999c8383619d3a565b159392505050565b600080858411619aab5760208411619a5757600084156199ef5760016199cb86602061a807565b6199d690600861b808565b6199e190600261b906565b6199eb919061a807565b1990505b83518116856199fe898961a81a565b619a08919061a807565b805190935082165b818114619a4257878411619a2a5787945050505050617713565b83619a348161b912565b945050828451169050619a10565b619a4c878561a81a565b945050505050617713565b838320619a64858861a807565b619a6e908761a81a565b91505b858210619aa957848220808203619a9657619a8c868461a81a565b9350505050617713565b619aa160018461a807565b925050619a71565b505b5092949350505050565b60008381868511619bc05760208511619b6f5760008515619b01576001619add87602061a807565b619ae890600861b808565b619af390600261b906565b619afd919061a807565b1990505b84518116600087619b128b8b61a81a565b619b1c919061a807565b855190915083165b828114619b6157818610619b4957619b3c8b8b61a81a565b9650505050505050617713565b85619b538161b7ee565b965050838651169050619b24565b859650505050505050617713565b508383206000905b619b81868961a807565b8211619bbe57858320808203619b9d5783945050505050617713565b619ba860018561a81a565b9350508180619bb69061b7ee565b925050619b77565b505b619bca878761a81a565b979650505050505050565b60408051808201909152600080825260208201526000619c078560000151866020015186600001518760200151619ab5565b602080870180519186019190915251909150619c23908261a807565b835284516020860151619c36919061a81a565b8103619c455760008552619c77565b83518351619c53919061a81a565b85518690619c6290839061a807565b9052508351619c71908261a81a565b60208601525b50909392505050565b60208110619cb85781518352619c9760208461a81a565b9250619ca460208361a81a565b9150619cb160208261a807565b9050619c80565b6000198115619ce7576001619cce83602061a807565b619cda9061010061b906565b619ce4919061a807565b90505b9151835183169219169190911790915250565b60606000619d0884846161e6565b8051602080830151604051939450619d229390910161b929565b60405160208183030381529060405291505092915050565b8151815160009190811115619d4d575081515b6020808501519084015160005b83811015619e065782518251808214619dd6576000196020871015619db557600184619d8789602061a807565b619d91919061a81a565b619d9c90600861b808565b619da790600261b906565b619db1919061a807565b1990505b8181168382168181039114619dd3579750615d219650505050505050565b50505b619de160208661a81a565b9450619dee60208561a81a565b93505050602081619dff919061a81a565b9050619d5a565b5084518651616894919061b981565b610b678061b9a283390190565b61063a8061c50983390190565b61106f8061cb4383390190565b6120728061dbb283390190565b6040518060e00160405280606081526020016060815260200160608152602001600015158152602001600015158152602001600015158152602001619e8c619e91565b905290565b60405180610100016040528060001515815260200160001515815260200160608152602001600080191681526020016060815260200160608152602001600015158152602001619e8c6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b81811015619f435783516001600160a01b0316835260209384019390920191600101619f1c565b509095945050505050565b60005b83811015619f69578181015183820152602001619f51565b50506000910152565b60008151808452619f8a816020860160208601619f4e565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a09a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b8181101561a080577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261a06a848651619f72565b602095860195909450929092019160010161a030565b509197505050602094850194929092019150600101619fc6565b50929695505050505050565b600081518084526020840193506020830160005b8281101561a0fa5781517fffffffff000000000000000000000000000000000000000000000000000000001686526020958601959091019060010161a0ba565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a09a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516040875261a1706040880182619f72565b905060208201519150868103602088015261a18b818361a0a6565b96505050602093840193919091019060010161a12c565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a09a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845261a204858351619f72565b9450602093840193919091019060010161a1ca565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a09a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b038151168652602081015190506040602087015261a29a604087018261a0a6565b955050602093840193919091019060010161a241565b600181811c9082168061a2c457607f821691505b602082108103617fdf577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6001600160a01b0381541682526001600160a01b03600182015416602083015260028101546040830152600060038201608060608501526000815461a3418161a2b0565b806080880152600182166000811461a360576001811461a39a5761a3ce565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831660a089015260a082151560051b890101935061a3ce565b84600052602060002060005b8381101561a3c55781548a820160a0015260019091019060200161a3a6565b890160a0019450505b50919695505050505050565b602081526000615e1a602083018461a2fd565b6001600160a01b0383168152604060208201526000617713604083018461a2fd565b60006020828403121561a42157600080fd5b81516001600160a01b0381168114615e1a57600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff881660408301528660608301526003861061a4f2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a083015261a51360c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b60006020828403121561a53f57600080fd5b81518015158114615e1a57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b601f82111561123c57806000526020600020601f840160051c8101602085101561a5a55750805b601f840160051c820191505b81811015612a54576000815560010161a5b1565b815167ffffffffffffffff81111561a5df5761a5df61a54f565b61a5f38161a5ed845461a2b0565b8461a57e565b6020601f82116001811461a627576000831561a60f5750848201515b600019600385901b1c1916600184901b178455612a54565b600084815260208120601f198516915b8281101561a657578785015182556020948501946001909201910161a637565b508482101561a6755786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b602081526000615e1a6020830184619f72565b60006020828403121561a6a957600080fd5b5051919050565b602081526000615d2160208301600581527f68656c6c6f000000000000000000000000000000000000000000000000000000602082015260400190565b60a08152600061a70060a0830187619f72565b6001600160a01b03861660208401528460408401526001600160a01b03841660608401528281036080840152619bca81600581527f68656c6c6f000000000000000000000000000000000000000000000000000000602082015260400190565b600081516060845261a7756060850182619f72565b90506001600160a01b036020840151166020850152604083015160408501528091505092915050565b60808152600061a7b1608083018761a760565b8560208401526001600160a01b03851660408401528281036060840152619bca8185619f72565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115615d2157615d2161a7d8565b80820180821115615d2157615d2161a7d8565b60a08152600061a84060a083018861a760565b6001600160a01b03871660208401528560408401526001600160a01b0385166060840152828103608084015261a8768185619f72565b98975050505050505050565b6001600160a01b03851681528360208201526001600160a01b0383166040820152608060608201526000616894608083018461a2fd565b6001600160a01b03831681526040602082015260006177136040830184619f72565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161a91381601a850160208801619f4e565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161a95081601c840160208801619f4e565b01601c01949350505050565b6040516060810167ffffffffffffffff8111828210171561a97f5761a97f61a54f565b60405290565b60008067ffffffffffffffff84111561a9a05761a9a061a54f565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561a9cf5761a9cf61a54f565b60405283815290508082840185101561a9e757600080fd5b617ae2846020830185619f4e565b600082601f83011261aa0657600080fd5b615e1a8383516020850161a985565b60006020828403121561aa2757600080fd5b815167ffffffffffffffff81111561aa3e57600080fd5b615d1d8482850161a9f5565b6000835161aa5c818460208801619f4e565b83519083019061aa70818360208801619f4e565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161aab181601a850160208801619f4e565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161aaee816033840160208801619f4e565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000615e1a6080830184619f72565b60006020828403121561ab7d57600080fd5b815167ffffffffffffffff81111561ab9457600080fd5b8201601f8101841361aba557600080fd5b615d1d8482516020840161a985565b6000855161abc6818460208a01619f4e565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161ac00816001840160208a01619f4e565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161ac3e816002840160208901619f4e565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161ac80816002840160208801619f4e565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061accb6040830184619f72565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161ad4281601f850160208701619f4e565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061adaf6040830184619f72565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061ae016040830184619f72565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161ae78816014850160208701619f4e565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061aebf6040830185619f72565b8281036020840152615e168185619f72565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161af38816001850160208701619f4e565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161af7e818460208701619f4e565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161b03181604b850160208701619f4e565b91909101604b0192915050565b600060ff821660ff810361b0545761b05461a7d8565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161b0bb816029850160208701619f4e565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000615e1a6080830184619f72565b60006020828403121561b12157600080fd5b815167ffffffffffffffff81111561b13857600080fd5b82016060818503121561b14a57600080fd5b61b15261a95c565b81518060030b811461b16357600080fd5b8152602082015167ffffffffffffffff81111561b17f57600080fd5b61b18b8682850161a9f5565b602083015250604082015167ffffffffffffffff81111561b1ab57600080fd5b61b1b78682850161a9f5565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161b223816021850160208701619f4e565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161b40f816021850160208801619f4e565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161b44c81602e840160208801619f4e565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161b0bb816029850160208701619f4e565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161b514816022850160208701619f4e565b9190910160220192915050565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161b55981600e850160208701619f4e565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161b637816018850160208801619f4e565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161b67481601c840160208801619f4e565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161b77a818460208701619f4e565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161b7e181601c850160208701619f4e565b91909101601c0192915050565b6000600019820361b8015761b80161a7d8565b5060010190565b8082028115828204841417615d2157615d2161a7d8565b6001815b600184111561b85a5780850481111561b83e5761b83e61a7d8565b600184161561b84c57908102905b60019390931c92800261b823565b935093915050565b60008261b87157506001615d21565b8161b87e57506000615d21565b816001811461b894576002811461b89e5761b8ba565b6001915050615d21565b60ff84111561b8af5761b8af61a7d8565b50506001821b615d21565b5060208310610133831016604e8410600b841016171561b8dd575081810a615d21565b61b8ea600019848461b81f565b806000190482111561b8fe5761b8fe61a7d8565b029392505050565b6000615e1a838361b862565b60008161b9215761b92161a7d8565b506000190190565b6000835161b93b818460208801619f4e565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161b975816001840160208801619f4e565b01600101949350505050565b81810360008312801583831316838312821617156190da576190da61a7d856fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea2646970667358221220b09c98b42d894b1b92a74ecc691587bcc17012fff7ef3bcfa6fe755f9b6255a564736f6c634300081a00336080604052348015600f57600080fd5b5061061b8061001f6000396000f3fe60806040526004361061002a5760003560e01c80635bcfd61614610033578063c9028a361461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e366004610151565b610073565b34801561005f57600080fd5b5061003161006e36600461020e565b6100ee565b6060811561008a576100878284018461027f565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610375565b6100c560408a0160208b016103e1565b896040013533866040516100de96959493929190610445565b60405180910390a1505050505050565b7fd75bb509c8f32a725aac99ac5c4541060dbfb889a3aca8314d6f00395618c4c48160405161011d9190610507565b60405180910390a150565b803573ffffffffffffffffffffffffffffffffffffffff8116811461014c57600080fd5b919050565b60008060008060006080868803121561016957600080fd5b853567ffffffffffffffff81111561018057600080fd5b86016060818903121561019257600080fd5b94506101a060208701610128565b935060408601359250606086013567ffffffffffffffff8111156101c357600080fd5b8601601f810188136101d457600080fd5b803567ffffffffffffffff8111156101eb57600080fd5b8860208284010111156101fd57600080fd5b959894975092955050506020019190565b60006020828403121561022057600080fd5b813567ffffffffffffffff81111561023757600080fd5b82016080818503121561024957600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561029157600080fd5b813567ffffffffffffffff8111156102a857600080fd5b8201601f810184136102b957600080fd5b803567ffffffffffffffff8111156102d3576102d3610250565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033f5761033f610250565b60405281815282820160200186101561035757600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126103aa57600080fd5b83018035915067ffffffffffffffff8211156103c557600080fd5b6020019150368190038213156103da57600080fd5b9250929050565b6000602082840312156103f357600080fd5b61024982610128565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60a08152600061045960a08301888a6103fc565b73ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff851660608401528281036080840152835180825260005b818110156104c3576020818701810151848301820152016104a7565b5060006020828401015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011683010192505050979650505050505050565b6020815273ffffffffffffffffffffffffffffffffffffffff61052983610128565b16602082015273ffffffffffffffffffffffffffffffffffffffff61055060208401610128565b166040820152600080604084013590508060608401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261059c57600080fd5b830160208101903567ffffffffffffffff8111156105b957600080fd5b8036038213156105c857600080fd5b6080808501526105dc60a0850182846103fc565b9594505050505056fea264697066735822122034d8711688fa0746c516ebf736804e86c9e1dad5e64788e702413ad1a8eb9ff164736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea2646970667358221220b13ccf97234dc9b7f658234f9bf37a57d08f465bb99c431b865174e7a399a30764736f6c634300081a003360c060405234801561001057600080fd5b5060405161207238038061207283398101604081905261002f916101f0565b6001600160a01b038216158061004c57506001600160a01b038116155b1561006a5760405163d92e233d60e01b815260040160405180910390fd5b60066100768982610342565b5060076100838882610342565b506008805460ff191660ff881617905560808590528360028111156100aa576100aa610400565b60a08160028111156100be576100be610400565b905250600192909255600080546001600160a01b039283166001600160a01b0319909116179055600880549190921661010002610100600160a81b0319909116179055506104169350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261013357600080fd5b81516001600160401b0381111561014c5761014c61010c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561017a5761017a61010c565b60405281815283820160200185101561019257600080fd5b60005b828110156101b157602081860181015183830182015201610195565b506000918101602001919091529392505050565b8051600381106101d457600080fd5b919050565b80516001600160a01b03811681146101d457600080fd5b600080600080600080600080610100898b03121561020d57600080fd5b88516001600160401b0381111561022357600080fd5b61022f8b828c01610122565b60208b015190995090506001600160401b0381111561024d57600080fd5b6102598b828c01610122565b975050604089015160ff8116811461027057600080fd5b60608a0151909650945061028660808a016101c5565b60a08a0151909450925061029c60c08a016101d9565b91506102aa60e08a016101d9565b90509295985092959890939650565b600181811c908216806102cd57607f821691505b6020821081036102ed57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561033d57806000526020600020601f840160051c8101602085101561031a5750805b601f840160051c820191505b8181101561033a5760008155600101610326565b50505b505050565b81516001600160401b0381111561035b5761035b61010c565b61036f8161036984546102b9565b846102f3565b6020601f8211600181146103a3576000831561038b5750848201515b600019600385901b1c1916600184901b17845561033a565b600084815260208120601f198516915b828110156103d357878501518255602094850194600190920191016103b3565b50848210156103f15786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a051611c1b61045760003960006103440152600081816102f001528181610bdc01528181610ce201528181610efe01526110040152611c1b6000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c806395d89b41116100f9578063ccc7759911610097578063eddeb12311610071578063eddeb12314610461578063f2441b3214610474578063f687d12a14610494578063fc5fecd5146104a757600080fd5b8063ccc77599146103d4578063d9eeebed146103e7578063dd62ed3e1461041b57600080fd5b8063b84c8246116100d3578063b84c824614610386578063c47f00271461039b578063c7012626146103ae578063c835d7cc146103c157600080fd5b806395d89b4114610337578063a3413d031461033f578063a9059cbb1461037357600080fd5b80633ce4a5bc116101665780634d8943bb116101405780634d8943bb146102ac57806370a08231146102b557806385e1f4d0146102eb5780638b851b951461031257600080fd5b80633ce4a5bc1461024657806342966c681461028657806347e7ef241461029957600080fd5b806318160ddd1161019757806318160ddd1461021657806323b872dd1461021e578063313ce5671461023157600080fd5b806306fdde03146101be578063091d2788146101dc578063095ea7b3146101f3575b600080fd5b6101c66104ba565b6040516101d39190611648565b60405180910390f35b6101e560015481565b6040519081526020016101d3565b610206610201366004611687565b61054c565b60405190151581526020016101d3565b6005546101e5565b61020661022c3660046116b3565b610563565b60085460405160ff90911681526020016101d3565b61026173735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d3565b6102066102943660046116f4565b6105fa565b6102066102a7366004611687565b61060e565b6101e560025481565b6101e56102c336600461170d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6101e57f000000000000000000000000000000000000000000000000000000000000000081565b60085461026190610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6101c6610767565b6103667f000000000000000000000000000000000000000000000000000000000000000081565b6040516101d3919061172a565b610206610381366004611687565b610776565b610399610394366004611832565b610783565b005b6103996103a9366004611832565b6107e0565b6102066103bc366004611883565b610839565b6103996103cf36600461170d565b610988565b6103996103e236600461170d565b610a9c565b6103ef610bb0565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101d3565b6101e56104293660046118dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205490565b61039961046f3660046116f4565b610dce565b6000546102619073ffffffffffffffffffffffffffffffffffffffff1681565b6103996104a23660046116f4565b610e50565b6103ef6104b53660046116f4565b610ed2565b6060600680546104c990611915565b80601f01602080910402602001604051908101604052809291908181526020018280546104f590611915565b80156105425780601f1061051757610100808354040283529160200191610542565b820191906000526020600020905b81548152906001019060200180831161052557829003601f168201915b5050505050905090565b60006105593384846110ee565b5060015b92915050565b60006105708484846111f7565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460209081526040808320338452909152902054828110156105db576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105ef85336105ea8685611997565b6110ee565b506001949350505050565b600061060633836113b2565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab1480159061064c575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156106755750600854610100900473ffffffffffffffffffffffffffffffffffffffff163314155b156106ac576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106b683836114f4565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526107569186906119aa565b60405180910390a250600192915050565b6060600780546104c990611915565b60006105593384846111f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab146107d0576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60076107dc8282611a1b565b5050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461082d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60066107dc8282611a1b565b6000806000610846610bb0565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156108d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fc9190611b34565b610932576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61093c33856113b2565b60025460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161097591899189918791611b56565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146109d5576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a22576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610ae9576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610b36576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c679190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610cb6576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d699190611ba2565b905080600003610da5576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060025460015483610db89190611bbb565b610dc29190611bd2565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e1b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610a91565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e9d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610f65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f899190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610fd8576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015611067573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108b9190611ba2565b9050806000036110c7576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000906110d78784611bbb565b6110e19190611bd2565b9296929550919350505050565b73ffffffffffffffffffffffffffffffffffffffff831661113b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611188576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611244576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611291576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040902054818110156112f1576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112fb8282611997565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260036020526040808220939093559085168152908120805484929061133e908490611bd2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113a491815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff82166113ff576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260409020548181101561145f576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114698282611997565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260036020526040812091909155600580548492906114a4908490611997565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016111ea565b73ffffffffffffffffffffffffffffffffffffffff8216611541576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008282546115539190611bd2565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805483929061158d908490611bd2565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561160a576020818501810151868301820152016115ee565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061165b60208301846115e4565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461168457600080fd5b50565b6000806040838503121561169a57600080fd5b82356116a581611662565b946020939093013593505050565b6000806000606084860312156116c857600080fd5b83356116d381611662565b925060208401356116e381611662565b929592945050506040919091013590565b60006020828403121561170657600080fd5b5035919050565b60006020828403121561171f57600080fd5b813561165b81611662565b6020810160038310611765577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff8411156117b5576117b561176b565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff821117156118025761180261176b565b60405283815290508082840185101561181a57600080fd5b83836020830137600060208583010152509392505050565b60006020828403121561184457600080fd5b813567ffffffffffffffff81111561185b57600080fd5b8201601f8101841361186c57600080fd5b61187b8482356020840161179a565b949350505050565b6000806040838503121561189657600080fd5b823567ffffffffffffffff8111156118ad57600080fd5b8301601f810185136118be57600080fd5b6118cd8582356020840161179a565b95602094909401359450505050565b600080604083850312156118ef57600080fd5b82356118fa81611662565b9150602083013561190a81611662565b809150509250929050565b600181811c9082168061192957607f821691505b602082108103611962577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561055d5761055d611968565b6040815260006119bd60408301856115e4565b90508260208301529392505050565b601f821115611a1657806000526020600020601f840160051c810160208510156119f35750805b601f840160051c820191505b81811015611a1357600081556001016119ff565b50505b505050565b815167ffffffffffffffff811115611a3557611a3561176b565b611a4981611a438454611915565b846119cc565b6020601f821160018114611a9b5760008315611a655750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611a13565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015611ae95787850151825560209485019460019092019101611ac9565b5084821015611b2557868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b600060208284031215611b4657600080fd5b8151801515811461165b57600080fd5b608081526000611b6960808301876115e4565b6020830195909552506040810192909252606090910152919050565b600060208284031215611b9757600080fd5b815161165b81611662565b600060208284031215611bb457600080fd5b5051919050565b808202811582820484141761055d5761055d611968565b8082018082111561055d5761055d61196856fea2646970667358221220d6ba834f25782689ed13bffb6ac9ff2c8d3b5342c94a515aea8197a76070ad3f64736f6c634300081a0033a264697066735822122065eab9f32cd4a9c4b7d7cc80a660d41bacbf48dd05c682045efb82543eb1304464736f6c634300081a0033", } // GatewayZEVMOutboundTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/gatewayzevmupgradetest.sol/gatewayzevmupgradetest.go b/v2/pkg/gatewayzevmupgradetest.sol/gatewayzevmupgradetest.go index 064c6b9de..65f2fc922 100644 --- a/v2/pkg/gatewayzevmupgradetest.sol/gatewayzevmupgradetest.go +++ b/v2/pkg/gatewayzevmupgradetest.sol/gatewayzevmupgradetest.go @@ -62,7 +62,7 @@ type RevertOptions struct { // GatewayZEVMUpgradeTestMetaData contains all meta data concerning the GatewayZEVMUpgradeTest contract. var GatewayZEVMUpgradeTestMetaData = &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\":\"MAX_MESSAGE_SIZE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PROTOCOL_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\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"callOptions\",\"type\":\"tuple\",\"internalType\":\"structCallOptions\",\"components\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"isArbitraryCall\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"call\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\":\"structMessageContext\",\"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\":\"structMessageContext\",\"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\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"execute\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structMessageContext\",\"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\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"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\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"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\"},{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"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\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"callOptions\",\"type\":\"tuple\",\"internalType\":\"structCallOptions\",\"components\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"isArbitraryCall\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"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\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"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\"},{\"name\":\"callOptions\",\"type\":\"tuple\",\"internalType\":\"structCallOptions\",\"components\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"isArbitraryCall\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Called\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"callOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structCallOptions\",\"components\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"isArbitraryCall\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\":\"Withdrawn\",\"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\"},{\"name\":\"callOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structCallOptions\",\"components\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"isArbitraryCall\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawnV2\",\"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\"},{\"name\":\"callOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structCallOptions\",\"components\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"isArbitraryCall\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\":\"CallerIsNotProtocol\",\"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\":\"InsufficientGasLimit\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZetaAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"MessageSizeExceeded\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrProtocol\",\"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: "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516143726100fd60003960008181612bbd01528181612be60152612dbc01526143726000f3fe6080604052600436106101e75760003560e01c806352d1902d116101025780639d4ba46511610095578063c39aca3711610064578063c39aca37146106a2578063d547741f146106c2578063e63ab1e9146106e2578063f45346dc1461071657600080fd5b80639d4ba465146105f7578063a217fddf14610617578063ad3cb1cc1461062c578063bcf7f32b1461068257600080fd5b80638456cb59116100d15780638456cb591461054757806391d148541461055c57806397a1cef1146105c157806397d340f5146105e157600080fd5b806352d1902d146104bb5780635c975abb146104d05780637b15118b146105075780637c0dcb5f1461052757600080fd5b80632722feee1161017a5780633b283933116101495780633b283933146104535780633f4ba83a14610473578063485cc955146104885780634f1ef286146104a857600080fd5b80632722feee146103cb5780632810ae63146103f35780632f2ff15d1461041357806336568abe1461043357600080fd5b80631cb5ea75116101b65780631cb5ea75146102f657806321501a951461031657806321e093b114610336578063248a9ca31461036e57600080fd5b806301ffc9a714610261578063048ae42c1461029657806306cb8983146102b6578063184b0793146102d657600080fd5b3661025c576101f4610736565b6000546001600160a01b0316331480159061022357503373735b14bb79463307aacbed86daf3322b1e6226ab14155b1561025a576040517fb3af013700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b34801561026d57600080fd5b5061028161027c366004613305565b610794565b60405190151581526020015b60405180910390f35b3480156102a257600080fd5b5061025a6102b1366004613499565b61082d565b3480156102c257600080fd5b5061025a6102d136600461356b565b610a2d565b3480156102e257600080fd5b5061025a6102f136600461363b565b610b20565b34801561030257600080fd5b5061025a61031136600461368b565b610c0f565b34801561032257600080fd5b5061025a610331366004613739565b610cd5565b34801561034257600080fd5b50600054610356906001600160a01b031681565b6040516001600160a01b03909116815260200161028d565b34801561037a57600080fd5b506103bd6103893660046137c5565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b60405190815260200161028d565b3480156103d757600080fd5b5061035673735b14bb79463307aacbed86daf3322b1e6226ab81565b3480156103ff57600080fd5b5061025a61040e3660046137de565b610e89565b34801561041f57600080fd5b5061025a61042e366004613883565b611021565b34801561043f57600080fd5b5061025a61044e366004613883565b61106b565b34801561045f57600080fd5b5061025a61046e3660046138b3565b6110bc565b34801561047f57600080fd5b5061025a61122d565b34801561049457600080fd5b5061025a6104a3366004613946565b611262565b61025a6104b6366004613974565b61149e565b3480156104c757600080fd5b506103bd6114bd565b3480156104dc57600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610281565b34801561051357600080fd5b5061025a6105223660046139ba565b6114ec565b34801561053357600080fd5b5061025a610542366004613a2c565b6116a2565b34801561055357600080fd5b5061025a6118b6565b34801561056857600080fd5b50610281610577366004613883565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156105cd57600080fd5b5061025a6105dc366004613ab1565b6118e8565b3480156105ed57600080fd5b506103bd61040081565b34801561060357600080fd5b5061025a610612366004613b15565b611a4c565b34801561062357600080fd5b506103bd600081565b34801561063857600080fd5b506106756040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161028d9190613be3565b34801561068e57600080fd5b5061025a61069d366004613bf6565b611cbf565b3480156106ae57600080fd5b5061025a6106bd366004613bf6565b611dd6565b3480156106ce57600080fd5b5061025a6106dd366004613883565b611fcc565b3480156106ee57600080fd5b506103bd7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b34801561072257600080fd5b5061025a610731366004613c94565b612010565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615610792576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061082757507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610835612206565b61083d610736565b865160000361085f5760405163d92e233d60e01b815260040160405180910390fd5b85600003610899576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816000036108d3576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006108e36060830183613cd6565b6108ee915085613d3b565b1115610926576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610933878785612287565b90506000336001600160a01b03167f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c8a898b868c6001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c89190613d75565b6040805180820182528c81526001602082015290516109f29695949392918f918f91908e90613eca565b60405180910390a350610a2460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050505050565b610a35612206565b610a3d610736565b8135600003610a78576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610400610a886060830183613cd6565b610a93915085613d3b565b1115610acb576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610aef86868686610ae136889003880188613f4c565b610aea87613fa4565b61258a565b610b1860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b6d576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b75610736565b6001600160a01b038216610b9c5760405163d92e233d60e01b815260040160405180910390fd5b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063c9028a3690610be190849060040161404c565b600060405180830381600087803b158015610bfb57600080fd5b505af1158015610b18573d6000803e3d6000fd5b610c17612206565b610c1f610736565b81600003610c59576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610400610c696060830183613cd6565b610c74915085613d3b565b1115610cac576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610aef8686868660405180604001604052808881526020016001151581525086610aea90613fa4565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d22576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d2a610736565b6001600160a01b038316610d515760405163d92e233d60e01b815260040160405180910390fd5b83600003610d8b576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dbe57506001600160a01b03831630145b15610df5576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610dff8484612771565b6000546040517f5bcfd6160000000000000000000000000000000000000000000000000000000081526001600160a01b0380861692635bcfd61692610e50928a9216908990889088906004016140bc565b600060405180830381600087803b158015610e6a57600080fd5b505af1158015610e7e573d6000803e3d6000fd5b505050505050505050565b610e91612206565b610e99610736565b8651600003610ebb5760405163d92e233d60e01b815260040160405180910390fd5b85600003610ef5576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8135600003610f30576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610400610f406060830183613cd6565b610f4b915085613d3b565b1115610f83576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fa18673735b14bb79463307aacbed86daf3322b1e6226ab612771565b60008054604051879233927f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c92610ff0928d926001600160a01b0316918d919081908d908d908d908d90614158565b60405180910390a3610a2460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461105b8161293f565b6110658383612949565b50505050565b6001600160a01b03811633146110ad576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110b78282612a36565b505050565b6110c4612206565b6110cc610736565b85516000036110ee5760405163d92e233d60e01b815260040160405180910390fd5b84600003611128576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006111386060830183613cd6565b611143915084613d3b565b111561117b576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111998573735b14bb79463307aacbed86daf3322b1e6226ab612771565b60008054604080518082018252838152600160208201529051879333937f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c936111fc938d936001600160a01b03909316928d92909182918d918d91908d90613eca565b60405180910390a3610b1860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6112578161293f565b61125f612afa565b50565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156112ad5750825b905060008267ffffffffffffffff1660011480156112ca5750303b155b9050811580156112d8575080155b1561130f576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156113705784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038716158061138d57506001600160a01b038616155b156113ab5760405163d92e233d60e01b815260040160405180910390fd5b6113b3612b8a565b6113bb612b8a565b6113c3612b92565b6113cb612ba2565b6113d6600087612949565b506114017f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87612949565b50600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0389161790558315610a245784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050505050565b6114a6612bb2565b6114af82612c82565b6114b98282612c8d565b5050565b60006114c7612db1565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b6114f4612206565b6114fc610736565b865160000361151e5760405163d92e233d60e01b815260040160405180910390fd5b85600003611558576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8135600003611593576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006115a36060830183613cd6565b6115ae915085613d3b565b11156115e6576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006115f487878535612287565b90506000336001600160a01b03167f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c8a898b868c6001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611665573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116899190613d75565b8c8c8c8c6040516109f299989796959493929190614158565b6116aa612206565b6116b2610736565b83516000036116d45760405163d92e233d60e01b815260040160405180910390fd5b8260000361170e576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61040061171e6060830183613cd6565b90501115611758576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006117648484612e13565b90506000336001600160a01b03167f5d7cd8ae449a6b25de63f10534ddd17d8dd3e79c7aa5f28964b7a7c760258d9787868886896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f99190613d75565b60405180604001604052808c6001600160a01b031663091d27886040518163ffffffff1660e01b8152600401602060405180830381865afa158015611842573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118669190613d75565b81526001602090910152604051611884969594939291908c906141b0565b60405180910390a35061106560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6118e08161293f565b61125f612e81565b6118f0612206565b6118f8610736565b835160000361191a5760405163d92e233d60e01b815260040160405180910390fd5b82600003611954576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006119646060830183613cd6565b9050111561199e576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119bc8373735b14bb79463307aacbed86daf3322b1e6226ab612771565b60008054604080518082018252838152600160208201529051859333937f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c93611a1b938b936001600160a01b03909316928b9290918291908b906141b0565b60405180910390a361106560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611a99576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611aa1610736565b6001600160a01b0384161580611abe57506001600160a01b038216155b15611adc5760405163d92e233d60e01b815260040160405180910390fd5b82600003611b16576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821673735b14bb79463307aacbed86daf3322b1e6226ab1480611b4957506001600160a01b03821630145b15611b80576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152602482018590528516906347e7ef24906044016020604051808303816000875af1158015611be8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0c9190614232565b611c42576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063c9028a3690611c8790849060040161404c565b600060405180830381600087803b158015611ca157600080fd5b505af1158015611cb5573d6000803e3d6000fd5b5050505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611d0c576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d14610736565b6001600160a01b0385161580611d3157506001600160a01b038316155b15611d4f5760405163d92e233d60e01b815260040160405180910390fd5b6040517f5bcfd6160000000000000000000000000000000000000000000000000000000081526001600160a01b03841690635bcfd61690611d9c90899089908990889088906004016140bc565b600060405180830381600087803b158015611db657600080fd5b505af1158015611dca573d6000803e3d6000fd5b50505050505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611e23576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e2b610736565b6001600160a01b0385161580611e4857506001600160a01b038316155b15611e665760405163d92e233d60e01b815260040160405180910390fd5b83600003611ea0576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480611ed357506001600160a01b03831630145b15611f0a576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015611f72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f969190614232565b611d4f576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546120068161293f565b6110658383612a36565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461205d576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612065610736565b6001600160a01b038316158061208257506001600160a01b038116155b156120a05760405163d92e233d60e01b815260040160405180910390fd5b816000036120da576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab148061210d57506001600160a01b03811630145b15612144576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af11580156121ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d09190614232565b6110b7576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01612281576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6000806000846001600160a01b031663fc5fecd5856040518263ffffffff1660e01b81526004016122ba91815260200190565b6040805180830381865afa1580156122d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122fa919061424f565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561237f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a39190614232565b6123d9576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018790526001600160a01b038616906323b872dd906064016020604051808303816000875af1158015612445573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124699190614232565b61249f576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018790526001600160a01b038616906342966c68906024016020604051808303816000875af11580156124ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125239190614232565b612559576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b85516000036125ac5760405163d92e233d60e01b815260040160405180910390fd5b81516040517ffc5fecd5000000000000000000000000000000000000000000000000000000008152600481019190915260009081906001600160a01b0388169063fc5fecd5906024016040805180830381865afa158015612611573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612635919061424f565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af11580156126ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126de9190614232565b612714576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b866001600160a01b0316336001600160a01b03167f306ee13f48319a123b222c69908e44dcf91abffc20cacc502e3cf5a4ff23e0e48a8989898960405161275f95949392919061427d565b60405180910390a35050505050505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af11580156127e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128059190614232565b61283b576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561289a57600080fd5b505af11580156128ae573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d80600081146128ff576040519150601f19603f3d011682016040523d82523d6000602084013e612904565b606091505b50509050806110b7576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61125f8133612efa565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16612a2c576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556129e23390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610827565b6000915050610827565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615612a2c576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610827565b612b02612f87565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b610792612fe2565b612b9a612fe2565b610792613049565b612baa612fe2565b61079261309a565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480612c4b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612c3f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610792576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006114b98161293f565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612d05575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612d0291810190613d75565b60015b612d4b576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114612da7576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401612d42565b6110b783836130a2565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610792576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061255d8383846001600160a01b031663091d27886040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e7c9190613d75565b612287565b612e89610736565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833612b6c565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166114b9576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401612d42565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610792576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610792576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613051612fe2565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b612564612fe2565b6130ab826130f8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156130f0576110b782826131a0565b6114b9613216565b806001600160a01b03163b600003613147576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401612d42565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516131bd9190614320565b600060405180830381855af49150503d80600081146131f8576040519150601f19603f3d011682016040523d82523d6000602084013e6131fd565b606091505b509150915061320d85838361324e565b95945050505050565b3415610792576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060826132635761325e826132c3565b61255d565b815115801561327a57506001600160a01b0384163b155b156132bc576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401612d42565b508061255d565b8051156132d35780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561331757600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461255d57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261338757600080fd5b813567ffffffffffffffff8111156133a1576133a1613347565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff811182821017156133ee576133ee613347565b60405281815283820160200185101561340657600080fd5b816020850160208301376000918101602001919091529392505050565b6001600160a01b038116811461125f57600080fd5b60008083601f84011261344a57600080fd5b50813567ffffffffffffffff81111561346257600080fd5b60208301915083602082850101111561347a57600080fd5b9250929050565b600060a0828403121561349357600080fd5b50919050565b600080600080600080600060c0888a0312156134b457600080fd5b873567ffffffffffffffff8111156134cb57600080fd5b6134d78a828b01613376565b9750506020880135955060408801356134ef81613423565b9450606088013567ffffffffffffffff81111561350b57600080fd5b6135178a828b01613438565b9095509350506080880135915060a088013567ffffffffffffffff81111561353e57600080fd5b61354a8a828b01613481565b91505092959891949750929550565b60006040828403121561349357600080fd5b60008060008060008060c0878903121561358457600080fd5b863567ffffffffffffffff81111561359b57600080fd5b6135a789828a01613376565b96505060208701356135b881613423565b9450604087013567ffffffffffffffff8111156135d457600080fd5b6135e089828a01613438565b90955093506135f490508860608901613559565b915060a087013567ffffffffffffffff81111561361057600080fd5b61361c89828a01613481565b9150509295509295509295565b60006080828403121561349357600080fd5b6000806040838503121561364e57600080fd5b823561365981613423565b9150602083013567ffffffffffffffff81111561367557600080fd5b61368185828601613629565b9150509250929050565b60008060008060008060a087890312156136a457600080fd5b863567ffffffffffffffff8111156136bb57600080fd5b6136c789828a01613376565b96505060208701356136d881613423565b9450604087013567ffffffffffffffff8111156136f457600080fd5b61370089828a01613438565b90955093505060608701359150608087013567ffffffffffffffff81111561361057600080fd5b60006060828403121561349357600080fd5b60008060008060006080868803121561375157600080fd5b853567ffffffffffffffff81111561376857600080fd5b61377488828901613727565b95505060208601359350604086013561378c81613423565b9250606086013567ffffffffffffffff8111156137a857600080fd5b6137b488828901613438565b969995985093965092949392505050565b6000602082840312156137d757600080fd5b5035919050565b600080600080600080600060e0888a0312156137f957600080fd5b873567ffffffffffffffff81111561381057600080fd5b61381c8a828b01613376565b9750506020880135955060408801359450606088013567ffffffffffffffff81111561384757600080fd5b6138538a828b01613438565b909550935061386790508960808a01613559565b915060c088013567ffffffffffffffff81111561353e57600080fd5b6000806040838503121561389657600080fd5b8235915060208301356138a881613423565b809150509250929050565b60008060008060008060a087890312156138cc57600080fd5b863567ffffffffffffffff8111156138e357600080fd5b6138ef89828a01613376565b9650506020870135945060408701359350606087013567ffffffffffffffff81111561391a57600080fd5b61392689828a01613438565b909450925050608087013567ffffffffffffffff81111561361057600080fd5b6000806040838503121561395957600080fd5b823561396481613423565b915060208301356138a881613423565b6000806040838503121561398757600080fd5b823561399281613423565b9150602083013567ffffffffffffffff8111156139ae57600080fd5b61368185828601613376565b600080600080600080600060e0888a0312156139d557600080fd5b873567ffffffffffffffff8111156139ec57600080fd5b6139f88a828b01613376565b975050602088013595506040880135613a1081613423565b9450606088013567ffffffffffffffff81111561384757600080fd5b60008060008060808587031215613a4257600080fd5b843567ffffffffffffffff811115613a5957600080fd5b613a6587828801613376565b945050602085013592506040850135613a7d81613423565b9150606085013567ffffffffffffffff811115613a9957600080fd5b613aa587828801613481565b91505092959194509250565b60008060008060808587031215613ac757600080fd5b843567ffffffffffffffff811115613ade57600080fd5b613aea87828801613376565b9450506020850135925060408501359150606085013567ffffffffffffffff811115613a9957600080fd5b60008060008060808587031215613b2b57600080fd5b8435613b3681613423565b9350602085013592506040850135613b4d81613423565b9150606085013567ffffffffffffffff811115613b6957600080fd5b613aa587828801613629565b60005b83811015613b90578181015183820152602001613b78565b50506000910152565b60008151808452613bb1816020860160208601613b75565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061255d6020830184613b99565b60008060008060008060a08789031215613c0f57600080fd5b863567ffffffffffffffff811115613c2657600080fd5b613c3289828a01613727565b9650506020870135613c4381613423565b9450604087013593506060870135613c5a81613423565b9250608087013567ffffffffffffffff811115613c7657600080fd5b613c8289828a01613438565b979a9699509497509295939492505050565b600080600060608486031215613ca957600080fd5b8335613cb481613423565b9250602084013591506040840135613ccb81613423565b809150509250925092565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613d0b57600080fd5b83018035915067ffffffffffffffff821115613d2657600080fd5b60200191503681900382131561347a57600080fd5b80820180821115610827577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060208284031215613d8757600080fd5b5051919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b801515811461125f57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613e1a57600080fd5b830160208101925035905067ffffffffffffffff811115613e3a57600080fd5b80360382131561347a57600080fd5b60008135613e5681613423565b6001600160a01b031683526020820135613e6f81613dd7565b151560208401526040820135613e8481613423565b6001600160a01b03166040840152613e9f6060830183613de5565b60a06060860152613eb460a086018284613d8e565b6080948501359590940194909452509092915050565b61012081526000613edf61012083018c613b99565b6001600160a01b038b16602084015289604084015288606084015287608084015282810360a0840152613f13818789613d8e565b855160c08501526020860151151560e085015290505b828103610100840152613f3c8185613e49565b9c9b505050505050505050505050565b60006040828403128015613f5f57600080fd5b506040805190810167ffffffffffffffff81118282101715613f8357613f83613347565b604052823581526020830135613f9881613dd7565b60208201529392505050565b600060a08236031215613fb657600080fd5b60405160a0810167ffffffffffffffff81118282101715613fd957613fd9613347565b6040528235613fe781613423565b81526020830135613ff781613dd7565b6020820152604083013561400a81613423565b6040820152606083013567ffffffffffffffff81111561402957600080fd5b61403536828601613376565b606083015250608092830135928101929092525090565b602081526000823561405d81613423565b6001600160a01b038116602084015250602083013561407b81613423565b6001600160a01b038116604084015250600060408401359050806060840152506140a86060840184613de5565b60808085015261320d60a085018284613d8e565b6080815260006140cc8788613de5565b606060808501526140e160e085018284613d8e565b91505060208801356140f281613423565b6001600160a01b0390811660a085015260408981013560c086015290881660208501528301869052828103606084015261412d818587613d8e565b98975050505050505050565b80358252602081013561414b81613dd7565b8015156020840152505050565b6101208152600061416d61012083018c613b99565b6001600160a01b038b16602084015289604084015288606084015287608084015282810360a08401526141a1818789613d8e565b9050613f2960c0840186614139565b610120815260006141c561012083018a613b99565b6001600160a01b03891660208401528760408401528660608401528560808401528281038060a08501526000825261420c60c0850187805182526020908101511515910152565b60208101610100850152506142246020820185613e49565b9a9950505050505050505050565b60006020828403121561424457600080fd5b815161255d81613dd7565b6000806040838503121561426257600080fd5b825161426d81613423565b6020939093015192949293505050565b60a08152600061429060a0830188613b99565b82810360208401526142a3818789613d8e565b85516040850152602086015115156060850152905082810360808401526001600160a01b0384511681526020840151151560208201526001600160a01b036040850151166040820152606084015160a0606083015261430560a0830182613b99565b90506080850151608083015280925050509695505050505050565b60008251614332818460208701613b75565b919091019291505056fea2646970667358221220693ae0b8b17f09ef16bdfa12b7568fcc79067c79e3f526e5ffda735ddf429efb64736f6c634300081a0033", + Bin: "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516143726100fd60003960008181612bbd01528181612be60152612dbc01526143726000f3fe6080604052600436106101e75760003560e01c806352d1902d116101025780639d4ba46511610095578063c39aca3711610064578063c39aca37146106a2578063d547741f146106c2578063e63ab1e9146106e2578063f45346dc1461071657600080fd5b80639d4ba465146105f7578063a217fddf14610617578063ad3cb1cc1461062c578063bcf7f32b1461068257600080fd5b80638456cb59116100d15780638456cb591461054757806391d148541461055c57806397a1cef1146105c157806397d340f5146105e157600080fd5b806352d1902d146104bb5780635c975abb146104d05780637b15118b146105075780637c0dcb5f1461052757600080fd5b80632722feee1161017a5780633b283933116101495780633b283933146104535780633f4ba83a14610473578063485cc955146104885780634f1ef286146104a857600080fd5b80632722feee146103cb5780632810ae63146103f35780632f2ff15d1461041357806336568abe1461043357600080fd5b80631cb5ea75116101b65780631cb5ea75146102f657806321501a951461031657806321e093b114610336578063248a9ca31461036e57600080fd5b806301ffc9a714610261578063048ae42c1461029657806306cb8983146102b6578063184b0793146102d657600080fd5b3661025c576101f4610736565b6000546001600160a01b0316331480159061022357503373735b14bb79463307aacbed86daf3322b1e6226ab14155b1561025a576040517fb3af013700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b34801561026d57600080fd5b5061028161027c366004613305565b610794565b60405190151581526020015b60405180910390f35b3480156102a257600080fd5b5061025a6102b1366004613499565b61082d565b3480156102c257600080fd5b5061025a6102d136600461356b565b610a2d565b3480156102e257600080fd5b5061025a6102f136600461363b565b610b20565b34801561030257600080fd5b5061025a61031136600461368b565b610c0f565b34801561032257600080fd5b5061025a610331366004613739565b610cd5565b34801561034257600080fd5b50600054610356906001600160a01b031681565b6040516001600160a01b03909116815260200161028d565b34801561037a57600080fd5b506103bd6103893660046137c5565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b60405190815260200161028d565b3480156103d757600080fd5b5061035673735b14bb79463307aacbed86daf3322b1e6226ab81565b3480156103ff57600080fd5b5061025a61040e3660046137de565b610e89565b34801561041f57600080fd5b5061025a61042e366004613883565b611021565b34801561043f57600080fd5b5061025a61044e366004613883565b61106b565b34801561045f57600080fd5b5061025a61046e3660046138b3565b6110bc565b34801561047f57600080fd5b5061025a61122d565b34801561049457600080fd5b5061025a6104a3366004613946565b611262565b61025a6104b6366004613974565b61149e565b3480156104c757600080fd5b506103bd6114bd565b3480156104dc57600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610281565b34801561051357600080fd5b5061025a6105223660046139ba565b6114ec565b34801561053357600080fd5b5061025a610542366004613a2c565b6116a2565b34801561055357600080fd5b5061025a6118b6565b34801561056857600080fd5b50610281610577366004613883565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156105cd57600080fd5b5061025a6105dc366004613ab1565b6118e8565b3480156105ed57600080fd5b506103bd61040081565b34801561060357600080fd5b5061025a610612366004613b15565b611a4c565b34801561062357600080fd5b506103bd600081565b34801561063857600080fd5b506106756040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161028d9190613be3565b34801561068e57600080fd5b5061025a61069d366004613bf6565b611cbf565b3480156106ae57600080fd5b5061025a6106bd366004613bf6565b611dd6565b3480156106ce57600080fd5b5061025a6106dd366004613883565b611fcc565b3480156106ee57600080fd5b506103bd7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b34801561072257600080fd5b5061025a610731366004613c94565b612010565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615610792576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061082757507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610835612206565b61083d610736565b865160000361085f5760405163d92e233d60e01b815260040160405180910390fd5b85600003610899576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816000036108d3576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006108e36060830183613cd6565b6108ee915085613d3b565b1115610926576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610933878785612287565b90506000336001600160a01b03167f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c8a898b868c6001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c89190613d75565b6040805180820182528c81526001602082015290516109f29695949392918f918f91908e90613eca565b60405180910390a350610a2460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050505050565b610a35612206565b610a3d610736565b8135600003610a78576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610400610a886060830183613cd6565b610a93915085613d3b565b1115610acb576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610aef86868686610ae136889003880188613f4c565b610aea87613fa4565b61258a565b610b1860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b6d576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b75610736565b6001600160a01b038216610b9c5760405163d92e233d60e01b815260040160405180910390fd5b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063c9028a3690610be190849060040161404c565b600060405180830381600087803b158015610bfb57600080fd5b505af1158015610b18573d6000803e3d6000fd5b610c17612206565b610c1f610736565b81600003610c59576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610400610c696060830183613cd6565b610c74915085613d3b565b1115610cac576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610aef8686868660405180604001604052808881526020016001151581525086610aea90613fa4565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d22576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d2a610736565b6001600160a01b038316610d515760405163d92e233d60e01b815260040160405180910390fd5b83600003610d8b576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dbe57506001600160a01b03831630145b15610df5576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610dff8484612771565b6000546040517f5bcfd6160000000000000000000000000000000000000000000000000000000081526001600160a01b0380861692635bcfd61692610e50928a9216908990889088906004016140bc565b600060405180830381600087803b158015610e6a57600080fd5b505af1158015610e7e573d6000803e3d6000fd5b505050505050505050565b610e91612206565b610e99610736565b8651600003610ebb5760405163d92e233d60e01b815260040160405180910390fd5b85600003610ef5576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8135600003610f30576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610400610f406060830183613cd6565b610f4b915085613d3b565b1115610f83576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fa18673735b14bb79463307aacbed86daf3322b1e6226ab612771565b60008054604051879233927f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c92610ff0928d926001600160a01b0316918d919081908d908d908d908d90614158565b60405180910390a3610a2460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461105b8161293f565b6110658383612949565b50505050565b6001600160a01b03811633146110ad576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110b78282612a36565b505050565b6110c4612206565b6110cc610736565b85516000036110ee5760405163d92e233d60e01b815260040160405180910390fd5b84600003611128576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006111386060830183613cd6565b611143915084613d3b565b111561117b576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111998573735b14bb79463307aacbed86daf3322b1e6226ab612771565b60008054604080518082018252838152600160208201529051879333937f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c936111fc938d936001600160a01b03909316928d92909182918d918d91908d90613eca565b60405180910390a3610b1860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6112578161293f565b61125f612afa565b50565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156112ad5750825b905060008267ffffffffffffffff1660011480156112ca5750303b155b9050811580156112d8575080155b1561130f576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156113705784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038716158061138d57506001600160a01b038616155b156113ab5760405163d92e233d60e01b815260040160405180910390fd5b6113b3612b8a565b6113bb612b8a565b6113c3612b92565b6113cb612ba2565b6113d6600087612949565b506114017f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87612949565b50600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0389161790558315610a245784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050505050565b6114a6612bb2565b6114af82612c82565b6114b98282612c8d565b5050565b60006114c7612db1565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b6114f4612206565b6114fc610736565b865160000361151e5760405163d92e233d60e01b815260040160405180910390fd5b85600003611558576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8135600003611593576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006115a36060830183613cd6565b6115ae915085613d3b565b11156115e6576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006115f487878535612287565b90506000336001600160a01b03167f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c8a898b868c6001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611665573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116899190613d75565b8c8c8c8c6040516109f299989796959493929190614158565b6116aa612206565b6116b2610736565b83516000036116d45760405163d92e233d60e01b815260040160405180910390fd5b8260000361170e576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61040061171e6060830183613cd6565b90501115611758576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006117648484612e13565b90506000336001600160a01b03167f5d7cd8ae449a6b25de63f10534ddd17d8dd3e79c7aa5f28964b7a7c760258d9787868886896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f99190613d75565b60405180604001604052808c6001600160a01b031663091d27886040518163ffffffff1660e01b8152600401602060405180830381865afa158015611842573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118669190613d75565b81526001602090910152604051611884969594939291908c906141b0565b60405180910390a35061106560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6118e08161293f565b61125f612e81565b6118f0612206565b6118f8610736565b835160000361191a5760405163d92e233d60e01b815260040160405180910390fd5b82600003611954576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006119646060830183613cd6565b9050111561199e576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119bc8373735b14bb79463307aacbed86daf3322b1e6226ab612771565b60008054604080518082018252838152600160208201529051859333937f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c93611a1b938b936001600160a01b03909316928b9290918291908b906141b0565b60405180910390a361106560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611a99576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611aa1610736565b6001600160a01b0384161580611abe57506001600160a01b038216155b15611adc5760405163d92e233d60e01b815260040160405180910390fd5b82600003611b16576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821673735b14bb79463307aacbed86daf3322b1e6226ab1480611b4957506001600160a01b03821630145b15611b80576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152602482018590528516906347e7ef24906044016020604051808303816000875af1158015611be8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0c9190614232565b611c42576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063c9028a3690611c8790849060040161404c565b600060405180830381600087803b158015611ca157600080fd5b505af1158015611cb5573d6000803e3d6000fd5b5050505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611d0c576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d14610736565b6001600160a01b0385161580611d3157506001600160a01b038316155b15611d4f5760405163d92e233d60e01b815260040160405180910390fd5b6040517f5bcfd6160000000000000000000000000000000000000000000000000000000081526001600160a01b03841690635bcfd61690611d9c90899089908990889088906004016140bc565b600060405180830381600087803b158015611db657600080fd5b505af1158015611dca573d6000803e3d6000fd5b50505050505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611e23576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e2b610736565b6001600160a01b0385161580611e4857506001600160a01b038316155b15611e665760405163d92e233d60e01b815260040160405180910390fd5b83600003611ea0576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480611ed357506001600160a01b03831630145b15611f0a576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015611f72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f969190614232565b611d4f576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546120068161293f565b6110658383612a36565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461205d576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612065610736565b6001600160a01b038316158061208257506001600160a01b038116155b156120a05760405163d92e233d60e01b815260040160405180910390fd5b816000036120da576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab148061210d57506001600160a01b03811630145b15612144576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af11580156121ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d09190614232565b6110b7576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01612281576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6000806000846001600160a01b031663fc5fecd5856040518263ffffffff1660e01b81526004016122ba91815260200190565b6040805180830381865afa1580156122d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122fa919061424f565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561237f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a39190614232565b6123d9576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018790526001600160a01b038616906323b872dd906064016020604051808303816000875af1158015612445573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124699190614232565b61249f576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018790526001600160a01b038616906342966c68906024016020604051808303816000875af11580156124ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125239190614232565b612559576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b85516000036125ac5760405163d92e233d60e01b815260040160405180910390fd5b81516040517ffc5fecd5000000000000000000000000000000000000000000000000000000008152600481019190915260009081906001600160a01b0388169063fc5fecd5906024016040805180830381865afa158015612611573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612635919061424f565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af11580156126ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126de9190614232565b612714576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b866001600160a01b0316336001600160a01b03167f306ee13f48319a123b222c69908e44dcf91abffc20cacc502e3cf5a4ff23e0e48a8989898960405161275f95949392919061427d565b60405180910390a35050505050505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af11580156127e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128059190614232565b61283b576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561289a57600080fd5b505af11580156128ae573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d80600081146128ff576040519150601f19603f3d011682016040523d82523d6000602084013e612904565b606091505b50509050806110b7576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61125f8133612efa565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16612a2c576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556129e23390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610827565b6000915050610827565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615612a2c576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610827565b612b02612f87565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b610792612fe2565b612b9a612fe2565b610792613049565b612baa612fe2565b61079261309a565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480612c4b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612c3f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610792576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006114b98161293f565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612d05575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612d0291810190613d75565b60015b612d4b576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114612da7576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401612d42565b6110b783836130a2565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610792576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061255d8383846001600160a01b031663091d27886040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e7c9190613d75565b612287565b612e89610736565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833612b6c565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166114b9576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401612d42565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610792576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610792576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613051612fe2565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b612564612fe2565b6130ab826130f8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156130f0576110b782826131a0565b6114b9613216565b806001600160a01b03163b600003613147576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401612d42565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516131bd9190614320565b600060405180830381855af49150503d80600081146131f8576040519150601f19603f3d011682016040523d82523d6000602084013e6131fd565b606091505b509150915061320d85838361324e565b95945050505050565b3415610792576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060826132635761325e826132c3565b61255d565b815115801561327a57506001600160a01b0384163b155b156132bc576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401612d42565b508061255d565b8051156132d35780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561331757600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461255d57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261338757600080fd5b813567ffffffffffffffff8111156133a1576133a1613347565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff811182821017156133ee576133ee613347565b60405281815283820160200185101561340657600080fd5b816020850160208301376000918101602001919091529392505050565b6001600160a01b038116811461125f57600080fd5b60008083601f84011261344a57600080fd5b50813567ffffffffffffffff81111561346257600080fd5b60208301915083602082850101111561347a57600080fd5b9250929050565b600060a0828403121561349357600080fd5b50919050565b600080600080600080600060c0888a0312156134b457600080fd5b873567ffffffffffffffff8111156134cb57600080fd5b6134d78a828b01613376565b9750506020880135955060408801356134ef81613423565b9450606088013567ffffffffffffffff81111561350b57600080fd5b6135178a828b01613438565b9095509350506080880135915060a088013567ffffffffffffffff81111561353e57600080fd5b61354a8a828b01613481565b91505092959891949750929550565b60006040828403121561349357600080fd5b60008060008060008060c0878903121561358457600080fd5b863567ffffffffffffffff81111561359b57600080fd5b6135a789828a01613376565b96505060208701356135b881613423565b9450604087013567ffffffffffffffff8111156135d457600080fd5b6135e089828a01613438565b90955093506135f490508860608901613559565b915060a087013567ffffffffffffffff81111561361057600080fd5b61361c89828a01613481565b9150509295509295509295565b60006080828403121561349357600080fd5b6000806040838503121561364e57600080fd5b823561365981613423565b9150602083013567ffffffffffffffff81111561367557600080fd5b61368185828601613629565b9150509250929050565b60008060008060008060a087890312156136a457600080fd5b863567ffffffffffffffff8111156136bb57600080fd5b6136c789828a01613376565b96505060208701356136d881613423565b9450604087013567ffffffffffffffff8111156136f457600080fd5b61370089828a01613438565b90955093505060608701359150608087013567ffffffffffffffff81111561361057600080fd5b60006060828403121561349357600080fd5b60008060008060006080868803121561375157600080fd5b853567ffffffffffffffff81111561376857600080fd5b61377488828901613727565b95505060208601359350604086013561378c81613423565b9250606086013567ffffffffffffffff8111156137a857600080fd5b6137b488828901613438565b969995985093965092949392505050565b6000602082840312156137d757600080fd5b5035919050565b600080600080600080600060e0888a0312156137f957600080fd5b873567ffffffffffffffff81111561381057600080fd5b61381c8a828b01613376565b9750506020880135955060408801359450606088013567ffffffffffffffff81111561384757600080fd5b6138538a828b01613438565b909550935061386790508960808a01613559565b915060c088013567ffffffffffffffff81111561353e57600080fd5b6000806040838503121561389657600080fd5b8235915060208301356138a881613423565b809150509250929050565b60008060008060008060a087890312156138cc57600080fd5b863567ffffffffffffffff8111156138e357600080fd5b6138ef89828a01613376565b9650506020870135945060408701359350606087013567ffffffffffffffff81111561391a57600080fd5b61392689828a01613438565b909450925050608087013567ffffffffffffffff81111561361057600080fd5b6000806040838503121561395957600080fd5b823561396481613423565b915060208301356138a881613423565b6000806040838503121561398757600080fd5b823561399281613423565b9150602083013567ffffffffffffffff8111156139ae57600080fd5b61368185828601613376565b600080600080600080600060e0888a0312156139d557600080fd5b873567ffffffffffffffff8111156139ec57600080fd5b6139f88a828b01613376565b975050602088013595506040880135613a1081613423565b9450606088013567ffffffffffffffff81111561384757600080fd5b60008060008060808587031215613a4257600080fd5b843567ffffffffffffffff811115613a5957600080fd5b613a6587828801613376565b945050602085013592506040850135613a7d81613423565b9150606085013567ffffffffffffffff811115613a9957600080fd5b613aa587828801613481565b91505092959194509250565b60008060008060808587031215613ac757600080fd5b843567ffffffffffffffff811115613ade57600080fd5b613aea87828801613376565b9450506020850135925060408501359150606085013567ffffffffffffffff811115613a9957600080fd5b60008060008060808587031215613b2b57600080fd5b8435613b3681613423565b9350602085013592506040850135613b4d81613423565b9150606085013567ffffffffffffffff811115613b6957600080fd5b613aa587828801613629565b60005b83811015613b90578181015183820152602001613b78565b50506000910152565b60008151808452613bb1816020860160208601613b75565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061255d6020830184613b99565b60008060008060008060a08789031215613c0f57600080fd5b863567ffffffffffffffff811115613c2657600080fd5b613c3289828a01613727565b9650506020870135613c4381613423565b9450604087013593506060870135613c5a81613423565b9250608087013567ffffffffffffffff811115613c7657600080fd5b613c8289828a01613438565b979a9699509497509295939492505050565b600080600060608486031215613ca957600080fd5b8335613cb481613423565b9250602084013591506040840135613ccb81613423565b809150509250925092565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613d0b57600080fd5b83018035915067ffffffffffffffff821115613d2657600080fd5b60200191503681900382131561347a57600080fd5b80820180821115610827577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060208284031215613d8757600080fd5b5051919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b801515811461125f57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613e1a57600080fd5b830160208101925035905067ffffffffffffffff811115613e3a57600080fd5b80360382131561347a57600080fd5b60008135613e5681613423565b6001600160a01b031683526020820135613e6f81613dd7565b151560208401526040820135613e8481613423565b6001600160a01b03166040840152613e9f6060830183613de5565b60a06060860152613eb460a086018284613d8e565b6080948501359590940194909452509092915050565b61012081526000613edf61012083018c613b99565b6001600160a01b038b16602084015289604084015288606084015287608084015282810360a0840152613f13818789613d8e565b855160c08501526020860151151560e085015290505b828103610100840152613f3c8185613e49565b9c9b505050505050505050505050565b60006040828403128015613f5f57600080fd5b506040805190810167ffffffffffffffff81118282101715613f8357613f83613347565b604052823581526020830135613f9881613dd7565b60208201529392505050565b600060a08236031215613fb657600080fd5b60405160a0810167ffffffffffffffff81118282101715613fd957613fd9613347565b6040528235613fe781613423565b81526020830135613ff781613dd7565b6020820152604083013561400a81613423565b6040820152606083013567ffffffffffffffff81111561402957600080fd5b61403536828601613376565b606083015250608092830135928101929092525090565b602081526000823561405d81613423565b6001600160a01b038116602084015250602083013561407b81613423565b6001600160a01b038116604084015250600060408401359050806060840152506140a86060840184613de5565b60808085015261320d60a085018284613d8e565b6080815260006140cc8788613de5565b606060808501526140e160e085018284613d8e565b91505060208801356140f281613423565b6001600160a01b0390811660a085015260408981013560c086015290881660208501528301869052828103606084015261412d818587613d8e565b98975050505050505050565b80358252602081013561414b81613dd7565b8015156020840152505050565b6101208152600061416d61012083018c613b99565b6001600160a01b038b16602084015289604084015288606084015287608084015282810360a08401526141a1818789613d8e565b9050613f2960c0840186614139565b610120815260006141c561012083018a613b99565b6001600160a01b03891660208401528760408401528660608401528560808401528281038060a08501526000825261420c60c0850187805182526020908101511515910152565b60208101610100850152506142246020820185613e49565b9a9950505050505050505050565b60006020828403121561424457600080fd5b815161255d81613dd7565b6000806040838503121561426257600080fd5b825161426d81613423565b6020939093015192949293505050565b60a08152600061429060a0830188613b99565b82810360208401526142a3818789613d8e565b85516040850152602086015115156060850152905082810360808401526001600160a01b0384511681526020840151151560208201526001600160a01b036040850151166040820152606084015160a0606083015261430560a0830182613b99565b90506080850151608083015280925050509695505050505050565b60008251614332818460208701613b75565b919091019291505056fea2646970667358221220a3c1c96c344dc9fbaddfad3e45e555546883a56988faf6afdb2134108056ef0564736f6c634300081a0033", } // GatewayZEVMUpgradeTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/math.sol/math.go b/v2/pkg/math.sol/math.go index 3a12607e3..d52f795de 100644 --- a/v2/pkg/math.sol/math.go +++ b/v2/pkg/math.sol/math.go @@ -32,7 +32,7 @@ var ( // MathMetaData contains all meta data concerning the Math contract. var MathMetaData = &bind.MetaData{ ABI: "[{\"type\":\"error\",\"name\":\"MathOverflowedMulDiv\",\"inputs\":[]}]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220963d6a471e72b9bb9993a7857cbf4ef7f6b2ae696bb4d38a8d43cbdf2744b5ab64736f6c634300081a0033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206a7c7177badb1ffa5d746dcaecb2228630fd6d795c607724d5c34ddd7a04b68464736f6c634300081a0033", } // MathABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/mockerc20.sol/mockerc20.go b/v2/pkg/mockerc20.sol/mockerc20.go index 9fb9a2a55..ebc9f8cfd 100644 --- a/v2/pkg/mockerc20.sol/mockerc20.go +++ b/v2/pkg/mockerc20.sol/mockerc20.go @@ -32,7 +32,7 @@ var ( // 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: "0x6080604052348015600f57600080fd5b5061113e8061001f6000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b41146101d2578063a9059cbb146101da578063d505accf146101ed578063dd62ed3e1461020057600080fd5b80633644e5151461017457806370a082311461017c5780637ecebe00146101b257600080fd5b806318160ddd116100bd57806318160ddd1461013a57806323b872dd1461014c578063313ce5671461015f57600080fd5b806306fdde03146100e4578063095ea7b3146101025780631624f6c614610125575b600080fd5b6100ec610246565b6040516100f99190610b6b565b60405180910390f35b610115610110366004610be2565b6102d8565b60405190151581526020016100f9565b610138610133366004610cdc565b610352565b005b6003545b6040519081526020016100f9565b61011561015a366004610d55565b610451565b60025460405160ff90911681526020016100f9565b61013e6105c5565b61013e61018a366004610d92565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b61013e6101c0366004610d92565b60086020526000908152604090205481565b6100ec6105eb565b6101156101e8366004610be2565b6105fa565b6101386101fb366004610dad565b6106ab565b61013e61020e366004610e18565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b60606000805461025590610e4b565b80601f016020809104026020016040519081016040528092919081815260200182805461028190610e4b565b80156102ce5780601f106102a3576101008083540402835291602001916102ce565b820191906000526020600020905b8154815290600101906020018083116102b157829003601f168201915b5050505050905090565b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103409086815260200190565b60405180910390a35060015b92915050565b60095460ff16156103c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f414c52454144595f494e495449414c495a45440000000000000000000000000060448201526064015b60405180910390fd5b60006103d08482610eed565b5060016103dd8382610eed565b50600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff83161790556104136109b5565b60065561041e6109ce565b6007555050600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905550565b73ffffffffffffffffffffffffffffffffffffffff831660009081526005602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146104e5576104b38184610a71565b73ffffffffffffffffffffffffffffffffffffffff861660009081526005602090815260408083203384529091529020555b73ffffffffffffffffffffffffffffffffffffffff85166000908152600460205260409020546105159084610a71565b73ffffffffffffffffffffffffffffffffffffffff80871660009081526004602052604080822093909355908616815220546105519084610aee565b73ffffffffffffffffffffffffffffffffffffffff80861660008181526004602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906105b29087815260200190565b60405180910390a3506001949350505050565b60006006546105d26109b5565b146105e4576105df6109ce565b905090565b5060075490565b60606001805461025590610e4b565b336000908152600460205260408120546106149083610a71565b336000908152600460205260408082209290925573ffffffffffffffffffffffffffffffffffffffff85168152205461064d9083610aee565b73ffffffffffffffffffffffffffffffffffffffff84166000818152600460205260409081902092909255905133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103409086815260200190565b42841015610715576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064016103bb565b600060016107216105c5565b73ffffffffffffffffffffffffffffffffffffffff8a16600090815260086020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928d928d928d9290919061077c83611017565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810188905260e0016040516020818303038152906040528051906020012060405160200161081d9291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa15801561087b573d6000803e3d6000fd5b5050604051601f19015191505073ffffffffffffffffffffffffffffffffffffffff8116158015906108d857508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b61093e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e455200000000000000000000000000000000000060448201526064016103bb565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526005602090815260408083208b8516808552908352928190208a90555189815291928b16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35050505050505050565b6000610b67806109c763ffffffff8216565b9250505090565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051610a00919061104f565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6610a316109b5565b604080516020810195909552840192909252606083015260808201523060a082015260c00160405160208183030381529060405280519060200120905090565b600081831015610add576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f45524332303a207375627472616374696f6e20756e646572666c6f770000000060448201526064016103bb565b610ae782846110e2565b9392505050565b600080610afb83856110f5565b905083811015610ae7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45524332303a206164646974696f6e206f766572666c6f77000000000000000060448201526064016103bb565b4690565b602081526000825180602084015260005b81811015610b995760208186018101516040868401015201610b7c565b506000604082850101526040601f19601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bdd57600080fd5b919050565b60008060408385031215610bf557600080fd5b610bfe83610bb9565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112610c4c57600080fd5b813567ffffffffffffffff811115610c6657610c66610c0c565b604051601f19603f601f19601f8501160116810181811067ffffffffffffffff82111715610c9657610c96610c0c565b604052818152838201602001851015610cae57600080fd5b816020850160208301376000918101602001919091529392505050565b803560ff81168114610bdd57600080fd5b600080600060608486031215610cf157600080fd5b833567ffffffffffffffff811115610d0857600080fd5b610d1486828701610c3b565b935050602084013567ffffffffffffffff811115610d3157600080fd5b610d3d86828701610c3b565b925050610d4c60408501610ccb565b90509250925092565b600080600060608486031215610d6a57600080fd5b610d7384610bb9565b9250610d8160208501610bb9565b929592945050506040919091013590565b600060208284031215610da457600080fd5b610ae782610bb9565b600080600080600080600060e0888a031215610dc857600080fd5b610dd188610bb9565b9650610ddf60208901610bb9565b95506040880135945060608801359350610dfb60808901610ccb565b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610e2b57600080fd5b610e3483610bb9565b9150610e4260208401610bb9565b90509250929050565b600181811c90821680610e5f57607f821691505b602082108103610e98577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f821115610ee857806000526020600020601f840160051c81016020851015610ec55750805b601f840160051c820191505b81811015610ee55760008155600101610ed1565b50505b505050565b815167ffffffffffffffff811115610f0757610f07610c0c565b610f1b81610f158454610e4b565b84610e9e565b6020601f821160018114610f6d5760008315610f375750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455610ee5565b600084815260208120601f198516915b82811015610f9d5787850151825560209485019460019092019101610f7d565b5084821015610fd957868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361104857611048610fe8565b5060010190565b600080835461105d81610e4b565b60018216801561107457600181146110a7576110d7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831686528115158202860193506110d7565b86600052602060002060005b838110156110cf578154888201526001909101906020016110b3565b505081860193505b509195945050505050565b8181038181111561034c5761034c610fe8565b8082018082111561034c5761034c610fe856fea2646970667358221220e60976f3145da4401c14d2c6022f76f2d06cfe9e76a0ae4c57e08d3cced9159964736f6c634300081a0033", + Bin: "0x6080604052348015600f57600080fd5b5061113e8061001f6000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b41146101d2578063a9059cbb146101da578063d505accf146101ed578063dd62ed3e1461020057600080fd5b80633644e5151461017457806370a082311461017c5780637ecebe00146101b257600080fd5b806318160ddd116100bd57806318160ddd1461013a57806323b872dd1461014c578063313ce5671461015f57600080fd5b806306fdde03146100e4578063095ea7b3146101025780631624f6c614610125575b600080fd5b6100ec610246565b6040516100f99190610b6b565b60405180910390f35b610115610110366004610be2565b6102d8565b60405190151581526020016100f9565b610138610133366004610cdc565b610352565b005b6003545b6040519081526020016100f9565b61011561015a366004610d55565b610451565b60025460405160ff90911681526020016100f9565b61013e6105c5565b61013e61018a366004610d92565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b61013e6101c0366004610d92565b60086020526000908152604090205481565b6100ec6105eb565b6101156101e8366004610be2565b6105fa565b6101386101fb366004610dad565b6106ab565b61013e61020e366004610e18565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b60606000805461025590610e4b565b80601f016020809104026020016040519081016040528092919081815260200182805461028190610e4b565b80156102ce5780601f106102a3576101008083540402835291602001916102ce565b820191906000526020600020905b8154815290600101906020018083116102b157829003601f168201915b5050505050905090565b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103409086815260200190565b60405180910390a35060015b92915050565b60095460ff16156103c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f414c52454144595f494e495449414c495a45440000000000000000000000000060448201526064015b60405180910390fd5b60006103d08482610eed565b5060016103dd8382610eed565b50600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff83161790556104136109b5565b60065561041e6109ce565b6007555050600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905550565b73ffffffffffffffffffffffffffffffffffffffff831660009081526005602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146104e5576104b38184610a71565b73ffffffffffffffffffffffffffffffffffffffff861660009081526005602090815260408083203384529091529020555b73ffffffffffffffffffffffffffffffffffffffff85166000908152600460205260409020546105159084610a71565b73ffffffffffffffffffffffffffffffffffffffff80871660009081526004602052604080822093909355908616815220546105519084610aee565b73ffffffffffffffffffffffffffffffffffffffff80861660008181526004602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906105b29087815260200190565b60405180910390a3506001949350505050565b60006006546105d26109b5565b146105e4576105df6109ce565b905090565b5060075490565b60606001805461025590610e4b565b336000908152600460205260408120546106149083610a71565b336000908152600460205260408082209290925573ffffffffffffffffffffffffffffffffffffffff85168152205461064d9083610aee565b73ffffffffffffffffffffffffffffffffffffffff84166000818152600460205260409081902092909255905133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103409086815260200190565b42841015610715576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064016103bb565b600060016107216105c5565b73ffffffffffffffffffffffffffffffffffffffff8a16600090815260086020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928d928d928d9290919061077c83611017565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810188905260e0016040516020818303038152906040528051906020012060405160200161081d9291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa15801561087b573d6000803e3d6000fd5b5050604051601f19015191505073ffffffffffffffffffffffffffffffffffffffff8116158015906108d857508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b61093e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e455200000000000000000000000000000000000060448201526064016103bb565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526005602090815260408083208b8516808552908352928190208a90555189815291928b16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35050505050505050565b6000610b67806109c763ffffffff8216565b9250505090565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051610a00919061104f565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6610a316109b5565b604080516020810195909552840192909252606083015260808201523060a082015260c00160405160208183030381529060405280519060200120905090565b600081831015610add576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f45524332303a207375627472616374696f6e20756e646572666c6f770000000060448201526064016103bb565b610ae782846110e2565b9392505050565b600080610afb83856110f5565b905083811015610ae7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45524332303a206164646974696f6e206f766572666c6f77000000000000000060448201526064016103bb565b4690565b602081526000825180602084015260005b81811015610b995760208186018101516040868401015201610b7c565b506000604082850101526040601f19601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bdd57600080fd5b919050565b60008060408385031215610bf557600080fd5b610bfe83610bb9565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112610c4c57600080fd5b813567ffffffffffffffff811115610c6657610c66610c0c565b604051601f19603f601f19601f8501160116810181811067ffffffffffffffff82111715610c9657610c96610c0c565b604052818152838201602001851015610cae57600080fd5b816020850160208301376000918101602001919091529392505050565b803560ff81168114610bdd57600080fd5b600080600060608486031215610cf157600080fd5b833567ffffffffffffffff811115610d0857600080fd5b610d1486828701610c3b565b935050602084013567ffffffffffffffff811115610d3157600080fd5b610d3d86828701610c3b565b925050610d4c60408501610ccb565b90509250925092565b600080600060608486031215610d6a57600080fd5b610d7384610bb9565b9250610d8160208501610bb9565b929592945050506040919091013590565b600060208284031215610da457600080fd5b610ae782610bb9565b600080600080600080600060e0888a031215610dc857600080fd5b610dd188610bb9565b9650610ddf60208901610bb9565b95506040880135945060608801359350610dfb60808901610ccb565b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610e2b57600080fd5b610e3483610bb9565b9150610e4260208401610bb9565b90509250929050565b600181811c90821680610e5f57607f821691505b602082108103610e98577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f821115610ee857806000526020600020601f840160051c81016020851015610ec55750805b601f840160051c820191505b81811015610ee55760008155600101610ed1565b50505b505050565b815167ffffffffffffffff811115610f0757610f07610c0c565b610f1b81610f158454610e4b565b84610e9e565b6020601f821160018114610f6d5760008315610f375750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455610ee5565b600084815260208120601f198516915b82811015610f9d5787850151825560209485019460019092019101610f7d565b5084821015610fd957868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361104857611048610fe8565b5060010190565b600080835461105d81610e4b565b60018216801561107457600181146110a7576110d7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831686528115158202860193506110d7565b86600052602060002060005b838110156110cf578154888201526001909101906020016110b3565b505081860193505b509195945050505050565b8181038181111561034c5761034c610fe8565b8082018082111561034c5761034c610fe856fea26469706673582212204e90d1d8dd8ec2d599f9af8961e20f75b3b78e39769fe3350770227fa7f4e7d264736f6c634300081a0033", } // MockERC20ABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/mockerc721.sol/mockerc721.go b/v2/pkg/mockerc721.sol/mockerc721.go index 29ff5fb60..10b8b6cb3 100644 --- a/v2/pkg/mockerc721.sol/mockerc721.go +++ b/v2/pkg/mockerc721.sol/mockerc721.go @@ -32,7 +32,7 @@ var ( // 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: "0x6080604052348015600f57600080fd5b506114b88061001f6000396000f3fe6080604052600436106100dd5760003560e01c80636352211e1161007f578063a22cb46511610059578063a22cb4651461025f578063b88d4fde1461027f578063c87b56dd14610292578063e985e9c5146102b357600080fd5b80636352211e146101fc57806370a082311461021c57806395d89b411461024a57600080fd5b8063095ea7b3116100bb578063095ea7b3146101a157806323b872dd146101b657806342842e0e146101c95780634cd88b76146101dc57600080fd5b806301ffc9a7146100e257806306fdde0314610117578063081812fc14610139575b600080fd5b3480156100ee57600080fd5b506101026100fd366004610e1f565b610309565b60405190151581526020015b60405180910390f35b34801561012357600080fd5b5061012c6103ee565b60405161010e9190610ea7565b34801561014557600080fd5b5061017c610154366004610eba565b60009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010e565b6101b46101af366004610ef7565b610480565b005b6101b46101c4366004610f21565b6105cf565b6101b46101d7366004610f21565b6108c4565b3480156101e857600080fd5b506101b46101f7366004611045565b610a18565b34801561020857600080fd5b5061017c610217366004610eba565b610ace565b34801561022857600080fd5b5061023c6102373660046110ae565b610b5f565b60405190815260200161010e565b34801561025657600080fd5b5061012c610c07565b34801561026b57600080fd5b506101b461027a3660046110c9565b610c16565b6101b461028d366004611105565b610cad565b34801561029e57600080fd5b5061012c6102ad366004610eba565b50606090565b3480156102bf57600080fd5b506101026102ce366004611181565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061039c57507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806103e857507f5b5e139f000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060600080546103fd906111b4565b80601f0160208091040260200160405190810160405280929190818152602001828054610429906111b4565b80156104765780601f1061044b57610100808354040283529160200191610476565b820191906000526020600020905b81548152906001019060200180831161045957829003601f168201915b5050505050905090565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16338114806104e3575073ffffffffffffffffffffffffffffffffffffffff8116600090815260056020908152604080832033845290915290205460ff165b61054e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064015b60405180910390fd5b60008281526004602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff84811691161461065f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f57524f4e475f46524f4d000000000000000000000000000000000000000000006044820152606401610545565b73ffffffffffffffffffffffffffffffffffffffff82166106dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152606401610545565b3373ffffffffffffffffffffffffffffffffffffffff84161480610730575073ffffffffffffffffffffffffffffffffffffffff8316600090815260056020908152604080832033845290915290205460ff165b8061075e575060008181526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1633145b6107c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610545565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081208054916107f583611236565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040812080549161082b8361126b565b90915550506000818152600260209081526040808320805473ffffffffffffffffffffffffffffffffffffffff8088167fffffffffffffffffffffffff000000000000000000000000000000000000000092831681179093556004909452828520805490911690559051849391928716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6108cf8383836105cf565b813b15806109ad57506040517f150b7a020000000000000000000000000000000000000000000000000000000080825233600483015273ffffffffffffffffffffffffffffffffffffffff858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610965573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098991906112a3565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610a13576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610545565b505050565b60065460ff1615610a85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f414c52454144595f494e495449414c495a4544000000000000000000000000006044820152606401610545565b6000610a91838261130e565b506001610a9e828261130e565b5050600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905550565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610b5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152606401610545565b919050565b600073ffffffffffffffffffffffffffffffffffffffff8216610bde576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152606401610545565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6060600180546103fd906111b4565b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610cb88484846105cf565b823b1580610d8257506040517f150b7a02000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290610d1b903390899088908890600401611427565b6020604051808303816000875af1158015610d3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5e91906112a3565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610de8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610545565b50505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610e1c57600080fd5b50565b600060208284031215610e3157600080fd5b8135610e3c81610dee565b9392505050565b6000815180845260005b81811015610e6957602081850181015186830182015201610e4d565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081526000610e3c6020830184610e43565b600060208284031215610ecc57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610b5a57600080fd5b60008060408385031215610f0a57600080fd5b610f1383610ed3565b946020939093013593505050565b600080600060608486031215610f3657600080fd5b610f3f84610ed3565b9250610f4d60208501610ed3565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff841115610fa857610fa8610f5e565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff82111715610ff557610ff5610f5e565b60405283815290508082840185101561100d57600080fd5b83836020830137600060208583010152509392505050565b600082601f83011261103657600080fd5b610e3c83833560208501610f8d565b6000806040838503121561105857600080fd5b823567ffffffffffffffff81111561106f57600080fd5b61107b85828601611025565b925050602083013567ffffffffffffffff81111561109857600080fd5b6110a485828601611025565b9150509250929050565b6000602082840312156110c057600080fd5b610e3c82610ed3565b600080604083850312156110dc57600080fd5b6110e583610ed3565b9150602083013580151581146110fa57600080fd5b809150509250929050565b6000806000806080858703121561111b57600080fd5b61112485610ed3565b935061113260208601610ed3565b925060408501359150606085013567ffffffffffffffff81111561115557600080fd5b8501601f8101871361116657600080fd5b61117587823560208401610f8d565b91505092959194509250565b6000806040838503121561119457600080fd5b61119d83610ed3565b91506111ab60208401610ed3565b90509250929050565b600181811c908216806111c857607f821691505b602082108103611201577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008161124557611245611207565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361129c5761129c611207565b5060010190565b6000602082840312156112b557600080fd5b8151610e3c81610dee565b601f821115610a1357806000526020600020601f840160051c810160208510156112e75750805b601f840160051c820191505b8181101561130757600081556001016112f3565b5050505050565b815167ffffffffffffffff81111561132857611328610f5e565b61133c8161133684546111b4565b846112c0565b6020601f82116001811461138e57600083156113585750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611307565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156113dc57878501518255602094850194600190920191016113bc565b508482101561141857868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b73ffffffffffffffffffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff841660208201528260408201526080606082015260006114786080830184610e43565b969550505050505056fea2646970667358221220b6b495c9b63d00818c09eb284b3a3416b0da31aa8127423e4c3a355d7bba2eb164736f6c634300081a0033", + Bin: "0x6080604052348015600f57600080fd5b506114b88061001f6000396000f3fe6080604052600436106100dd5760003560e01c80636352211e1161007f578063a22cb46511610059578063a22cb4651461025f578063b88d4fde1461027f578063c87b56dd14610292578063e985e9c5146102b357600080fd5b80636352211e146101fc57806370a082311461021c57806395d89b411461024a57600080fd5b8063095ea7b3116100bb578063095ea7b3146101a157806323b872dd146101b657806342842e0e146101c95780634cd88b76146101dc57600080fd5b806301ffc9a7146100e257806306fdde0314610117578063081812fc14610139575b600080fd5b3480156100ee57600080fd5b506101026100fd366004610e1f565b610309565b60405190151581526020015b60405180910390f35b34801561012357600080fd5b5061012c6103ee565b60405161010e9190610ea7565b34801561014557600080fd5b5061017c610154366004610eba565b60009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010e565b6101b46101af366004610ef7565b610480565b005b6101b46101c4366004610f21565b6105cf565b6101b46101d7366004610f21565b6108c4565b3480156101e857600080fd5b506101b46101f7366004611045565b610a18565b34801561020857600080fd5b5061017c610217366004610eba565b610ace565b34801561022857600080fd5b5061023c6102373660046110ae565b610b5f565b60405190815260200161010e565b34801561025657600080fd5b5061012c610c07565b34801561026b57600080fd5b506101b461027a3660046110c9565b610c16565b6101b461028d366004611105565b610cad565b34801561029e57600080fd5b5061012c6102ad366004610eba565b50606090565b3480156102bf57600080fd5b506101026102ce366004611181565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061039c57507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806103e857507f5b5e139f000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060600080546103fd906111b4565b80601f0160208091040260200160405190810160405280929190818152602001828054610429906111b4565b80156104765780601f1061044b57610100808354040283529160200191610476565b820191906000526020600020905b81548152906001019060200180831161045957829003601f168201915b5050505050905090565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16338114806104e3575073ffffffffffffffffffffffffffffffffffffffff8116600090815260056020908152604080832033845290915290205460ff165b61054e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064015b60405180910390fd5b60008281526004602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff84811691161461065f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f57524f4e475f46524f4d000000000000000000000000000000000000000000006044820152606401610545565b73ffffffffffffffffffffffffffffffffffffffff82166106dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152606401610545565b3373ffffffffffffffffffffffffffffffffffffffff84161480610730575073ffffffffffffffffffffffffffffffffffffffff8316600090815260056020908152604080832033845290915290205460ff165b8061075e575060008181526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1633145b6107c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610545565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081208054916107f583611236565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040812080549161082b8361126b565b90915550506000818152600260209081526040808320805473ffffffffffffffffffffffffffffffffffffffff8088167fffffffffffffffffffffffff000000000000000000000000000000000000000092831681179093556004909452828520805490911690559051849391928716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6108cf8383836105cf565b813b15806109ad57506040517f150b7a020000000000000000000000000000000000000000000000000000000080825233600483015273ffffffffffffffffffffffffffffffffffffffff858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610965573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098991906112a3565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610a13576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610545565b505050565b60065460ff1615610a85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f414c52454144595f494e495449414c495a4544000000000000000000000000006044820152606401610545565b6000610a91838261130e565b506001610a9e828261130e565b5050600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905550565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610b5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152606401610545565b919050565b600073ffffffffffffffffffffffffffffffffffffffff8216610bde576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152606401610545565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6060600180546103fd906111b4565b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610cb88484846105cf565b823b1580610d8257506040517f150b7a02000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290610d1b903390899088908890600401611427565b6020604051808303816000875af1158015610d3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5e91906112a3565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610de8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610545565b50505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610e1c57600080fd5b50565b600060208284031215610e3157600080fd5b8135610e3c81610dee565b9392505050565b6000815180845260005b81811015610e6957602081850181015186830182015201610e4d565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081526000610e3c6020830184610e43565b600060208284031215610ecc57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610b5a57600080fd5b60008060408385031215610f0a57600080fd5b610f1383610ed3565b946020939093013593505050565b600080600060608486031215610f3657600080fd5b610f3f84610ed3565b9250610f4d60208501610ed3565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff841115610fa857610fa8610f5e565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff82111715610ff557610ff5610f5e565b60405283815290508082840185101561100d57600080fd5b83836020830137600060208583010152509392505050565b600082601f83011261103657600080fd5b610e3c83833560208501610f8d565b6000806040838503121561105857600080fd5b823567ffffffffffffffff81111561106f57600080fd5b61107b85828601611025565b925050602083013567ffffffffffffffff81111561109857600080fd5b6110a485828601611025565b9150509250929050565b6000602082840312156110c057600080fd5b610e3c82610ed3565b600080604083850312156110dc57600080fd5b6110e583610ed3565b9150602083013580151581146110fa57600080fd5b809150509250929050565b6000806000806080858703121561111b57600080fd5b61112485610ed3565b935061113260208601610ed3565b925060408501359150606085013567ffffffffffffffff81111561115557600080fd5b8501601f8101871361116657600080fd5b61117587823560208401610f8d565b91505092959194509250565b6000806040838503121561119457600080fd5b61119d83610ed3565b91506111ab60208401610ed3565b90509250929050565b600181811c908216806111c857607f821691505b602082108103611201577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008161124557611245611207565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361129c5761129c611207565b5060010190565b6000602082840312156112b557600080fd5b8151610e3c81610dee565b601f821115610a1357806000526020600020601f840160051c810160208510156112e75750805b601f840160051c820191505b8181101561130757600081556001016112f3565b5050505050565b815167ffffffffffffffff81111561132857611328610f5e565b61133c8161133684546111b4565b846112c0565b6020601f82116001811461138e57600083156113585750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611307565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156113dc57878501518255602094850194600190920191016113bc565b508482101561141857868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b73ffffffffffffffffffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff841660208201528260408201526080606082015260006114786080830184610e43565b969550505050505056fea264697066735822122099247a35709cc46d2d666002ffd5468b85fdf95bb97ff065765f392a4b68498064736f6c634300081a0033", } // MockERC721ABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/proxyadmin.sol/proxyadmin.go b/v2/pkg/proxyadmin.sol/proxyadmin.go index 20fe3adf7..d28df1e8c 100644 --- a/v2/pkg/proxyadmin.sol/proxyadmin.go +++ b/v2/pkg/proxyadmin.sol/proxyadmin.go @@ -32,7 +32,7 @@ var ( // 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: "0x608060405234801561001057600080fd5b5060405161068438038061068483398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610587806100fd6000396000f3fe60806040526004361061005a5760003560e01c80639623609d116100435780639623609d146100b0578063ad3cb1cc146100c3578063f2fde38b1461011957600080fd5b8063715018a61461005f5780638da5cb5b14610076575b600080fd5b34801561006b57600080fd5b50610074610139565b005b34801561008257600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100746100be366004610364565b61014d565b3480156100cf57600080fd5b5061010c6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a791906104e3565b34801561012557600080fd5b506100746101343660046104fd565b6101e2565b61014161024b565b61014b600061029e565b565b61015561024b565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101ab908690869060040161051a565b6000604051808303818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b5050505050505050565b6101ea61024b565b73ffffffffffffffffffffffffffffffffffffffff811661023f576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6102488161029e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461014b576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610236565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461024857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561037957600080fd5b833561038481610313565b9250602084013561039481610313565b9150604084013567ffffffffffffffff8111156103b057600080fd5b8401601f810186136103c157600080fd5b803567ffffffffffffffff8111156103db576103db610335565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561044757610447610335565b60405281815282820160200188101561045f57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000815180845260005b818110156104a557602081850181015186830182015201610489565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104f6602083018461047f565b9392505050565b60006020828403121561050f57600080fd5b81356104f681610313565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610549604083018461047f565b94935050505056fea2646970667358221220bfcb42a89a84dac0635a45bd4013ab76b4d822e9c9c757167dcf256da0cea66f64736f6c634300081a0033", + Bin: "0x608060405234801561001057600080fd5b5060405161068438038061068483398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610587806100fd6000396000f3fe60806040526004361061005a5760003560e01c80639623609d116100435780639623609d146100b0578063ad3cb1cc146100c3578063f2fde38b1461011957600080fd5b8063715018a61461005f5780638da5cb5b14610076575b600080fd5b34801561006b57600080fd5b50610074610139565b005b34801561008257600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100746100be366004610364565b61014d565b3480156100cf57600080fd5b5061010c6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a791906104e3565b34801561012557600080fd5b506100746101343660046104fd565b6101e2565b61014161024b565b61014b600061029e565b565b61015561024b565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101ab908690869060040161051a565b6000604051808303818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b5050505050505050565b6101ea61024b565b73ffffffffffffffffffffffffffffffffffffffff811661023f576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6102488161029e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461014b576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610236565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461024857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561037957600080fd5b833561038481610313565b9250602084013561039481610313565b9150604084013567ffffffffffffffff8111156103b057600080fd5b8401601f810186136103c157600080fd5b803567ffffffffffffffff8111156103db576103db610335565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561044757610447610335565b60405281815282820160200188101561045f57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000815180845260005b818110156104a557602081850181015186830182015201610489565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104f6602083018461047f565b9392505050565b60006020828403121561050f57600080fd5b81356104f681610313565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610549604083018461047f565b94935050505056fea2646970667358221220cc8bbfd5df3920285befce3b27271fc70ad0dfb073ae2b9db9df8353b1cc6fff64736f6c634300081a0033", } // ProxyAdminABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/receiverevm.sol/receiverevm.go b/v2/pkg/receiverevm.sol/receiverevm.go index 7f4b60c5c..f2a64c5cf 100644 --- a/v2/pkg/receiverevm.sol/receiverevm.go +++ b/v2/pkg/receiverevm.sol/receiverevm.go @@ -45,7 +45,7 @@ type RevertContext struct { // 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\":\"onCall\",\"inputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structMessageContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"onRevert\",\"inputs\":[{\"name\":\"revertContext\",\"type\":\"tuple\",\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"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\":\"ReceivedOnCall\",\"inputs\":[],\"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\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"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: "0x6080604052348015600f57600080fd5b506001600055610e9e806100246000396000f3fe60806040526004361061006e5760003560e01c8063c51316911161004b578063c5131691146100d5578063c9028a36146100f5578063e04d4f9714610115578063f05b6abf1461012857005b8063357fc5a214610077578063676cc054146100975780636ed70169146100c057005b3661007557005b005b34801561008357600080fd5b506100756100923660046106ec565b610148565b6100aa6100a5366004610728565b6101de565b6040516100b79190610823565b60405180910390f35b3480156100cc57600080fd5b50610075610222565b3480156100e157600080fd5b506100756100f03660046106ec565b610257565b34801561010157600080fd5b50610075610110366004610836565b610332565b610075610123366004610996565b61036e565b34801561013457600080fd5b50610075610143366004610a82565b6103b2565b6101506103e7565b61017273ffffffffffffffffffffffffffffffffffffffff831633838661042a565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101d96001600055565b505050565b6040516060907f3658b46bab672c7672b69c2f0feda706eabdb7d2231421c96e9049b2db5e7eee90600090a1506040805160208101909152600081525b9392505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b61025f6103e7565b600061026c600285610b6c565b9050806000036102a8576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102ca73ffffffffffffffffffffffffffffffffffffffff841633848461042a565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101d96001600055565b7f689a5a5cb55e795ffe4cd8b419cd3bb0a3373974c54d25f64e734d7388b93e9b3382604051610363929190610bf0565b60405180910390a150565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa33348585856040516103a5959493929190610ce2565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103a59493929190610d6c565b600260005403610423576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526104bf9085906104c5565b50505050565b60006104e773ffffffffffffffffffffffffffffffffffffffff841683610560565b9050805160001415801561050c57508080602001905181019061050a9190610e2f565b155b156101d9576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061021b83836000846000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105939190610e4c565b60006040518083038185875af1925050503d80600081146105d0576040519150601f19603f3d011682016040523d82523d6000602084013e6105d5565b606091505b50915091506105e58683836105ef565b9695505050505050565b606082610604576105ff8261067e565b61021b565b8151158015610628575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610677576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610557565b508061021b565b80511561068e5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106e757600080fd5b919050565b60008060006060848603121561070157600080fd5b83359250610711602085016106c3565b915061071f604085016106c3565b90509250925092565b6000806000838503604081121561073e57600080fd5b602081121561074c57600080fd5b50839250602084013567ffffffffffffffff81111561076a57600080fd5b8401601f8101861361077b57600080fd5b803567ffffffffffffffff81111561079257600080fd5b8660208284010111156107a457600080fd5b939660209190910195509293505050565b60005b838110156107d05781810151838201526020016107b8565b50506000910152565b600081518084526107f18160208601602086016107b5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061021b60208301846107d9565b60006020828403121561084857600080fd5b813567ffffffffffffffff81111561085f57600080fd5b82016080818503121561021b57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156108e7576108e7610871565b604052919050565b600082601f83011261090057600080fd5b813567ffffffffffffffff81111561091a5761091a610871565b61094b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016108a0565b81815284602083860101111561096057600080fd5b816020850160208301376000918101602001919091529392505050565b80151581146106c057600080fd5b80356106e78161097d565b6000806000606084860312156109ab57600080fd5b833567ffffffffffffffff8111156109c257600080fd5b6109ce868287016108ef565b9350506020840135915060408401356109e68161097d565b809150509250925092565b600067ffffffffffffffff821115610a0b57610a0b610871565b5060051b60200190565b600082601f830112610a2657600080fd5b8135610a39610a34826109f1565b6108a0565b8082825260208201915060208360051b860101925085831115610a5b57600080fd5b602085015b83811015610a78578035835260209283019201610a60565b5095945050505050565b600080600060608486031215610a9757600080fd5b833567ffffffffffffffff811115610aae57600080fd5b8401601f81018613610abf57600080fd5b8035610acd610a34826109f1565b8082825260208201915060208360051b850101925088831115610aef57600080fd5b602084015b83811015610b3157803567ffffffffffffffff811115610b1357600080fd5b610b228b6020838901016108ef565b84525060209283019201610af4565b509550505050602084013567ffffffffffffffff811115610b5157600080fd5b610b5d86828701610a15565b92505061071f6040850161098b565b600082610ba2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015273ffffffffffffffffffffffffffffffffffffffff610c2e836106c3565b16604082015273ffffffffffffffffffffffffffffffffffffffff610c55602084016106c3565b166060820152600080604084013590508060808401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610ca157600080fd5b830160208101903567ffffffffffffffff811115610cbe57600080fd5b803603821315610ccd57600080fd5b608060a08501526105e560c085018284610ba7565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610d1760a08301866107d9565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610d62578151865260209586019590910190600101610d44565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610dff577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610dea8583516107d9565b94506020938401939190910190600101610db0565b505050508281036040840152610e158186610d30565b915050610e26606083018415159052565b95945050505050565b600060208284031215610e4157600080fd5b815161021b8161097d565b60008251610e5e8184602087016107b5565b919091019291505056fea2646970667358221220dbbcdb2ae8ea201fd0567f815d9a6ce082b3a1b6ed3f6fce312e955f9aa11e1364736f6c634300081a0033", + Bin: "0x6080604052348015600f57600080fd5b506001600055610e9e806100246000396000f3fe60806040526004361061006e5760003560e01c8063c51316911161004b578063c5131691146100d5578063c9028a36146100f5578063e04d4f9714610115578063f05b6abf1461012857005b8063357fc5a214610077578063676cc054146100975780636ed70169146100c057005b3661007557005b005b34801561008357600080fd5b506100756100923660046106ec565b610148565b6100aa6100a5366004610728565b6101de565b6040516100b79190610823565b60405180910390f35b3480156100cc57600080fd5b50610075610222565b3480156100e157600080fd5b506100756100f03660046106ec565b610257565b34801561010157600080fd5b50610075610110366004610836565b610332565b610075610123366004610996565b61036e565b34801561013457600080fd5b50610075610143366004610a82565b6103b2565b6101506103e7565b61017273ffffffffffffffffffffffffffffffffffffffff831633838661042a565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101d96001600055565b505050565b6040516060907f3658b46bab672c7672b69c2f0feda706eabdb7d2231421c96e9049b2db5e7eee90600090a1506040805160208101909152600081525b9392505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b61025f6103e7565b600061026c600285610b6c565b9050806000036102a8576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102ca73ffffffffffffffffffffffffffffffffffffffff841633848461042a565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101d96001600055565b7f689a5a5cb55e795ffe4cd8b419cd3bb0a3373974c54d25f64e734d7388b93e9b3382604051610363929190610bf0565b60405180910390a150565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa33348585856040516103a5959493929190610ce2565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103a59493929190610d6c565b600260005403610423576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526104bf9085906104c5565b50505050565b60006104e773ffffffffffffffffffffffffffffffffffffffff841683610560565b9050805160001415801561050c57508080602001905181019061050a9190610e2f565b155b156101d9576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061021b83836000846000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105939190610e4c565b60006040518083038185875af1925050503d80600081146105d0576040519150601f19603f3d011682016040523d82523d6000602084013e6105d5565b606091505b50915091506105e58683836105ef565b9695505050505050565b606082610604576105ff8261067e565b61021b565b8151158015610628575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610677576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610557565b508061021b565b80511561068e5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106e757600080fd5b919050565b60008060006060848603121561070157600080fd5b83359250610711602085016106c3565b915061071f604085016106c3565b90509250925092565b6000806000838503604081121561073e57600080fd5b602081121561074c57600080fd5b50839250602084013567ffffffffffffffff81111561076a57600080fd5b8401601f8101861361077b57600080fd5b803567ffffffffffffffff81111561079257600080fd5b8660208284010111156107a457600080fd5b939660209190910195509293505050565b60005b838110156107d05781810151838201526020016107b8565b50506000910152565b600081518084526107f18160208601602086016107b5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061021b60208301846107d9565b60006020828403121561084857600080fd5b813567ffffffffffffffff81111561085f57600080fd5b82016080818503121561021b57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156108e7576108e7610871565b604052919050565b600082601f83011261090057600080fd5b813567ffffffffffffffff81111561091a5761091a610871565b61094b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016108a0565b81815284602083860101111561096057600080fd5b816020850160208301376000918101602001919091529392505050565b80151581146106c057600080fd5b80356106e78161097d565b6000806000606084860312156109ab57600080fd5b833567ffffffffffffffff8111156109c257600080fd5b6109ce868287016108ef565b9350506020840135915060408401356109e68161097d565b809150509250925092565b600067ffffffffffffffff821115610a0b57610a0b610871565b5060051b60200190565b600082601f830112610a2657600080fd5b8135610a39610a34826109f1565b6108a0565b8082825260208201915060208360051b860101925085831115610a5b57600080fd5b602085015b83811015610a78578035835260209283019201610a60565b5095945050505050565b600080600060608486031215610a9757600080fd5b833567ffffffffffffffff811115610aae57600080fd5b8401601f81018613610abf57600080fd5b8035610acd610a34826109f1565b8082825260208201915060208360051b850101925088831115610aef57600080fd5b602084015b83811015610b3157803567ffffffffffffffff811115610b1357600080fd5b610b228b6020838901016108ef565b84525060209283019201610af4565b509550505050602084013567ffffffffffffffff811115610b5157600080fd5b610b5d86828701610a15565b92505061071f6040850161098b565b600082610ba2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015273ffffffffffffffffffffffffffffffffffffffff610c2e836106c3565b16604082015273ffffffffffffffffffffffffffffffffffffffff610c55602084016106c3565b166060820152600080604084013590508060808401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610ca157600080fd5b830160208101903567ffffffffffffffff811115610cbe57600080fd5b803603821315610ccd57600080fd5b608060a08501526105e560c085018284610ba7565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610d1760a08301866107d9565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610d62578151865260209586019590910190600101610d44565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610dff577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610dea8583516107d9565b94506020938401939190910190600101610db0565b505050508281036040840152610e158186610d30565b915050610e26606083018415159052565b95945050505050565b600060208284031215610e4157600080fd5b815161021b8161097d565b60008251610e5e8184602087016107b5565b919091019291505056fea26469706673582212200121b4788f0b35a4b6df21db4f43708a9b20e8b16f616e6f3300230e75bbdd1364736f6c634300081a0033", } // ReceiverEVMABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/safeconsole.sol/safeconsole.go b/v2/pkg/safeconsole.sol/safeconsole.go index ceb3d6820..3cf1b2bcb 100644 --- a/v2/pkg/safeconsole.sol/safeconsole.go +++ b/v2/pkg/safeconsole.sol/safeconsole.go @@ -32,7 +32,7 @@ var ( // SafeconsoleMetaData contains all meta data concerning the Safeconsole contract. var SafeconsoleMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220588cd77c00d573cc1ef69bc54587209684829ef06bf561eb5a6f4793f352027364736f6c634300081a0033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d4221554974a4e0dc985d1149714f316b6f2fae2d85dacb3dfeffd47b215b9d964736f6c634300081a0033", } // SafeconsoleABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/safeerc20.sol/safeerc20.go b/v2/pkg/safeerc20.sol/safeerc20.go index 74315cc0c..17e51803e 100644 --- a/v2/pkg/safeerc20.sol/safeerc20.go +++ b/v2/pkg/safeerc20.sol/safeerc20.go @@ -32,7 +32,7 @@ var ( // 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: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d1e8ca78c7d9a8f7956969bf9e18a306c7fbad4315793a417432f76f34b799d864736f6c634300081a0033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202905cd55850035ea20b97ad43d92b09d94f8c95b651a8733a0f08394084a88ec64736f6c634300081a0033", } // SafeERC20ABI 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 1cd3b21d3..5c0a11eeb 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\":\"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\":\"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: "0x6080604052348015600f57600080fd5b50604051610aa9380380610aa9833981016040819052602c916050565b600080546001600160a01b0319166001600160a01b0392909216919091179055607e565b600060208284031215606157600080fd5b81516001600160a01b0381168114607757600080fd5b9392505050565b610a1c8061008d6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b5780637a34d8bb146100a4575b600080fd5b610059610054366004610658565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b23660046106f8565b61032a565b60008383836040516024016100ce939291906107f4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490915073ffffffffffffffffffffffffffffffffffffffff8087169163095ea7b3911661017589600261081e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016020604051808303816000875af11580156101e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610209919061085e565b61023f576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160a081018252610321808252600160208084018290528385019290925283518083018552600080825260608501919091526080840181905284518086018652918252918101829052905492517f7b15118b0000000000000000000000000000000000000000000000000000000081529192909173ffffffffffffffffffffffffffffffffffffffff90911690637b15118b906102ed908c908c908c90899088908a906004016108f7565b600060405180830381600087803b15801561030757600080fd5b505af115801561031b573d6000803e3d6000fd5b50505050505050505050505050565b6000838383604051602401610341939291906107f4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f9700000000000000000000000000000000000000000000000000000000179052815160a081018352610321808252600182840181905282850191909152835180840185526000808252606084019190915260808301819052845180860186528281529384018190525493517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9485166004820152602481019190915293945092909188169063095ea7b3906044016020604051808303816000875af115801561047c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a0919061085e565b506000546040517f06cb898300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906306cb8983906104ff908b908b90889087908990600401610972565b600060405180830381600087803b15801561051957600080fd5b505af115801561052d573d6000803e3d6000fd5b505050505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261057b57600080fd5b81356020830160008067ffffffffffffffff84111561059c5761059c61053b565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff821117156105e9576105e961053b565b60405283815290508082840187101561060157600080fd5b838360208301376000602085830101528094505050505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461064257600080fd5b919050565b801515811461065557600080fd5b50565b60008060008060008060c0878903121561067157600080fd5b863567ffffffffffffffff81111561068857600080fd5b61069489828a0161056a565b965050602087013594506106aa6040880161061e565b9350606087013567ffffffffffffffff8111156106c657600080fd5b6106d289828a0161056a565b9350506080870135915060a08701356106ea81610647565b809150509295509295509295565b600080600080600060a0868803121561071057600080fd5b853567ffffffffffffffff81111561072757600080fd5b6107338882890161056a565b9550506107426020870161061e565b9350604086013567ffffffffffffffff81111561075e57600080fd5b61076a8882890161056a565b93505060608601359150608086013561078281610647565b809150509295509295909350565b6000815180845260005b818110156107b65760208185018101518683018201520161079a565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6060815260006108076060830186610790565b602083019490945250901515604090910152919050565b80820180821115610858577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b60006020828403121561087057600080fd5b815161087b81610647565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff815116825260208101511515602083015273ffffffffffffffffffffffffffffffffffffffff60408201511660408301526000606082015160a060608501526108e360a0850182610790565b608093840151949093019390935250919050565b60e08152600061090a60e0830189610790565b87602084015273ffffffffffffffffffffffffffffffffffffffff87166040840152828103606084015261093e8187610790565b855160808501526020860151151560a0850152905082810360c08401526109658185610882565b9998505050505050505050565b60c08152600061098560c0830188610790565b73ffffffffffffffffffffffffffffffffffffffff8716602084015282810360408401526109b38187610790565b85516060850152602086015115156080850152905082810360a08401526109da8185610882565b9897505050505050505056fea2646970667358221220d2d83917c03bf0724d6e5650a4d115d95ab995c626c4ba36ed34f13ed6ed06a964736f6c634300081a0033", + Bin: "0x6080604052348015600f57600080fd5b50604051610aa9380380610aa9833981016040819052602c916050565b600080546001600160a01b0319166001600160a01b0392909216919091179055607e565b600060208284031215606157600080fd5b81516001600160a01b0381168114607757600080fd5b9392505050565b610a1c8061008d6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b5780637a34d8bb146100a4575b600080fd5b610059610054366004610658565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b23660046106f8565b61032a565b60008383836040516024016100ce939291906107f4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490915073ffffffffffffffffffffffffffffffffffffffff8087169163095ea7b3911661017589600261081e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016020604051808303816000875af11580156101e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610209919061085e565b61023f576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160a081018252610321808252600160208084018290528385019290925283518083018552600080825260608501919091526080840181905284518086018652918252918101829052905492517f7b15118b0000000000000000000000000000000000000000000000000000000081529192909173ffffffffffffffffffffffffffffffffffffffff90911690637b15118b906102ed908c908c908c90899088908a906004016108f7565b600060405180830381600087803b15801561030757600080fd5b505af115801561031b573d6000803e3d6000fd5b50505050505050505050505050565b6000838383604051602401610341939291906107f4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f9700000000000000000000000000000000000000000000000000000000179052815160a081018352610321808252600182840181905282850191909152835180840185526000808252606084019190915260808301819052845180860186528281529384018190525493517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9485166004820152602481019190915293945092909188169063095ea7b3906044016020604051808303816000875af115801561047c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a0919061085e565b506000546040517f06cb898300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906306cb8983906104ff908b908b90889087908990600401610972565b600060405180830381600087803b15801561051957600080fd5b505af115801561052d573d6000803e3d6000fd5b505050505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261057b57600080fd5b81356020830160008067ffffffffffffffff84111561059c5761059c61053b565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff821117156105e9576105e961053b565b60405283815290508082840187101561060157600080fd5b838360208301376000602085830101528094505050505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461064257600080fd5b919050565b801515811461065557600080fd5b50565b60008060008060008060c0878903121561067157600080fd5b863567ffffffffffffffff81111561068857600080fd5b61069489828a0161056a565b965050602087013594506106aa6040880161061e565b9350606087013567ffffffffffffffff8111156106c657600080fd5b6106d289828a0161056a565b9350506080870135915060a08701356106ea81610647565b809150509295509295509295565b600080600080600060a0868803121561071057600080fd5b853567ffffffffffffffff81111561072757600080fd5b6107338882890161056a565b9550506107426020870161061e565b9350604086013567ffffffffffffffff81111561075e57600080fd5b61076a8882890161056a565b93505060608601359150608086013561078281610647565b809150509295509295909350565b6000815180845260005b818110156107b65760208185018101518683018201520161079a565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6060815260006108076060830186610790565b602083019490945250901515604090910152919050565b80820180821115610858577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b60006020828403121561087057600080fd5b815161087b81610647565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff815116825260208101511515602083015273ffffffffffffffffffffffffffffffffffffffff60408201511660408301526000606082015160a060608501526108e360a0850182610790565b608093840151949093019390935250919050565b60e08152600061090a60e0830189610790565b87602084015273ffffffffffffffffffffffffffffffffffffffff87166040840152828103606084015261093e8187610790565b855160808501526020860151151560a0850152905082810360c08401526109658185610882565b9998505050505050505050565b60c08152600061098560c0830188610790565b73ffffffffffffffffffffffffffffffffffffffff8716602084015282810360408401526109b38187610790565b85516060850152602086015115156080850152905082810360a08401526109da8185610882565b9897505050505050505056fea2646970667358221220d537d7a8149cdb3025211768bab067e858b4bd38e69fcb1bfba3dec8b144f23764736f6c634300081a0033", } // SenderZEVMABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/signedmath.sol/signedmath.go b/v2/pkg/signedmath.sol/signedmath.go index 9c6e5e948..21f12ae18 100644 --- a/v2/pkg/signedmath.sol/signedmath.go +++ b/v2/pkg/signedmath.sol/signedmath.go @@ -32,7 +32,7 @@ var ( // SignedMathMetaData contains all meta data concerning the SignedMath contract. var SignedMathMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a87a5c1924e64adb1051b7a29a90b700930b925dbef14d04d8cf0c44e29ff43064736f6c634300081a0033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c5f7b2058a3e4c3af57ce92ec918eeccbaefc335e856f5b362cad07b02fb846c64736f6c634300081a0033", } // SignedMathABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/src/strings.sol/strings.go b/v2/pkg/src/strings.sol/strings.go index 446816d68..0e9d5959c 100644 --- a/v2/pkg/src/strings.sol/strings.go +++ b/v2/pkg/src/strings.sol/strings.go @@ -32,7 +32,7 @@ var ( // StringsMetaData contains all meta data concerning the Strings contract. var StringsMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209ec46b1ac43fb4e77fe34b7e51558a7c925c0f3b9a4a1987de4140814857fdc964736f6c634300081a0033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f960653a4fbb8813a227a099e11ce81dff7d1017a2bc6ca171ef698ebeba3c2664736f6c634300081a0033", } // StringsABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/stderror.sol/stderror.go b/v2/pkg/stderror.sol/stderror.go index a82e30b80..eae8030d7 100644 --- a/v2/pkg/stderror.sol/stderror.go +++ b/v2/pkg/stderror.sol/stderror.go @@ -32,7 +32,7 @@ var ( // 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: "0x6102c9610039600b82828239805160001a607314602c57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100ad5760003560e01c8063986c5f6811610080578063b67689da11610065578063b67689da146100f8578063d160e4de14610100578063fa784a441461010857600080fd5b8063986c5f68146100e8578063b22dc54d146100f057600080fd5b806305ee8612146100b257806310332977146100d05780631de45560146100d85780638995290f146100e0575b600080fd5b6100ba610110565b6040516100c79190610227565b60405180910390f35b6100ba610197565b6100ba6101a9565b6100ba6101bb565b6100ba6101cd565b6100ba6101df565b6100ba6101f1565b6100ba610203565b6100ba610215565b604051603260248201526044015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f4e487b710000000000000000000000000000000000000000000000000000000017905281565b6040516001602482015260440161011e565b6040516021602482015260440161011e565b6040516011602482015260440161011e565b6040516041602482015260440161011e565b6040516031602482015260440161011e565b6040516051602482015260440161011e565b6040516022602482015260440161011e565b6040516012602482015260440161011e565b602081526000825180602084015260005b818110156102555760208186018101516040868401015201610238565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168401019150509291505056fea26469706673582212207fb7cfabfc66edcd3015bba7f9f51fdd2883c3b6db832f21033426e3c6440d1e64736f6c634300081a0033", + Bin: "0x6102c9610039600b82828239805160001a607314602c57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100ad5760003560e01c8063986c5f6811610080578063b67689da11610065578063b67689da146100f8578063d160e4de14610100578063fa784a441461010857600080fd5b8063986c5f68146100e8578063b22dc54d146100f057600080fd5b806305ee8612146100b257806310332977146100d05780631de45560146100d85780638995290f146100e0575b600080fd5b6100ba610110565b6040516100c79190610227565b60405180910390f35b6100ba610197565b6100ba6101a9565b6100ba6101bb565b6100ba6101cd565b6100ba6101df565b6100ba6101f1565b6100ba610203565b6100ba610215565b604051603260248201526044015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f4e487b710000000000000000000000000000000000000000000000000000000017905281565b6040516001602482015260440161011e565b6040516021602482015260440161011e565b6040516011602482015260440161011e565b6040516041602482015260440161011e565b6040516031602482015260440161011e565b6040516051602482015260440161011e565b6040516022602482015260440161011e565b6040516012602482015260440161011e565b602081526000825180602084015260005b818110156102555760208186018101516040868401015201610238565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168401019150509291505056fea26469706673582212205a231584a6f904510d30e1e9640c6ee4f02df82512523f20aa2706966fcef00364736f6c634300081a0033", } // StdErrorABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/stdjson.sol/stdjson.go b/v2/pkg/stdjson.sol/stdjson.go index fc003ee3f..2fe547f27 100644 --- a/v2/pkg/stdjson.sol/stdjson.go +++ b/v2/pkg/stdjson.sol/stdjson.go @@ -32,7 +32,7 @@ var ( // StdJsonMetaData contains all meta data concerning the StdJson contract. var StdJsonMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b6e353702d0f0dddd10f0ce94444a35e95b2aee9a4660942d783f6b0d8a245c564736f6c634300081a0033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200e65061a855d97f7d59ec1c080287137f9ca844d5e9bc23cd671cfeb9f57d64864736f6c634300081a0033", } // StdJsonABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/stdmath.sol/stdmath.go b/v2/pkg/stdmath.sol/stdmath.go index 8d9d8391e..cea5751dd 100644 --- a/v2/pkg/stdmath.sol/stdmath.go +++ b/v2/pkg/stdmath.sol/stdmath.go @@ -32,7 +32,7 @@ var ( // StdMathMetaData contains all meta data concerning the StdMath contract. var StdMathMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f3aff2617b7038797f305c76f8741261b413725b2ba53dd2c28c254383a7693364736f6c634300081a0033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122079410ea42d5757ed2190c7bdace59cb6c58194513f613a3540c4102554babc8b64736f6c634300081a0033", } // StdMathABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/stdstorage.sol/stdstorage.go b/v2/pkg/stdstorage.sol/stdstorage.go index 3a025c0f0..8c92f9463 100644 --- a/v2/pkg/stdstorage.sol/stdstorage.go +++ b/v2/pkg/stdstorage.sol/stdstorage.go @@ -32,7 +32,7 @@ var ( // StdStorageMetaData contains all meta data concerning the StdStorage contract. var StdStorageMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220517bc4ea708b0165770f344549f4f7a76709409f0e23343b33e85882a7dff6e064736f6c634300081a0033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122052e6b783962347151aae134005712a28520414b5f1396f6410b6024c19f6f4ee64736f6c634300081a0033", } // StdStorageABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/stdstorage.sol/stdstoragesafe.go b/v2/pkg/stdstorage.sol/stdstoragesafe.go index 74c454449..5312eac2c 100644 --- a/v2/pkg/stdstorage.sol/stdstoragesafe.go +++ b/v2/pkg/stdstorage.sol/stdstoragesafe.go @@ -32,7 +32,7 @@ var ( // 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: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206f64b7e1dbbc6026c24d52f1fa6a0ced3aba89a87747eea738880443683416a864736f6c634300081a0033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200300b2a3fefbb75d98e75f1192239d81ef17eec1b8e4e59220733faaf4ff33ab64736f6c634300081a0033", } // StdStorageSafeABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/stdstyle.sol/stdstyle.go b/v2/pkg/stdstyle.sol/stdstyle.go index 5f853fead..36a94e9f3 100644 --- a/v2/pkg/stdstyle.sol/stdstyle.go +++ b/v2/pkg/stdstyle.sol/stdstyle.go @@ -32,7 +32,7 @@ var ( // StdStyleMetaData contains all meta data concerning the StdStyle contract. var StdStyleMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220da77bfdff45c9d88ebc22748e1d030783bcaf827bf87b1eebc0f20a0aae272f664736f6c634300081a0033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202e87c53a1d8d5d4cf46c2aa13d7ca3c141c12588948aaff694d538e11f1cf47964736f6c634300081a0033", } // StdStyleABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/stdtoml.sol/stdtoml.go b/v2/pkg/stdtoml.sol/stdtoml.go index 94cd66523..e22dbe19a 100644 --- a/v2/pkg/stdtoml.sol/stdtoml.go +++ b/v2/pkg/stdtoml.sol/stdtoml.go @@ -32,7 +32,7 @@ var ( // StdTomlMetaData contains all meta data concerning the StdToml contract. var StdTomlMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b350c1c366d1a4f2b0ff702c025d11a23e3d5d32097453b31856e19f4057390964736f6c634300081a0033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122093d434d1d4cb2498e69eb05bb6889fee4144718efeb1bd11e20b79e0fc236ddd64736f6c634300081a0033", } // StdTomlABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/storageslot.sol/storageslot.go b/v2/pkg/storageslot.sol/storageslot.go index d69482434..02e886706 100644 --- a/v2/pkg/storageslot.sol/storageslot.go +++ b/v2/pkg/storageslot.sol/storageslot.go @@ -32,7 +32,7 @@ var ( // StorageSlotMetaData contains all meta data concerning the StorageSlot contract. var StorageSlotMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f6b735656ad649ec603836af57ef04367bea1722d6899420b8d77d42cd9f202364736f6c634300081a0033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205d0bf8e71b2a7bb0f0188cffead6216cd7575e73e038fb0d7d168b3aa898df7264736f6c634300081a0033", } // StorageSlotABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/strings.sol/strings.go b/v2/pkg/strings.sol/strings.go index 4dc8cff8d..916abefe0 100644 --- a/v2/pkg/strings.sol/strings.go +++ b/v2/pkg/strings.sol/strings.go @@ -32,7 +32,7 @@ var ( // 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: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204d82302a12b7f0a06328a3c9a77ba505da0c3bcc1aaa5d00f99298af997827de64736f6c634300081a0033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122054df1ae034bd3cf22b4b583f6a2b4432114d224f44ffb3b28e5f3c6323e3e27f64736f6c634300081a0033", } // StringsABI 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 4c75699a5..739ed85bd 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: "0x60c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea2646970667358221220eaa287ea22d82335c1d97ef661cb17f1296902daa41cca34de107966248e954364736f6c634300081a0033", + Bin: "0x60c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea2646970667358221220b13ccf97234dc9b7f658234f9bf37a57d08f465bb99c431b865174e7a399a30764736f6c634300081a0033", } // 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 255ef3d87..6861c67e3 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: "0x608060405234801561001057600080fd5b50604051610b3f380380610b3f83398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a348061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fd565b6103a0565b6101416101da36600461081f565b610419565b6101046101ed366004610841565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610884565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108b0565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e90610366908490899089908990899060040161091b565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff8111156107b257600080fd5b8601601f810188136107c357600080fd5b803567ffffffffffffffff8111156107da57600080fd5b8860208284010111156107ec57600080fd5b959894975092955050506020019190565b60006020828403121561080f57600080fd5b61081882610737565b9392505050565b6000806040838503121561083257600080fd5b50508035926020909101359150565b60008060006060848603121561085657600080fd5b61085f84610737565b925061086d60208501610737565b915061087b60408501610737565b90509250925092565b6000806040838503121561089757600080fd5b823591506108a760208401610737565b90509250929050565b6000602082840312156108c257600080fd5b8151801515811461081857600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610953576020818401810151610100878401015201610935565b5060008482016101000152602089015173ffffffffffffffffffffffffffffffffffffffff811660a0860152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168401915050604088015160c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401526101008382030160608401526109f2610100820185876108d2565b9897505050505050505056fea2646970667358221220eb281f71b1a10df3d88243dcf9e9ff7f57e8f4bc6018408c57e8ef3bb671313d64736f6c634300081a0033", + Bin: "0x608060405234801561001057600080fd5b50604051610b3f380380610b3f83398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a348061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fd565b6103a0565b6101416101da36600461081f565b610419565b6101046101ed366004610841565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610884565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108b0565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e90610366908490899089908990899060040161091b565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff8111156107b257600080fd5b8601601f810188136107c357600080fd5b803567ffffffffffffffff8111156107da57600080fd5b8860208284010111156107ec57600080fd5b959894975092955050506020019190565b60006020828403121561080f57600080fd5b61081882610737565b9392505050565b6000806040838503121561083257600080fd5b50508035926020909101359150565b60008060006060848603121561085657600080fd5b61085f84610737565b925061086d60208501610737565b915061087b60408501610737565b90509250925092565b6000806040838503121561089757600080fd5b823591506108a760208401610737565b90509250929050565b6000602082840312156108c257600080fd5b8151801515811461081857600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610953576020818401810151610100878401015201610935565b5060008482016101000152602089015173ffffffffffffffffffffffffffffffffffffffff811660a0860152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168401915050604088015160c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401526101008382030160608401526109f2610100820185876108d2565b9897505050505050505056fea26469706673582212201600a256a4ffaaa4ceb3b81d9f67be9d8f33665245b35eeba52fdc70200176a764736f6c634300081a0033", } // SystemContractMockABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/testerc20.sol/testerc20.go b/v2/pkg/testerc20.sol/testerc20.go index 08235a3cd..4d4335255 100644 --- a/v2/pkg/testerc20.sol/testerc20.go +++ b/v2/pkg/testerc20.sol/testerc20.go @@ -32,7 +32,7 @@ var ( // 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: "0x608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212205f76808fb3dc6dacf4bd766b2d0bf9d6beb64856c952cec8e267368511bd936a64736f6c634300081a0033", + Bin: "0x608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220a043c41353215fce25ecb67a8a4f6f724aaa86dea8dcb0a6975bfb1f10ff3beb64736f6c634300081a0033", } // TestERC20ABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/testuniversalcontract.sol/testuniversalcontract.go b/v2/pkg/testuniversalcontract.sol/testuniversalcontract.go index dc426a055..59aa82cf9 100644 --- a/v2/pkg/testuniversalcontract.sol/testuniversalcontract.go +++ b/v2/pkg/testuniversalcontract.sol/testuniversalcontract.go @@ -47,7 +47,7 @@ type RevertContext struct { // TestUniversalContractMetaData contains all meta data concerning the TestUniversalContract contract. var TestUniversalContractMetaData = &bind.MetaData{ ABI: "[{\"type\":\"fallback\",\"stateMutability\":\"payable\"},{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"onCall\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structMessageContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"onRevert\",\"inputs\":[{\"name\":\"revertContext\",\"type\":\"tuple\",\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"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\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false}]", - Bin: "0x6080604052348015600f57600080fd5b5061061b8061001f6000396000f3fe60806040526004361061002a5760003560e01c80635bcfd61614610033578063c9028a361461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e366004610151565b610073565b34801561005f57600080fd5b5061003161006e36600461020e565b6100ee565b6060811561008a576100878284018461027f565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610375565b6100c560408a0160208b016103e1565b896040013533866040516100de96959493929190610445565b60405180910390a1505050505050565b7fd75bb509c8f32a725aac99ac5c4541060dbfb889a3aca8314d6f00395618c4c48160405161011d9190610507565b60405180910390a150565b803573ffffffffffffffffffffffffffffffffffffffff8116811461014c57600080fd5b919050565b60008060008060006080868803121561016957600080fd5b853567ffffffffffffffff81111561018057600080fd5b86016060818903121561019257600080fd5b94506101a060208701610128565b935060408601359250606086013567ffffffffffffffff8111156101c357600080fd5b8601601f810188136101d457600080fd5b803567ffffffffffffffff8111156101eb57600080fd5b8860208284010111156101fd57600080fd5b959894975092955050506020019190565b60006020828403121561022057600080fd5b813567ffffffffffffffff81111561023757600080fd5b82016080818503121561024957600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561029157600080fd5b813567ffffffffffffffff8111156102a857600080fd5b8201601f810184136102b957600080fd5b803567ffffffffffffffff8111156102d3576102d3610250565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033f5761033f610250565b60405281815282820160200186101561035757600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126103aa57600080fd5b83018035915067ffffffffffffffff8211156103c557600080fd5b6020019150368190038213156103da57600080fd5b9250929050565b6000602082840312156103f357600080fd5b61024982610128565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60a08152600061045960a08301888a6103fc565b73ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff851660608401528281036080840152835180825260005b818110156104c3576020818701810151848301820152016104a7565b5060006020828401015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011683010192505050979650505050505050565b6020815273ffffffffffffffffffffffffffffffffffffffff61052983610128565b16602082015273ffffffffffffffffffffffffffffffffffffffff61055060208401610128565b166040820152600080604084013590508060608401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261059c57600080fd5b830160208101903567ffffffffffffffff8111156105b957600080fd5b8036038213156105c857600080fd5b6080808501526105dc60a0850182846103fc565b9594505050505056fea264697066735822122097b135946b5f8ffb91b019442462dc27864bb547c0a533c3cc3e01dd4abecc7964736f6c634300081a0033", + Bin: "0x6080604052348015600f57600080fd5b5061061b8061001f6000396000f3fe60806040526004361061002a5760003560e01c80635bcfd61614610033578063c9028a361461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e366004610151565b610073565b34801561005f57600080fd5b5061003161006e36600461020e565b6100ee565b6060811561008a576100878284018461027f565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610375565b6100c560408a0160208b016103e1565b896040013533866040516100de96959493929190610445565b60405180910390a1505050505050565b7fd75bb509c8f32a725aac99ac5c4541060dbfb889a3aca8314d6f00395618c4c48160405161011d9190610507565b60405180910390a150565b803573ffffffffffffffffffffffffffffffffffffffff8116811461014c57600080fd5b919050565b60008060008060006080868803121561016957600080fd5b853567ffffffffffffffff81111561018057600080fd5b86016060818903121561019257600080fd5b94506101a060208701610128565b935060408601359250606086013567ffffffffffffffff8111156101c357600080fd5b8601601f810188136101d457600080fd5b803567ffffffffffffffff8111156101eb57600080fd5b8860208284010111156101fd57600080fd5b959894975092955050506020019190565b60006020828403121561022057600080fd5b813567ffffffffffffffff81111561023757600080fd5b82016080818503121561024957600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561029157600080fd5b813567ffffffffffffffff8111156102a857600080fd5b8201601f810184136102b957600080fd5b803567ffffffffffffffff8111156102d3576102d3610250565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033f5761033f610250565b60405281815282820160200186101561035757600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126103aa57600080fd5b83018035915067ffffffffffffffff8211156103c557600080fd5b6020019150368190038213156103da57600080fd5b9250929050565b6000602082840312156103f357600080fd5b61024982610128565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60a08152600061045960a08301888a6103fc565b73ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff851660608401528281036080840152835180825260005b818110156104c3576020818701810151848301820152016104a7565b5060006020828401015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011683010192505050979650505050505050565b6020815273ffffffffffffffffffffffffffffffffffffffff61052983610128565b16602082015273ffffffffffffffffffffffffffffffffffffffff61055060208401610128565b166040820152600080604084013590508060608401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261059c57600080fd5b830160208101903567ffffffffffffffff8111156105b957600080fd5b8036038213156105c857600080fd5b6080808501526105dc60a0850182846103fc565b9594505050505056fea264697066735822122034d8711688fa0746c516ebf736804e86c9e1dad5e64788e702413ad1a8eb9ff164736f6c634300081a0033", } // TestUniversalContractABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/transparentupgradeableproxy.sol/transparentupgradeableproxy.go b/v2/pkg/transparentupgradeableproxy.sol/transparentupgradeableproxy.go index a13bc5047..ea1c77448 100644 --- a/v2/pkg/transparentupgradeableproxy.sol/transparentupgradeableproxy.go +++ b/v2/pkg/transparentupgradeableproxy.sol/transparentupgradeableproxy.go @@ -32,7 +32,7 @@ var ( // 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: "0x60a060405260405161117a38038061117a8339810160408190526100229161039d565b828161002e828261008f565b50508160405161003d9061033a565b6001600160a01b039091168152602001604051809103906000f080158015610069573d6000803e3d6000fd5b506001600160a01b031660805261008761008260805190565b6100ee565b50505061048f565b6100988261015c565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156100e2576100dd82826101db565b505050565b6100ea610252565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61012e60008051602061115a833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161015981610273565b50565b806001600160a01b03163b60000361019757604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080846001600160a01b0316846040516101f89190610473565b600060405180830381855af49150503d8060008114610233576040519150601f19603f3d011682016040523d82523d6000602084013e610238565b606091505b5090925090506102498583836102b2565b95945050505050565b34156102715760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661029d57604051633173bdd160e11b81526000600482015260240161018e565b8060008051602061115a8339815191526101ba565b6060826102c7576102c282610311565b61030a565b81511580156102de57506001600160a01b0384163b155b1561030757604051639996b31560e01b81526001600160a01b038516600482015260240161018e565b50805b9392505050565b8051156103215780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b61068480610ad683390190565b80516001600160a01b038116811461035e57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561039457818101518382015260200161037c565b50506000910152565b6000806000606084860312156103b257600080fd5b6103bb84610347565b92506103c960208501610347565b60408501519092506001600160401b038111156103e557600080fd5b8401601f810186136103f657600080fd5b80516001600160401b0381111561040f5761040f610363565b604051601f8201601f19908116603f011681016001600160401b038111828210171561043d5761043d610363565b60405281815282820160200188101561045557600080fd5b610466826020830160208601610379565b8093505050509250925092565b60008251610485818460208701610379565b9190910192915050565b60805161062d6104a960003960006010015261062d6000f3fe608060405261000c61000e565b005b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633036100d2576000357fffffffff00000000000000000000000000000000000000000000000000000000167f4f1ef28600000000000000000000000000000000000000000000000000000000146100c8576040517fd2b576ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100d06100da565b565b6100d0610109565b6000806100ea366004818461044d565b8101906100f791906104a6565b915091506101058282610119565b5050565b6100d0610114610181565b6101c6565b610122826101ea565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156101795761017482826102be565b505050565b610105610341565b60006101c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e8080156101e5573d6000f35b3d6000fd5b8073ffffffffffffffffffffffffffffffffffffffff163b600003610258576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60606000808473ffffffffffffffffffffffffffffffffffffffff16846040516102e891906105c8565b600060405180830381855af49150503d8060008114610323576040519150601f19603f3d011682016040523d82523d6000602084013e610328565b606091505b5091509150610338858383610379565b95945050505050565b34156100d0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261038e576103898261040b565b610404565b81511580156103b2575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610401576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161024f565b50805b9392505050565b80511561041b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808585111561045d57600080fd5b8386111561046a57600080fd5b5050820193919092039150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156104b957600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104dd57600080fd5b9150602083013567ffffffffffffffff8111156104f957600080fd5b8301601f8101851361050a57600080fd5b803567ffffffffffffffff81111561052457610524610477565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561059057610590610477565b6040528181528282016020018710156105a857600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000825160005b818110156105e957602081860181015185830152016105cf565b50600092019182525091905056fea2646970667358221220a4ebc0057fc296295a495e12fd7b1928a56a5810665ef2dd8b0464323df419c964736f6c634300081a0033608060405234801561001057600080fd5b5060405161068438038061068483398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610587806100fd6000396000f3fe60806040526004361061005a5760003560e01c80639623609d116100435780639623609d146100b0578063ad3cb1cc146100c3578063f2fde38b1461011957600080fd5b8063715018a61461005f5780638da5cb5b14610076575b600080fd5b34801561006b57600080fd5b50610074610139565b005b34801561008257600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100746100be366004610364565b61014d565b3480156100cf57600080fd5b5061010c6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a791906104e3565b34801561012557600080fd5b506100746101343660046104fd565b6101e2565b61014161024b565b61014b600061029e565b565b61015561024b565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101ab908690869060040161051a565b6000604051808303818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b5050505050505050565b6101ea61024b565b73ffffffffffffffffffffffffffffffffffffffff811661023f576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6102488161029e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461014b576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610236565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461024857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561037957600080fd5b833561038481610313565b9250602084013561039481610313565b9150604084013567ffffffffffffffff8111156103b057600080fd5b8401601f810186136103c157600080fd5b803567ffffffffffffffff8111156103db576103db610335565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561044757610447610335565b60405281815282820160200188101561045f57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000815180845260005b818110156104a557602081850181015186830182015201610489565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104f6602083018461047f565b9392505050565b60006020828403121561050f57600080fd5b81356104f681610313565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610549604083018461047f565b94935050505056fea2646970667358221220bfcb42a89a84dac0635a45bd4013ab76b4d822e9c9c757167dcf256da0cea66f64736f6c634300081a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103", + Bin: "0x60a060405260405161117a38038061117a8339810160408190526100229161039d565b828161002e828261008f565b50508160405161003d9061033a565b6001600160a01b039091168152602001604051809103906000f080158015610069573d6000803e3d6000fd5b506001600160a01b031660805261008761008260805190565b6100ee565b50505061048f565b6100988261015c565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156100e2576100dd82826101db565b505050565b6100ea610252565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61012e60008051602061115a833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161015981610273565b50565b806001600160a01b03163b60000361019757604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080846001600160a01b0316846040516101f89190610473565b600060405180830381855af49150503d8060008114610233576040519150601f19603f3d011682016040523d82523d6000602084013e610238565b606091505b5090925090506102498583836102b2565b95945050505050565b34156102715760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661029d57604051633173bdd160e11b81526000600482015260240161018e565b8060008051602061115a8339815191526101ba565b6060826102c7576102c282610311565b61030a565b81511580156102de57506001600160a01b0384163b155b1561030757604051639996b31560e01b81526001600160a01b038516600482015260240161018e565b50805b9392505050565b8051156103215780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b61068480610ad683390190565b80516001600160a01b038116811461035e57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561039457818101518382015260200161037c565b50506000910152565b6000806000606084860312156103b257600080fd5b6103bb84610347565b92506103c960208501610347565b60408501519092506001600160401b038111156103e557600080fd5b8401601f810186136103f657600080fd5b80516001600160401b0381111561040f5761040f610363565b604051601f8201601f19908116603f011681016001600160401b038111828210171561043d5761043d610363565b60405281815282820160200188101561045557600080fd5b610466826020830160208601610379565b8093505050509250925092565b60008251610485818460208701610379565b9190910192915050565b60805161062d6104a960003960006010015261062d6000f3fe608060405261000c61000e565b005b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633036100d2576000357fffffffff00000000000000000000000000000000000000000000000000000000167f4f1ef28600000000000000000000000000000000000000000000000000000000146100c8576040517fd2b576ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100d06100da565b565b6100d0610109565b6000806100ea366004818461044d565b8101906100f791906104a6565b915091506101058282610119565b5050565b6100d0610114610181565b6101c6565b610122826101ea565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156101795761017482826102be565b505050565b610105610341565b60006101c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e8080156101e5573d6000f35b3d6000fd5b8073ffffffffffffffffffffffffffffffffffffffff163b600003610258576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60606000808473ffffffffffffffffffffffffffffffffffffffff16846040516102e891906105c8565b600060405180830381855af49150503d8060008114610323576040519150601f19603f3d011682016040523d82523d6000602084013e610328565b606091505b5091509150610338858383610379565b95945050505050565b34156100d0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261038e576103898261040b565b610404565b81511580156103b2575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610401576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161024f565b50805b9392505050565b80511561041b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808585111561045d57600080fd5b8386111561046a57600080fd5b5050820193919092039150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156104b957600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104dd57600080fd5b9150602083013567ffffffffffffffff8111156104f957600080fd5b8301601f8101851361050a57600080fd5b803567ffffffffffffffff81111561052457610524610477565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561059057610590610477565b6040528181528282016020018710156105a857600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000825160005b818110156105e957602081860181015185830152016105cf565b50600092019182525091905056fea2646970667358221220253f136e11d5f63ec3563318e55ad57e885108c3ff50fe7c6397f7ecf53edd5a64736f6c634300081a0033608060405234801561001057600080fd5b5060405161068438038061068483398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610587806100fd6000396000f3fe60806040526004361061005a5760003560e01c80639623609d116100435780639623609d146100b0578063ad3cb1cc146100c3578063f2fde38b1461011957600080fd5b8063715018a61461005f5780638da5cb5b14610076575b600080fd5b34801561006b57600080fd5b50610074610139565b005b34801561008257600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100746100be366004610364565b61014d565b3480156100cf57600080fd5b5061010c6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a791906104e3565b34801561012557600080fd5b506100746101343660046104fd565b6101e2565b61014161024b565b61014b600061029e565b565b61015561024b565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101ab908690869060040161051a565b6000604051808303818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b5050505050505050565b6101ea61024b565b73ffffffffffffffffffffffffffffffffffffffff811661023f576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6102488161029e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461014b576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610236565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461024857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561037957600080fd5b833561038481610313565b9250602084013561039481610313565b9150604084013567ffffffffffffffff8111156103b057600080fd5b8401601f810186136103c157600080fd5b803567ffffffffffffffff8111156103db576103db610335565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561044757610447610335565b60405281815282820160200188101561045f57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000815180845260005b818110156104a557602081850181015186830182015201610489565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104f6602083018461047f565b9392505050565b60006020828403121561050f57600080fd5b81356104f681610313565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610549604083018461047f565b94935050505056fea2646970667358221220cc8bbfd5df3920285befce3b27271fc70ad0dfb073ae2b9db9df8353b1cc6fff64736f6c634300081a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103", } // TransparentUpgradeableProxyABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/upgradeablebeacon.sol/upgradeablebeacon.go b/v2/pkg/upgradeablebeacon.sol/upgradeablebeacon.go index 4bb5c40d1..c9899529d 100644 --- a/v2/pkg/upgradeablebeacon.sol/upgradeablebeacon.go +++ b/v2/pkg/upgradeablebeacon.sol/upgradeablebeacon.go @@ -32,7 +32,7 @@ var ( // 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: "0x608060405234801561001057600080fd5b5060405161054538038061054583398101604081905261002f91610165565b806001600160a01b03811661005f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61006881610079565b50610072826100c9565b5050610198565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b806001600160a01b03163b6000036100ff5760405163211eb15960e21b81526001600160a01b0382166004820152602401610056565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b80516001600160a01b038116811461016057600080fd5b919050565b6000806040838503121561017857600080fd5b61018183610149565b915061018f60208401610149565b90509250929050565b61039e806101a76000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063715018a611610050578063715018a6146100c45780638da5cb5b146100cc578063f2fde38b146100ea57600080fd5b80633659cfe61461006c5780635c60da1b14610081575b600080fd5b61007f61007a36600461032b565b6100fd565b005b60015473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61007f610111565b60005473ffffffffffffffffffffffffffffffffffffffff1661009b565b61007f6100f836600461032b565b610125565b61010561018b565b61010e816101de565b50565b61011961018b565b61012360006102b6565b565b61012d61018b565b73ffffffffffffffffffffffffffffffffffffffff8116610182576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61010e816102b6565b60005473ffffffffffffffffffffffffffffffffffffffff163314610123576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610179565b8073ffffffffffffffffffffffffffffffffffffffff163b600003610247576040517f847ac56400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610179565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561033d57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461036157600080fd5b939250505056fea2646970667358221220a34903c6e0667f087cb6963c1584e20e97a79adf79b1e49dca433f1edfc474c264736f6c634300081a0033", + Bin: "0x608060405234801561001057600080fd5b5060405161054538038061054583398101604081905261002f91610165565b806001600160a01b03811661005f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61006881610079565b50610072826100c9565b5050610198565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b806001600160a01b03163b6000036100ff5760405163211eb15960e21b81526001600160a01b0382166004820152602401610056565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b80516001600160a01b038116811461016057600080fd5b919050565b6000806040838503121561017857600080fd5b61018183610149565b915061018f60208401610149565b90509250929050565b61039e806101a76000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063715018a611610050578063715018a6146100c45780638da5cb5b146100cc578063f2fde38b146100ea57600080fd5b80633659cfe61461006c5780635c60da1b14610081575b600080fd5b61007f61007a36600461032b565b6100fd565b005b60015473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61007f610111565b60005473ffffffffffffffffffffffffffffffffffffffff1661009b565b61007f6100f836600461032b565b610125565b61010561018b565b61010e816101de565b50565b61011961018b565b61012360006102b6565b565b61012d61018b565b73ffffffffffffffffffffffffffffffffffffffff8116610182576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61010e816102b6565b60005473ffffffffffffffffffffffffffffffffffffffff163314610123576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610179565b8073ffffffffffffffffffffffffffffffffffffffff163b600003610247576040517f847ac56400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610179565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561033d57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461036157600080fd5b939250505056fea2646970667358221220c9c7179481a766b085d2da5ae9750f1c78f5bdec74151fc542064690d3a7e39864736f6c634300081a0033", } // UpgradeableBeaconABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/upgrades.sol/unsafeupgrades.go b/v2/pkg/upgrades.sol/unsafeupgrades.go index 0871e0fb7..ab27c9107 100644 --- a/v2/pkg/upgrades.sol/unsafeupgrades.go +++ b/v2/pkg/upgrades.sol/unsafeupgrades.go @@ -32,7 +32,7 @@ var ( // UnsafeUpgradesMetaData contains all meta data concerning the UnsafeUpgrades contract. var UnsafeUpgradesMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d7fdd0d1c8a9acbf7c011272d86bd872f1b9541ecae579ba519475cec3f94ce664736f6c634300081a0033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208d75a5a4b8bd5d2a8f8ed2ea53314716bfed77e74cf0c92d5cc78c51688a484d64736f6c634300081a0033", } // UnsafeUpgradesABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/upgrades.sol/upgrades.go b/v2/pkg/upgrades.sol/upgrades.go index 42513d6b8..c195a9a54 100644 --- a/v2/pkg/upgrades.sol/upgrades.go +++ b/v2/pkg/upgrades.sol/upgrades.go @@ -32,7 +32,7 @@ var ( // UpgradesMetaData contains all meta data concerning the Upgrades contract. var UpgradesMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205ef11657a2fabdf405a52458398cb29f67a5b16ac6bd3b1c1397df23e59a398564736f6c634300081a0033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a303a0c26f89f346e9cb714cf7520d61504c021c8a062b23087203e1cd24152064736f6c634300081a0033", } // UpgradesABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/utils.sol/utils.go b/v2/pkg/utils.sol/utils.go index 12a0beac3..61f811bb7 100644 --- a/v2/pkg/utils.sol/utils.go +++ b/v2/pkg/utils.sol/utils.go @@ -32,7 +32,7 @@ var ( // UtilsMetaData contains all meta data concerning the Utils contract. var UtilsMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201bb0ec7262284ec22878d83be3f9990f4ad2278ea031bb5f46565c9efa38159a64736f6c634300081a0033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202b3d885488217a5b6bf6f2fa8c42832673a576595e5bc860aad53eeed191f88f64736f6c634300081a0033", } // UtilsABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/versions.sol/versions.go b/v2/pkg/versions.sol/versions.go index e79640fed..389f3a317 100644 --- a/v2/pkg/versions.sol/versions.go +++ b/v2/pkg/versions.sol/versions.go @@ -32,7 +32,7 @@ var ( // VersionsMetaData contains all meta data concerning the Versions contract. var VersionsMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c4a493b5c9edc7fa5cb348c7906bea8a1bdbc1b812031ebfdb561fb73cb477164736f6c634300081a0033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d11ccdb9c99813b0643005dd675b677f09856932a5d64b914f9ea8a694a79e8c64736f6c634300081a0033", } // VersionsABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/wzeta.sol/weth9.go b/v2/pkg/wzeta.sol/weth9.go index 8f0dee436..be240a9be 100644 --- a/v2/pkg/wzeta.sol/weth9.go +++ b/v2/pkg/wzeta.sol/weth9.go @@ -32,7 +32,7 @@ var ( // 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: "0x60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea2646970667358221220c069e4cb3e16bcddc5b07d6ba4019a062fbae92d695877ad19f66fc9ac6047fd64736f6c634300081a0033", + Bin: "0x60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea2646970667358221220b09c98b42d894b1b92a74ecc691587bcc17012fff7ef3bcfa6fe755f9b6255a564736f6c634300081a0033", } // WETH9ABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/zeta.non-eth.sol/zetanoneth.go b/v2/pkg/zeta.non-eth.sol/zetanoneth.go index e091fed4a..53706a1a9 100644 --- a/v2/pkg/zeta.non-eth.sol/zetanoneth.go +++ b/v2/pkg/zeta.non-eth.sol/zetanoneth.go @@ -32,7 +32,7 @@ var ( // 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: "0x608060405234801561001057600080fd5b506040516112a63803806112a683398101604081905261002f91610110565b604051806040016040528060048152602001635a65746160e01b815250604051806040016040528060048152602001635a45544160e01b815250816003908161007891906101e2565b50600461008582826101e2565b5050506001600160a01b03821615806100a557506001600160a01b038116155b156100c35760405163e6c4247b60e01b815260040160405180910390fd5b600680546001600160a01b039384166001600160a01b031991821617909155600780549290931691161790556102a0565b80516001600160a01b038116811461010b57600080fd5b919050565b6000806040838503121561012357600080fd5b61012c836100f4565b915061013a602084016100f4565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061016d57607f821691505b60208210810361018d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101dd57806000526020600020601f840160051c810160208510156101ba5750805b601f840160051c820191505b818110156101da57600081556001016101c6565b50505b505050565b81516001600160401b038111156101fb576101fb610143565b61020f816102098454610159565b84610193565b6020601f821160018114610243576000831561022b5750848201515b600019600385901b1c1916600184901b1784556101da565b600084815260208120601f198516915b828110156102735787850151825560209485019460019092019101610253565b50848210156102915786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610ff7806102af6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806342966c68116100b257806379cc679011610081578063a9059cbb11610066578063a9059cbb1461028e578063bff9662a146102a1578063dd62ed3e146102c157600080fd5b806379cc67901461027357806395d89b411461028657600080fd5b806342966c68146102025780635b1125911461021557806370a0823114610235578063779e3b631461026b57600080fd5b80631e458bee116100ee5780631e458bee1461018857806323b872dd1461019b578063313ce567146101ae578063328a01d0146101bd57600080fd5b806306fdde0314610120578063095ea7b31461013e57806315d57fd41461016157806318160ddd14610176575b600080fd5b610128610307565b6040516101359190610d97565b60405180910390f35b61015161014c366004610e2c565b610399565b6040519015158152602001610135565b61017461016f366004610e56565b6103b3565b005b6002545b604051908152602001610135565b610174610196366004610e89565b61057e565b6101516101a9366004610ebc565b610631565b60405160128152602001610135565b6007546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610135565b610174610210366004610ef9565b610655565b6006546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a610243366004610f12565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b610174610662565b610174610281366004610e2c565b610786565b610128610837565b61015161029c366004610e2c565b610846565b6005546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a6102cf366004610e56565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461031690610f34565b80601f016020809104026020016040519081016040528092919081815260200182805461034290610f34565b801561038f5780601f106103645761010080835404028352916020019161038f565b820191906000526020600020905b81548152906001019060200180831161037257829003601f168201915b5050505050905090565b6000336103a7818585610854565b60019150505b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff1633148015906103f3575060065473ffffffffffffffffffffffffffffffffffffffff163314155b15610431576040517fcdfcef970000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82161580610468575073ffffffffffffffffffffffffffffffffffffffff8116155b1561049f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006805473ffffffffffffffffffffffffffffffffffffffff8481167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316811790935560058054918516919092161790556040805133815260208101929092527fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff910160405180910390a16040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f1b9352454524a57a51f24f67dc66d898f616922cd1f7a12d73570ece12b1975c910160405180910390a15050565b60055473ffffffffffffffffffffffffffffffffffffffff1633146105d1576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6105db8383610866565b808373ffffffffffffffffffffffffffffffffffffffff167fc263b302aec62d29105026245f19e16f8e0137066ccd4a8bd941f716bd4096bb8460405161062491815260200190565b60405180910390a3505050565b60003361063f8582856108c6565b61064a858585610995565b506001949350505050565b61065f3382610a40565b50565b60075473ffffffffffffffffffffffffffffffffffffffff1633146106b5576040517fe700765e000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b60065473ffffffffffffffffffffffffffffffffffffffff16610704576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0910160405180910390a1565b60055473ffffffffffffffffffffffffffffffffffffffff1633146107d9576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6107e38282610a9c565b8173ffffffffffffffffffffffffffffffffffffffff167f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b18260405161082b91815260200190565b60405180910390a25050565b60606004805461031690610f34565b6000336103a7818585610995565b6108618383836001610ab1565b505050565b73ffffffffffffffffffffffffffffffffffffffff82166108b6576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c260008383610bf9565b5050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461098f5781811015610980576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401610428565b61098f84848484036000610ab1565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166109e5576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8216610a35576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b610861838383610bf9565b73ffffffffffffffffffffffffffffffffffffffff8216610a90576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c282600083610bf9565b610aa78233836108c6565b6108c28282610a40565b73ffffffffffffffffffffffffffffffffffffffff8416610b01576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8316610b51576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160209081526040808320938716835292905220829055801561098f578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610beb91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8316610c31578060026000828254610c269190610f87565b90915550610ce39050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610cb7576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810182905260448101839052606401610428565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff8216610d0c57600280548290039055610d38565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161062491815260200190565b602081526000825180602084015260005b81811015610dc55760208186018101516040868401015201610da8565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e2757600080fd5b919050565b60008060408385031215610e3f57600080fd5b610e4883610e03565b946020939093013593505050565b60008060408385031215610e6957600080fd5b610e7283610e03565b9150610e8060208401610e03565b90509250929050565b600080600060608486031215610e9e57600080fd5b610ea784610e03565b95602085013595506040909401359392505050565b600080600060608486031215610ed157600080fd5b610eda84610e03565b9250610ee860208501610e03565b929592945050506040919091013590565b600060208284031215610f0b57600080fd5b5035919050565b600060208284031215610f2457600080fd5b610f2d82610e03565b9392505050565b600181811c90821680610f4857607f821691505b602082108103610f81577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156103ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220e8a1f6a00b1b9c77fd6d8724e3829463441aaedd6b65190c6dc6c18bcc5810e364736f6c634300081a0033", + Bin: "0x608060405234801561001057600080fd5b506040516112a63803806112a683398101604081905261002f91610110565b604051806040016040528060048152602001635a65746160e01b815250604051806040016040528060048152602001635a45544160e01b815250816003908161007891906101e2565b50600461008582826101e2565b5050506001600160a01b03821615806100a557506001600160a01b038116155b156100c35760405163e6c4247b60e01b815260040160405180910390fd5b600680546001600160a01b039384166001600160a01b031991821617909155600780549290931691161790556102a0565b80516001600160a01b038116811461010b57600080fd5b919050565b6000806040838503121561012357600080fd5b61012c836100f4565b915061013a602084016100f4565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061016d57607f821691505b60208210810361018d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101dd57806000526020600020601f840160051c810160208510156101ba5750805b601f840160051c820191505b818110156101da57600081556001016101c6565b50505b505050565b81516001600160401b038111156101fb576101fb610143565b61020f816102098454610159565b84610193565b6020601f821160018114610243576000831561022b5750848201515b600019600385901b1c1916600184901b1784556101da565b600084815260208120601f198516915b828110156102735787850151825560209485019460019092019101610253565b50848210156102915786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610ff7806102af6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806342966c68116100b257806379cc679011610081578063a9059cbb11610066578063a9059cbb1461028e578063bff9662a146102a1578063dd62ed3e146102c157600080fd5b806379cc67901461027357806395d89b411461028657600080fd5b806342966c68146102025780635b1125911461021557806370a0823114610235578063779e3b631461026b57600080fd5b80631e458bee116100ee5780631e458bee1461018857806323b872dd1461019b578063313ce567146101ae578063328a01d0146101bd57600080fd5b806306fdde0314610120578063095ea7b31461013e57806315d57fd41461016157806318160ddd14610176575b600080fd5b610128610307565b6040516101359190610d97565b60405180910390f35b61015161014c366004610e2c565b610399565b6040519015158152602001610135565b61017461016f366004610e56565b6103b3565b005b6002545b604051908152602001610135565b610174610196366004610e89565b61057e565b6101516101a9366004610ebc565b610631565b60405160128152602001610135565b6007546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610135565b610174610210366004610ef9565b610655565b6006546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a610243366004610f12565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b610174610662565b610174610281366004610e2c565b610786565b610128610837565b61015161029c366004610e2c565b610846565b6005546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a6102cf366004610e56565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461031690610f34565b80601f016020809104026020016040519081016040528092919081815260200182805461034290610f34565b801561038f5780601f106103645761010080835404028352916020019161038f565b820191906000526020600020905b81548152906001019060200180831161037257829003601f168201915b5050505050905090565b6000336103a7818585610854565b60019150505b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff1633148015906103f3575060065473ffffffffffffffffffffffffffffffffffffffff163314155b15610431576040517fcdfcef970000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82161580610468575073ffffffffffffffffffffffffffffffffffffffff8116155b1561049f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006805473ffffffffffffffffffffffffffffffffffffffff8481167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316811790935560058054918516919092161790556040805133815260208101929092527fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff910160405180910390a16040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f1b9352454524a57a51f24f67dc66d898f616922cd1f7a12d73570ece12b1975c910160405180910390a15050565b60055473ffffffffffffffffffffffffffffffffffffffff1633146105d1576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6105db8383610866565b808373ffffffffffffffffffffffffffffffffffffffff167fc263b302aec62d29105026245f19e16f8e0137066ccd4a8bd941f716bd4096bb8460405161062491815260200190565b60405180910390a3505050565b60003361063f8582856108c6565b61064a858585610995565b506001949350505050565b61065f3382610a40565b50565b60075473ffffffffffffffffffffffffffffffffffffffff1633146106b5576040517fe700765e000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b60065473ffffffffffffffffffffffffffffffffffffffff16610704576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0910160405180910390a1565b60055473ffffffffffffffffffffffffffffffffffffffff1633146107d9576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6107e38282610a9c565b8173ffffffffffffffffffffffffffffffffffffffff167f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b18260405161082b91815260200190565b60405180910390a25050565b60606004805461031690610f34565b6000336103a7818585610995565b6108618383836001610ab1565b505050565b73ffffffffffffffffffffffffffffffffffffffff82166108b6576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c260008383610bf9565b5050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461098f5781811015610980576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401610428565b61098f84848484036000610ab1565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166109e5576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8216610a35576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b610861838383610bf9565b73ffffffffffffffffffffffffffffffffffffffff8216610a90576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c282600083610bf9565b610aa78233836108c6565b6108c28282610a40565b73ffffffffffffffffffffffffffffffffffffffff8416610b01576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8316610b51576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160209081526040808320938716835292905220829055801561098f578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610beb91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8316610c31578060026000828254610c269190610f87565b90915550610ce39050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610cb7576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810182905260448101839052606401610428565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff8216610d0c57600280548290039055610d38565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161062491815260200190565b602081526000825180602084015260005b81811015610dc55760208186018101516040868401015201610da8565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e2757600080fd5b919050565b60008060408385031215610e3f57600080fd5b610e4883610e03565b946020939093013593505050565b60008060408385031215610e6957600080fd5b610e7283610e03565b9150610e8060208401610e03565b90509250929050565b600080600060608486031215610e9e57600080fd5b610ea784610e03565b95602085013595506040909401359392505050565b600080600060608486031215610ed157600080fd5b610eda84610e03565b9250610ee860208501610e03565b929592945050506040919091013590565b600060208284031215610f0b57600080fd5b5035919050565b600060208284031215610f2457600080fd5b610f2d82610e03565b9392505050565b600181811c90821680610f4857607f821691505b602082108103610f81577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156103ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea264697066735822122001ec0ce060384773f3d3389fab7bed652c6b8ee389a7471cce10d00d87a75a0c64736f6c634300081a0033", } // ZetaNonEthABI 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 e734e698a..b25f471c3 100644 --- a/v2/pkg/zetaconnectornative.sol/zetaconnectornative.go +++ b/v2/pkg/zetaconnectornative.sol/zetaconnectornative.go @@ -40,7 +40,7 @@ type RevertContext struct { // ZetaConnectorNativeMetaData contains all meta data concerning the ZetaConnectorNative contract. var ZetaConnectorNativeMetaData = &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\":\"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\":\"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\":\"initialize\",\"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\"}],\"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\":\"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\":\"updateTSSAddress\",\"inputs\":[{\"name\":\"newTSSAddress\",\"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\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"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\":\"\",\"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\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"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\":\"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\":\"UpdatedZetaConnectorTSSAddress\",\"inputs\":[{\"name\":\"oldTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newTSSAddress\",\"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\":\"Withdrawn\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawnAndCalled\",\"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\":\"WithdrawnAndReverted\",\"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\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"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\":\"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\":\"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: "0x60a060405230608052348015601357600080fd5b5060805161248461003d6000396000818161125d01528181611286015261145c01526124846000f3fe6080604052600436106101965760003560e01c80635e3e9fef116100e1578063950837aa1161008a578063ad3cb1cc11610064578063ad3cb1cc146104f2578063d547741f14610548578063e63ab1e914610568578063f8c8765e1461059c57600080fd5b8063950837aa14610489578063a217fddf146104a9578063a783c789146104be57600080fd5b80638456cb59116100bb5780638456cb59146103db57806385f438c1146103f057806391d148541461042457600080fd5b80635e3e9fef1461037b5780636f8728ad1461039b578063743e0c9b146103bb57600080fd5b806336568abe1161014357806352d1902d1161011d57806352d1902d1461030f5780635b112591146103245780635c975abb1461034457600080fd5b806336568abe146102c75780633f4ba83a146102e75780634f1ef286146102fc57600080fd5b806321e093b11161017457806321e093b11461022a578063248a9ca31461024a5780632f2ff15d146102a757600080fd5b806301ffc9a71461019b578063106e6290146101d0578063116191b6146101f2575b600080fd5b3480156101a757600080fd5b506101bb6101b6366004611dea565b6105bc565b60405190151581526020015b60405180910390f35b3480156101dc57600080fd5b506101f06101eb366004611e48565b610655565b005b3480156101fe57600080fd5b50600054610212906001600160a01b031681565b6040516001600160a01b0390911681526020016101c7565b34801561023657600080fd5b50600154610212906001600160a01b031681565b34801561025657600080fd5b50610299610265366004611e7b565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101c7565b3480156102b357600080fd5b506101f06102c2366004611e94565b610718565b3480156102d357600080fd5b506101f06102e2366004611e94565b610762565b3480156102f357600080fd5b506101f06107ae565b6101f061030a366004611eef565b6107e3565b34801561031b57600080fd5b50610299610802565b34801561033057600080fd5b50600254610212906001600160a01b031681565b34801561035057600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101bb565b34801561038757600080fd5b506101f061039636600461203f565b610831565b3480156103a757600080fd5b506101f06103b63660046120a1565b610985565b3480156103c757600080fd5b506101f06103d6366004611e7b565b610ade565b3480156103e757600080fd5b506101f0610afe565b3480156103fc57600080fd5b506102997f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b34801561043057600080fd5b506101bb61043f366004611e94565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561049557600080fd5b506101f06104a4366004612139565b610b30565b3480156104b557600080fd5b50610299600081565b3480156104ca57600080fd5b506102997f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b3480156104fe57600080fd5b5061053b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101c79190612178565b34801561055457600080fd5b506101f0610563366004611e94565b610cc3565b34801561057457600080fd5b506102997f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b3480156105a857600080fd5b506101f06105b73660046121c9565b610d07565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061064f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61065d610e8e565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461068781610f0f565b61068f610f19565b6001546106a6906001600160a01b03168585610f77565b836001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5846040516106e191815260200190565b60405180910390a25061071360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461075281610f0f565b61075c8383611011565b50505050565b6001600160a01b03811633146107a4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61071382826110fe565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6107d881610f0f565b6107e06111c2565b50565b6107eb611252565b6107f482611322565b6107fe828261132d565b5050565b600061080c611451565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610839610e8e565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461086381610f0f565b61086b610f19565b600054600154610888916001600160a01b03918216911687610f77565b6000546001546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692635131ab59926108dd929116908a908a908a908a90600401612266565b600060405180830381600087803b1580156108f757600080fd5b505af115801561090b573d6000803e3d6000fd5b50505050856001600160a01b03167f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d86868660405161094c939291906122a9565b60405180910390a25061097e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b61098d610e8e565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46109b781610f0f565b6109bf610f19565b6000546001546109dc916001600160a01b03918216911688610f77565b6000546001546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526001600160a01b039283169263aa0c0fc192610a33929116908b908b908b908b908a90600401612374565b600060405180830381600087803b158015610a4d57600080fd5b505af1158015610a61573d6000803e3d6000fd5b50505050866001600160a01b03167f5272d2fee39bff41b2e763562526315906046373ce08a7bacf76c3080d731ff087878786604051610aa494939291906123cb565b60405180910390a250610ad660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b610ae6610f19565b6001546107e0906001600160a01b03163330846114b3565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610b2881610f0f565b6107e06114ec565b6000610b3b81610f0f565b6001600160a01b038216610b7b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254610bb2907f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4906001600160a01b03166110fe565b50600254610bea907f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb906001600160a01b03166110fe565b50610c157f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483611011565b50610c407f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb83611011565b50600254604080516001600160a01b03928316815291841660208301527f33770ab682353c17917ad3e667f05905fc8dda00671ef1ed33bef9bc8db0323e910160405180910390a150600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610cfd81610f0f565b61075c83836110fe565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610d525750825b905060008267ffffffffffffffff166001148015610d6f5750303b155b905081158015610d7d575080155b15610db4576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610e155784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610e2189898989611565565b8315610e835784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b505050505050505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01610f09576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6107e08133611870565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615610f75576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040516001600160a01b0383811660248301526044820183905261071391859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506118fd565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166110f4576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556110aa3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061064f565b600091505061064f565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156110f4576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061064f565b6111ca611979565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806112eb57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166112df7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610f75576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006107fe81610f0f565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156113a5575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526113a2918101906123f7565b60015b6113eb576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611447576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016113e2565b61071383836119d4565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f75576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040516001600160a01b03848116602483015283811660448301526064820183905261075c9186918216906323b872dd90608401610fa4565b6114f4610f19565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611234565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156115b05750825b905060008267ffffffffffffffff1660011480156115cd5750303b155b9050811580156115db575080155b15611612576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156116735784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038916158061169057506001600160a01b038816155b806116a257506001600160a01b038716155b806116b457506001600160a01b038616155b156116eb576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116f3611a2a565b6116fb611a32565b611703611a2a565b61170b611a42565b600080546001600160a01b03808c167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316178355600180548c831690841617905560028054918b16919092161790556117669087611011565b506117917f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e488611011565b506117bc7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb88611011565b506117e77f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611011565b506118127f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a88611011565b508315610e835784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001610e7a565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166107fe576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016113e2565b60006119126001600160a01b03841683611a52565b905080516000141580156119375750808060200190518101906119359190612410565b155b15610713576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016113e2565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610f75576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119dd82611a67565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611a22576107138282611b0f565b6107fe611b85565b610f75611bbd565b611a3a611bbd565b610f75611c24565b611a4a611bbd565b610f75611c2c565b6060611a6083836000611c7d565b9392505050565b806001600160a01b03163b600003611ab6576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016113e2565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611b2c9190612432565b600060405180830381855af49150503d8060008114611b67576040519150601f19603f3d011682016040523d82523d6000602084013e611b6c565b606091505b5091509150611b7c858383611d33565b95945050505050565b3415610f75576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610f75576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610feb611bbd565b611c34611bbd565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b606081471015611cbb576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016113e2565b600080856001600160a01b03168486604051611cd79190612432565b60006040518083038185875af1925050503d8060008114611d14576040519150601f19603f3d011682016040523d82523d6000602084013e611d19565b606091505b5091509150611d29868383611d33565b9695505050505050565b606082611d4857611d4382611da8565b611a60565b8151158015611d5f57506001600160a01b0384163b155b15611da1576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016113e2565b5080611a60565b805115611db85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215611dfc57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611a6057600080fd5b80356001600160a01b0381168114611e4357600080fd5b919050565b600080600060608486031215611e5d57600080fd5b611e6684611e2c565b95602085013595506040909401359392505050565b600060208284031215611e8d57600080fd5b5035919050565b60008060408385031215611ea757600080fd5b82359150611eb760208401611e2c565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215611f0257600080fd5b611f0b83611e2c565b9150602083013567ffffffffffffffff811115611f2757600080fd5b8301601f81018513611f3857600080fd5b803567ffffffffffffffff811115611f5257611f52611ec0565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715611fbe57611fbe611ec0565b604052818152828201602001871015611fd657600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008083601f84011261200857600080fd5b50813567ffffffffffffffff81111561202057600080fd5b60208301915083602082850101111561203857600080fd5b9250929050565b60008060008060006080868803121561205757600080fd5b61206086611e2c565b945060208601359350604086013567ffffffffffffffff81111561208357600080fd5b61208f88828901611ff6565b96999598509660600135949350505050565b60008060008060008060a087890312156120ba57600080fd5b6120c387611e2c565b955060208701359450604087013567ffffffffffffffff8111156120e657600080fd5b6120f289828a01611ff6565b90955093505060608701359150608087013567ffffffffffffffff81111561211957600080fd5b87016080818a03121561212b57600080fd5b809150509295509295509295565b60006020828403121561214b57600080fd5b611a6082611e2c565b60005b8381101561216f578181015183820152602001612157565b50506000910152565b6020815260008251806020840152612197816040850160208701612154565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b600080600080608085870312156121df57600080fd5b6121e885611e2c565b93506121f660208601611e2c565b925061220460408601611e2c565b915061221260608601611e2c565b905092959194509250565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015260806060820152600061229e60808301848661221d565b979650505050505050565b838152604060208201526000611b7c60408301848661221d565b6001600160a01b036122d482611e2c565b1682526001600160a01b036122eb60208301611e2c565b1660208301526040818101359083015260006060820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe101811261233357600080fd5b820160208101903567ffffffffffffffff81111561235057600080fd5b80360382131561235f57600080fd5b60806060860152611b7c60808601828461221d565b6001600160a01b03871681526001600160a01b038616602082015284604082015260a0606082015260006123ac60a08301858761221d565b82810360808401526123be81856122c3565b9998505050505050505050565b8481526060602082015260006123e560608301858761221d565b828103604084015261229e81856122c3565b60006020828403121561240957600080fd5b5051919050565b60006020828403121561242257600080fd5b81518015158114611a6057600080fd5b60008251612444818460208701612154565b919091019291505056fea2646970667358221220e3592dbb2042321b3c2916a43fd004de5bbfb294ec39d5ed1282e8b320867a7764736f6c634300081a0033", + Bin: "0x60a060405230608052348015601357600080fd5b5060805161248461003d6000396000818161125d01528181611286015261145c01526124846000f3fe6080604052600436106101965760003560e01c80635e3e9fef116100e1578063950837aa1161008a578063ad3cb1cc11610064578063ad3cb1cc146104f2578063d547741f14610548578063e63ab1e914610568578063f8c8765e1461059c57600080fd5b8063950837aa14610489578063a217fddf146104a9578063a783c789146104be57600080fd5b80638456cb59116100bb5780638456cb59146103db57806385f438c1146103f057806391d148541461042457600080fd5b80635e3e9fef1461037b5780636f8728ad1461039b578063743e0c9b146103bb57600080fd5b806336568abe1161014357806352d1902d1161011d57806352d1902d1461030f5780635b112591146103245780635c975abb1461034457600080fd5b806336568abe146102c75780633f4ba83a146102e75780634f1ef286146102fc57600080fd5b806321e093b11161017457806321e093b11461022a578063248a9ca31461024a5780632f2ff15d146102a757600080fd5b806301ffc9a71461019b578063106e6290146101d0578063116191b6146101f2575b600080fd5b3480156101a757600080fd5b506101bb6101b6366004611dea565b6105bc565b60405190151581526020015b60405180910390f35b3480156101dc57600080fd5b506101f06101eb366004611e48565b610655565b005b3480156101fe57600080fd5b50600054610212906001600160a01b031681565b6040516001600160a01b0390911681526020016101c7565b34801561023657600080fd5b50600154610212906001600160a01b031681565b34801561025657600080fd5b50610299610265366004611e7b565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101c7565b3480156102b357600080fd5b506101f06102c2366004611e94565b610718565b3480156102d357600080fd5b506101f06102e2366004611e94565b610762565b3480156102f357600080fd5b506101f06107ae565b6101f061030a366004611eef565b6107e3565b34801561031b57600080fd5b50610299610802565b34801561033057600080fd5b50600254610212906001600160a01b031681565b34801561035057600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101bb565b34801561038757600080fd5b506101f061039636600461203f565b610831565b3480156103a757600080fd5b506101f06103b63660046120a1565b610985565b3480156103c757600080fd5b506101f06103d6366004611e7b565b610ade565b3480156103e757600080fd5b506101f0610afe565b3480156103fc57600080fd5b506102997f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b34801561043057600080fd5b506101bb61043f366004611e94565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561049557600080fd5b506101f06104a4366004612139565b610b30565b3480156104b557600080fd5b50610299600081565b3480156104ca57600080fd5b506102997f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b3480156104fe57600080fd5b5061053b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101c79190612178565b34801561055457600080fd5b506101f0610563366004611e94565b610cc3565b34801561057457600080fd5b506102997f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b3480156105a857600080fd5b506101f06105b73660046121c9565b610d07565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061064f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61065d610e8e565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461068781610f0f565b61068f610f19565b6001546106a6906001600160a01b03168585610f77565b836001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5846040516106e191815260200190565b60405180910390a25061071360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461075281610f0f565b61075c8383611011565b50505050565b6001600160a01b03811633146107a4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61071382826110fe565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6107d881610f0f565b6107e06111c2565b50565b6107eb611252565b6107f482611322565b6107fe828261132d565b5050565b600061080c611451565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610839610e8e565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461086381610f0f565b61086b610f19565b600054600154610888916001600160a01b03918216911687610f77565b6000546001546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692635131ab59926108dd929116908a908a908a908a90600401612266565b600060405180830381600087803b1580156108f757600080fd5b505af115801561090b573d6000803e3d6000fd5b50505050856001600160a01b03167f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d86868660405161094c939291906122a9565b60405180910390a25061097e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b61098d610e8e565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46109b781610f0f565b6109bf610f19565b6000546001546109dc916001600160a01b03918216911688610f77565b6000546001546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526001600160a01b039283169263aa0c0fc192610a33929116908b908b908b908b908a90600401612374565b600060405180830381600087803b158015610a4d57600080fd5b505af1158015610a61573d6000803e3d6000fd5b50505050866001600160a01b03167f5272d2fee39bff41b2e763562526315906046373ce08a7bacf76c3080d731ff087878786604051610aa494939291906123cb565b60405180910390a250610ad660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b610ae6610f19565b6001546107e0906001600160a01b03163330846114b3565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610b2881610f0f565b6107e06114ec565b6000610b3b81610f0f565b6001600160a01b038216610b7b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254610bb2907f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4906001600160a01b03166110fe565b50600254610bea907f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb906001600160a01b03166110fe565b50610c157f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483611011565b50610c407f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb83611011565b50600254604080516001600160a01b03928316815291841660208301527f33770ab682353c17917ad3e667f05905fc8dda00671ef1ed33bef9bc8db0323e910160405180910390a150600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610cfd81610f0f565b61075c83836110fe565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610d525750825b905060008267ffffffffffffffff166001148015610d6f5750303b155b905081158015610d7d575080155b15610db4576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610e155784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610e2189898989611565565b8315610e835784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b505050505050505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01610f09576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6107e08133611870565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615610f75576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040516001600160a01b0383811660248301526044820183905261071391859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506118fd565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166110f4576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556110aa3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061064f565b600091505061064f565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156110f4576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061064f565b6111ca611979565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806112eb57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166112df7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610f75576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006107fe81610f0f565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156113a5575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526113a2918101906123f7565b60015b6113eb576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611447576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016113e2565b61071383836119d4565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f75576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040516001600160a01b03848116602483015283811660448301526064820183905261075c9186918216906323b872dd90608401610fa4565b6114f4610f19565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611234565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156115b05750825b905060008267ffffffffffffffff1660011480156115cd5750303b155b9050811580156115db575080155b15611612576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156116735784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038916158061169057506001600160a01b038816155b806116a257506001600160a01b038716155b806116b457506001600160a01b038616155b156116eb576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116f3611a2a565b6116fb611a32565b611703611a2a565b61170b611a42565b600080546001600160a01b03808c167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316178355600180548c831690841617905560028054918b16919092161790556117669087611011565b506117917f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e488611011565b506117bc7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb88611011565b506117e77f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611011565b506118127f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a88611011565b508315610e835784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001610e7a565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166107fe576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016113e2565b60006119126001600160a01b03841683611a52565b905080516000141580156119375750808060200190518101906119359190612410565b155b15610713576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016113e2565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610f75576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119dd82611a67565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611a22576107138282611b0f565b6107fe611b85565b610f75611bbd565b611a3a611bbd565b610f75611c24565b611a4a611bbd565b610f75611c2c565b6060611a6083836000611c7d565b9392505050565b806001600160a01b03163b600003611ab6576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016113e2565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611b2c9190612432565b600060405180830381855af49150503d8060008114611b67576040519150601f19603f3d011682016040523d82523d6000602084013e611b6c565b606091505b5091509150611b7c858383611d33565b95945050505050565b3415610f75576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610f75576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610feb611bbd565b611c34611bbd565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b606081471015611cbb576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016113e2565b600080856001600160a01b03168486604051611cd79190612432565b60006040518083038185875af1925050503d8060008114611d14576040519150601f19603f3d011682016040523d82523d6000602084013e611d19565b606091505b5091509150611d29868383611d33565b9695505050505050565b606082611d4857611d4382611da8565b611a60565b8151158015611d5f57506001600160a01b0384163b155b15611da1576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016113e2565b5080611a60565b805115611db85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215611dfc57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611a6057600080fd5b80356001600160a01b0381168114611e4357600080fd5b919050565b600080600060608486031215611e5d57600080fd5b611e6684611e2c565b95602085013595506040909401359392505050565b600060208284031215611e8d57600080fd5b5035919050565b60008060408385031215611ea757600080fd5b82359150611eb760208401611e2c565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215611f0257600080fd5b611f0b83611e2c565b9150602083013567ffffffffffffffff811115611f2757600080fd5b8301601f81018513611f3857600080fd5b803567ffffffffffffffff811115611f5257611f52611ec0565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715611fbe57611fbe611ec0565b604052818152828201602001871015611fd657600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008083601f84011261200857600080fd5b50813567ffffffffffffffff81111561202057600080fd5b60208301915083602082850101111561203857600080fd5b9250929050565b60008060008060006080868803121561205757600080fd5b61206086611e2c565b945060208601359350604086013567ffffffffffffffff81111561208357600080fd5b61208f88828901611ff6565b96999598509660600135949350505050565b60008060008060008060a087890312156120ba57600080fd5b6120c387611e2c565b955060208701359450604087013567ffffffffffffffff8111156120e657600080fd5b6120f289828a01611ff6565b90955093505060608701359150608087013567ffffffffffffffff81111561211957600080fd5b87016080818a03121561212b57600080fd5b809150509295509295509295565b60006020828403121561214b57600080fd5b611a6082611e2c565b60005b8381101561216f578181015183820152602001612157565b50506000910152565b6020815260008251806020840152612197816040850160208701612154565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b600080600080608085870312156121df57600080fd5b6121e885611e2c565b93506121f660208601611e2c565b925061220460408601611e2c565b915061221260608601611e2c565b905092959194509250565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015260806060820152600061229e60808301848661221d565b979650505050505050565b838152604060208201526000611b7c60408301848661221d565b6001600160a01b036122d482611e2c565b1682526001600160a01b036122eb60208301611e2c565b1660208301526040818101359083015260006060820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe101811261233357600080fd5b820160208101903567ffffffffffffffff81111561235057600080fd5b80360382131561235f57600080fd5b60806060860152611b7c60808601828461221d565b6001600160a01b03871681526001600160a01b038616602082015284604082015260a0606082015260006123ac60a08301858761221d565b82810360808401526123be81856122c3565b9998505050505050505050565b8481526060602082015260006123e560608301858761221d565b828103604084015261229e81856122c3565b60006020828403121561240957600080fd5b5051919050565b60006020828403121561242257600080fd5b81518015158114611a6057600080fd5b60008251612444818460208701612154565b919091019291505056fea26469706673582212204ec109dc2211b9bb584bcf097d6201f1b7f8e8c32266e62be879ded339e643b164736f6c634300081a0033", } // 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 ef69872a9..8ce64ad0e 100644 --- a/v2/pkg/zetaconnectornative.t.sol/zetaconnectornativetest.go +++ b/v2/pkg/zetaconnectornative.t.sol/zetaconnectornativetest.go @@ -67,7 +67,7 @@ type StdInvariantFuzzSelector struct { // ZetaConnectorNativeTestMetaData contains all meta data concerning the ZetaConnectorNativeTest contract. var ZetaConnectorNativeTestMetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"DEFAULT_ADMIN_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\":\"testTSSUpgrade\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTSSUpgradeFailsIfSenderIsNotTSSUpdater\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTSSUpgradeFailsIfZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpgradeAndWithdraw\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"function\",\"name\":\"testWithdrawTogglePause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Called\",\"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\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposited\",\"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\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\":\"ReceivedOnCall\",\"inputs\":[],\"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\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedGatewayTSSAddress\",\"inputs\":[{\"name\":\"oldTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedZetaConnectorTSSAddress\",\"inputs\":[{\"name\":\"oldTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawn\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawnAndCalled\",\"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\":\"WithdrawnAndReverted\",\"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\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawnV2\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"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\":\"ConnectorInitialized\",\"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\":\"NotAllowedToCallOnCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotAllowedToCallOnRevert\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotWhitelistedInCustody\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PayloadSizeExceeded\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061d0368061003c6000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c8063a217fddf11610104578063ccb0e3f2116100a2578063e20c9f7111610071578063e20c9f7114610357578063e63ab1e91461035f578063fa7626d414610386578063fe574f841461039357600080fd5b8063ccb0e3f214610337578063d509b16c1461033f578063dcf7d03714610347578063de1cb76c1461034f57600080fd5b8063b0464fdc116100de578063b0464fdc14610307578063b5508aa91461030f578063ba414fa614610317578063c19099721461032f57600080fd5b8063a217fddf146102d0578063a783c789146102d8578063af298bb1146102ff57600080fd5b8063493465581161017c578063828320141161014b578063828320141461026957806385226c811461027157806385f438c114610286578063916a17c6146102bb57600080fd5b8063493465581461023c5780634df42da11461024457806352ff59391461024c57806366d9a9a01461025457600080fd5b80632ade3880116101b85780632ade38801461020f5780633cba0107146102245780633e5e3c231461022c5780633f7286f41461023457600080fd5b8063070f2ad0146101df5780630a9254e4146101e95780631ed7831c146101f1575b600080fd5b6101e761039b565b005b6101e761059b565b6101f9610dec565b6040516102069190619b1c565b60405180910390f35b610217610e4e565b6040516102069190619bb8565b6101e7610f90565b6101f9611753565b6101f96117b3565b6101e7611813565b6101e7611e57565b6101e7611fc7565b61025c612816565b6040516102069190619d1e565b6101e7612998565b610279612bf8565b6040516102069190619dbc565b6102ad7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b604051908152602001610206565b6102c3612cc8565b6040516102069190619e33565b6102ad600081565b6102ad7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b6101e7612dc3565b6102c361320f565b61027961330a565b61031f6133da565b6040519015158152602001610206565b6101e76134ae565b6101e761371e565b6101e7614244565b6101e7614282565b6101e761492c565b6101f9614f89565b6102ad7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b601f5461031f9060ff1681565b6101e7614fe9565b6026546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b15801561040d57600080fd5b505af1158015610421573d6000803e3d6000fd5b5050602654604080516001600160a01b039092166024830152600060448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506104ed9190600401619eca565b600060405180830381600087803b15801561050757600080fd5b505af115801561051b573d6000803e3d6000fd5b5050602254602480546040517f950837aa0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529216935063950837aa9250015b600060405180830381600087803b15801561058157600080fd5b505af1158015610595573d6000803e3d6000fd5b50505050565b602480547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602580548216611234179055602680548216615678179055602780549091166198761790556040516105f990619a49565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f08015801561067d573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600e81527f4761746577617945564d2e736f6c00000000000000000000000000000000000060208201526026546024805493519186169082015260448101939093529216606482015260009161076f916084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc0c53b8b00000000000000000000000000000000000000000000000000000000179052615202565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0384811682029290921792839055604080518082018252601081527f4552433230437573746f64792e736f6c000000000000000000000000000000006020820152602654602480549351949096048516958401959095529383166044830152909116606482015291925061081591608401610712565b602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383811691909117909155604080518082018252601781527f5a657461436f6e6e6563746f724e61746976652e736f6c0000000000000000006020820152601f5460235460265460248054955161010090940487169084015290851660448301528416606482015291909216608482015291925061091a9160a40160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff8c8765e00000000000000000000000000000000000000000000000000000000179052615202565b602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03831617905560405190915061095c90619a56565b604051809103906000f080158015610978573d6000803e3d6000fd5b50602080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556026546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b158015610a2457600080fd5b505af1158015610a38573d6000803e3d6000fd5b5050602480546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d93506306447d56925001600060405180830381600087803b158015610aad57600080fd5b505af1158015610ac1573d6000803e3d6000fd5b5050601f546021546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261010090920416925063ae7a3a6f9150602401600060405180830381600087803b158015610b2c57600080fd5b505af1158015610b40573d6000803e3d6000fd5b5050601f546022546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526101009092041692506310188aef9150602401600060405180830381600087803b158015610bab57600080fd5b505af1158015610bbf573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610c2157600080fd5b505af1158015610c35573d6000803e3d6000fd5b50506023546022546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152624c4b406024820152911692506340c10f199150604401600060405180830381600087803b158015610ca457600080fd5b505af1158015610cb8573d6000803e3d6000fd5b50506026546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610d3c57600080fd5b505af1158015610d50573d6000803e3d6000fd5b5050604080516080810182526024546001600160a01b039081168252602354811660208084019182526001848601908152855191820190955260008152606084018190528351602880549185167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316178155925160298054919095169116179092559251602a55909350909150602b906105959082619fa5565b60606016805480602002602001604051908101604052809291908181526020018280548015610e4457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610e26575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015610f8757600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610f70578382906000526020600020018054610ee390619f0c565b80601f0160208091040260200160405190810160405280929190818152602001828054610f0f90619f0c565b8015610f5c5780601f10610f3157610100808354040283529160200191610f5c565b820191906000526020600020905b815481529060010190602001808311610f3f57829003601f168201915b505050505081526020019060010190610ec4565b505050508152505081526020019060010190610e72565b50505050905090565b602354602554604051620186a0602482018190526001600160a01b039384166044830152929091166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a20000000000000000000000000000000000000000000000000000000017905260235460255491516370a0823160e01b81526001600160a01b0392831660048201529293506000929116906370a0823190602401602060405180830381865afa15801561106e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611092919061a064565b905061109f816000615221565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156110f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611114919061a064565b601f54604080516001600160a01b036101009093048316602482015260448082018a905282518083039091018152606490910182526020810180517fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911617905260235491517ff30c7ba300000000000000000000000000000000000000000000000000000000815293945092737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba3926111ef92911690600090869060040161a07d565b600060405180830381600087803b15801561120957600080fd5b505af115801561121d573d6000803e3d6000fd5b50506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156112af57600080fd5b505af11580156112c3573d6000803e3d6000fd5b5050601f54602354602554604080516101009094046001600160a01b039081168552602085018d9052928316908401521660608201527f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609250608001905060405180910390a16022546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156113b757600080fd5b505af11580156113cb573d6000803e3d6000fd5b50506020546040516001600160a01b0390911692507f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d9150611410908990889061a0a5565b60405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561147157600080fd5b505af1158015611485573d6000803e3d6000fd5b50506022546020546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef93506114dd92909116908a9089908b9060040161a0be565b600060405180830381600087803b1580156114f757600080fd5b505af115801561150b573d6000803e3d6000fd5b50506023546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a08231906024015b602060405180830381865afa15801561155f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611583919061a064565b905061158f8188615221565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156115e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611604919061a064565b9050611619816116148a8761a126565b615221565b602354601f546020546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526101009092046001600160a01b0390811660048401529081166024830152600092169063dd62ed3e90604401602060405180830381865afa158015611691573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b5919061a064565b90506116c2816000615221565b602354601f546040516370a0823160e01b81526101009091046001600160a01b03908116600483015260009216906370a0823190602401602060405180830381865afa158015611716573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173a919061a064565b9050611747816000615221565b50505050505050505050565b60606018805480602002602001604051908101604052809291908181526020018280548015610e44576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610e26575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610e44576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610e26575050505050905090565b6040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6ed701690000000000000000000000000000000000000000000000000000000017905260235460255493516370a0823160e01b8152620186a0946000949385936001600160a01b03908116936370a08231936118b593921691016001600160a01b0391909116815260200190565b602060405180830381865afa1580156118d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f6919061a064565b9050611903816000615221565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611954573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611978919061a064565b601f54604080516001600160a01b036101009093048316602482015260448082018a905282518083039091018152606490910182526020810180517fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911617905260235491517ff30c7ba300000000000000000000000000000000000000000000000000000000815293945092737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba392611a5392911690600090869060040161a07d565b600060405180830381600087803b158015611a6d57600080fd5b505af1158015611a81573d6000803e3d6000fd5b50506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015611b1357600080fd5b505af1158015611b27573d6000803e3d6000fd5b5050601f546040516101009091046001600160a01b031681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09250602001905060405180910390a16022546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611bfe57600080fd5b505af1158015611c12573d6000803e3d6000fd5b50506020546040516001600160a01b0390911692507f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d9150611c57908990889061a0a5565b60405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611cb857600080fd5b505af1158015611ccc573d6000803e3d6000fd5b50506022546020546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350611d2492909116908a9089908b9060040161a0be565b600060405180830381600087803b158015611d3e57600080fd5b505af1158015611d52573d6000803e3d6000fd5b50506023546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611da5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc9919061a064565b9050611dd6816000615221565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611e27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4b919061a064565b90506116198185615221565b602480546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d569101600060405180830381600087803b158015611ec857600080fd5b505af1158015611edc573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015611f6557600080fd5b505af1158015611f79573d6000803e3d6000fd5b50506022546040517f950837aa000000000000000000000000000000000000000000000000000000008152600060048201526001600160a01b03909116925063950837aa9150602401610567565b6022546040517f91d148540000000000000000000000000000000000000000000000000000000081527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4600482015261432160248201819052916000916001600160a01b03909116906391d1485490604401602060405180830381865afa158015612056573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207a919061a139565b9050612085816152a1565b6022546040517f91d148540000000000000000000000000000000000000000000000000000000081527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60048201526001600160a01b03848116602483015260009216906391d1485490604401602060405180830381865afa15801561210f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612133919061a139565b905061213e816152a1565b6022546026546040517f91d148540000000000000000000000000000000000000000000000000000000081527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460048201526001600160a01b03918216602482015260009291909116906391d1485490604401602060405180830381865afa1580156121ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f2919061a139565b90506121fd8161531b565b6022546026546040517f91d148540000000000000000000000000000000000000000000000000000000081527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60048201526001600160a01b03918216602482015260009291909116906391d1485490604401602060405180830381865afa15801561228d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122b1919061a139565b90506122bc8161531b565b602480546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d569101600060405180830381600087803b15801561232d57600080fd5b505af1158015612341573d6000803e3d6000fd5b50506022546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156123d357600080fd5b505af11580156123e7573d6000803e3d6000fd5b5050602654604080516001600160a01b03928316815291891660208301527f33770ab682353c17917ad3e667f05905fc8dda00671ef1ed33bef9bc8db0323e935001905060405180910390a16022546040517f950837aa0000000000000000000000000000000000000000000000000000000081526001600160a01b0387811660048301529091169063950837aa90602401600060405180830381600087803b15801561249357600080fd5b505af11580156124a7573d6000803e3d6000fd5b5050505061252b85602260009054906101000a90046001600160a01b03166001600160a01b0316635b1125916040518163ffffffff1660e01b8152600401602060405180830381865afa158015612502573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612526919061a15b565b61536d565b6022546040517f91d148540000000000000000000000000000000000000000000000000000000081527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460048201526001600160a01b038781166024830152909116906391d1485490604401602060405180830381865afa1580156125b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d8919061a139565b93506125e38461531b565b6022546040517f91d148540000000000000000000000000000000000000000000000000000000081527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60048201526001600160a01b038781166024830152909116906391d1485490604401602060405180830381865afa15801561266c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612690919061a139565b925061269b8361531b565b6022546026546040517f91d148540000000000000000000000000000000000000000000000000000000081527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460048201526001600160a01b0391821660248201529116906391d1485490604401602060405180830381865afa158015612726573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061274a919061a139565b9150612755826152a1565b6022546026546040517f91d148540000000000000000000000000000000000000000000000000000000081527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60048201526001600160a01b0391821660248201529116906391d1485490604401602060405180830381865afa1580156127e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612804919061a139565b905061280f816152a1565b5050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610f87578382906000526020600020906002020160405180604001604052908160008201805461286d90619f0c565b80601f016020809104026020016040519081016040528092919081815260200182805461289990619f0c565b80156128e65780601f106128bb576101008083540402835291602001916128e6565b820191906000526020600020905b8154815290600101906020018083116128c957829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561298057602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161292d5790505b5050505050815250508152602001906001019061283a565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f19018152908290526024805463ca669fa760e01b84526001600160a01b03166004840152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa79101600060405180830381600087803b158015612a3557600080fd5b505af1158015612a49573d6000803e3d6000fd5b505060248054604080516001600160a01b03909216928201929092527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448083019190915282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f0000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250612b389190600401619eca565b600060405180830381600087803b158015612b5257600080fd5b505af1158015612b66573d6000803e3d6000fd5b50506022546020546040517f6f8728ad0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450636f8728ad9350612bc1929091169087908690889060289060040161a261565b600060405180830381600087803b158015612bdb57600080fd5b505af1158015612bef573d6000803e3d6000fd5b50505050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610f87578382906000526020600020018054612c3b90619f0c565b80601f0160208091040260200160405190810160405280929190818152602001828054612c6790619f0c565b8015612cb45780601f10612c8957610100808354040283529160200191612cb4565b820191906000526020600020905b815481529060010190602001808311612c9757829003601f168201915b505050505081526020019060010190612c1c565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015610f875760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015612dab57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411612d585790505b50505050508152505081526020019060010190612cec565b602280546040805160608101909152828152612e0d926001600160a01b039092169161cfdf60208301396040805160208101909152600081526024546001600160a01b03166153ce565b6022546023546025546040516370a0823160e01b81526001600160a01b03918216600482015292811692620186a09260009283929116906370a0823190602401602060405180830381865afa158015612e6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e8e919061a064565b9050612e9b816000615221565b6025546040516001600160a01b0390911660248201526044810184905260009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260235490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391612f7b916001600160a01b039190911690600090869060040161a07d565b600060405180830381600087803b158015612f9557600080fd5b505af1158015612fa9573d6000803e3d6000fd5b50506040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b0388166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561303757600080fd5b505af115801561304b573d6000803e3d6000fd5b50506025546040518781526001600160a01b0390911692507f3e35ef4326151011878c9e8e968a0f3913fe98ca68f72a1e0c2e9be13ffb3ee9915060200160405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156130ea57600080fd5b505af11580156130fe573d6000803e3d6000fd5b50506025546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810188905260448101879052908816925063106e62909150606401600060405180830381600087803b15801561317057600080fd5b505af1158015613184573d6000803e3d6000fd5b50506023546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156131d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131fb919061a064565b90506132078186615221565b505050505050565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015610f875760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156132f257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161329f5790505b50505050508152505081526020019060010190613233565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610f8757838290600052602060002001805461334d90619f0c565b80601f016020809104026020016040519081016040528092919081815260200182805461337990619f0c565b80156133c65780601f1061339b576101008083540402835291602001916133c6565b820191906000526020600020905b8154815290600101906020018083116133a957829003601f168201915b50505050508152602001906001019061332e565b60085460009060ff16156133f2575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015613483573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134a7919061a064565b1415905090565b602354602554604051620186a0602482018190526001600160a01b039384166044830152929091166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a20000000000000000000000000000000000000000000000000000000017905260248054915163ca669fa760e01b81526001600160a01b039092166004830152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa79101600060405180830381600087803b15801561359557600080fd5b505af11580156135a9573d6000803e3d6000fd5b505060248054604080516001600160a01b03909216928201929092527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448083019190915282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f0000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506136989190600401619eca565b600060405180830381600087803b1580156136b257600080fd5b505af11580156136c6573d6000803e3d6000fd5b50506022546020546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350612bc1929091169087908690889060040161a0be565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152620186a090600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561377f57600080fd5b505af1158015613793573d6000803e3d6000fd5b5050602754604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061387e9190600401619eca565b600060405180830381600087803b15801561389857600080fd5b505af11580156138ac573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561390057600080fd5b505af1158015613914573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561397157600080fd5b505af1158015613985573d6000803e3d6000fd5b5050602754604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250613a709190600401619eca565b600060405180830381600087803b158015613a8a57600080fd5b505af1158015613a9e573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613af257600080fd5b505af1158015613b06573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015613b6357600080fd5b505af1158015613b77573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613bcb57600080fd5b505af1158015613bdf573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd93c0665000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015613c6857600080fd5b505af1158015613c7c573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015613cd957600080fd5b505af1158015613ced573d6000803e3d6000fd5b50506022546025546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101879052604481018690529116925063106e62909150606401600060405180830381600087803b158015613d6157600080fd5b505af1158015613d75573d6000803e3d6000fd5b50506024805460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063ca669fa7925001600060405180830381600087803b158015613dd157600080fd5b505af1158015613de5573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613e3957600080fd5b505af1158015613e4d573d6000803e3d6000fd5b50506023546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a08231906024015b602060405180830381865afa158015613ea1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ec5919061a064565b9050613ed2816000615221565b6025546040516001600160a01b0390911660248201526044810184905260009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260235490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391613fb2916001600160a01b039190911690600090869060040161a07d565b600060405180830381600087803b158015613fcc57600080fd5b505af1158015613fe0573d6000803e3d6000fd5b50506022546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561407257600080fd5b505af1158015614086573d6000803e3d6000fd5b50506025546040518781526001600160a01b0390911692507f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5915060200160405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561412557600080fd5b505af1158015614139573d6000803e3d6000fd5b50506022546025546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101899052604481018890529116925063106e62909150606401600060405180830381600087803b1580156141ad57600080fd5b505af11580156141c1573d6000803e3d6000fd5b50506023546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015614214573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614238919061a064565b905061280f8186615221565b6023546025546040516370a0823160e01b81526001600160a01b039182166004820152620186a09260009283929116906370a0823190602401613e84565b602354602554604051620186a0602482018190526001600160a01b039384166044830152929091166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc51316910000000000000000000000000000000000000000000000000000000017905260235460255491516370a0823160e01b81526001600160a01b0392831660048201529293506000929116906370a0823190602401602060405180830381865afa158015614360573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614384919061a064565b9050614391816000615221565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156143e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614406919061a064565b601f54604080516001600160a01b036101009093048316602482015260448082018a905282518083039091018152606490910182526020810180517fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911617905260235491517ff30c7ba300000000000000000000000000000000000000000000000000000000815293945092737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba3926144e192911690600090869060040161a07d565b600060405180830381600087803b1580156144fb57600080fd5b505af115801561450f573d6000803e3d6000fd5b50506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156145a157600080fd5b505af11580156145b5573d6000803e3d6000fd5b5050601f547f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60925061010090046001600160a01b031690506145f860028961a2ad565b602354602554604080516001600160a01b03958616815260208101949094529184168383015292909216606082015290519081900360800190a16022546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156146c057600080fd5b505af11580156146d4573d6000803e3d6000fd5b50506020546040516001600160a01b0390911692507f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d9150614719908990889061a0a5565b60405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561477a57600080fd5b505af115801561478e573d6000803e3d6000fd5b50506022546020546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef93506147e692909116908a9089908b9060040161a0be565b600060405180830381600087803b15801561480057600080fd5b505af1158015614814573d6000803e3d6000fd5b50506023546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015614867573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061488b919061a064565b905061489c8161161460028a61a2ad565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156148ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614911919061a064565b90506116198161492260028b61a2ad565b611614908761a126565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f19018152908290526023546020546370a0823160e01b84526001600160a01b0390811660048501529193506000929116906370a0823190602401602060405180830381865afa1580156149c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906149e6919061a064565b90506149f3816000615221565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015614a44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a68919061a064565b601f54604080516001600160a01b036101009093048316602482015260448082018a905282518083039091018152606490910182526020810180517fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911617905260235491517ff30c7ba300000000000000000000000000000000000000000000000000000000815293945092737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba392614b4392911690600090869060040161a07d565b600060405180830381600087803b158015614b5d57600080fd5b505af1158015614b71573d6000803e3d6000fd5b50506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015614c0357600080fd5b505af1158015614c17573d6000803e3d6000fd5b505050507f689a5a5cb55e795ffe4cd8b419cd3bb0a3373974c54d25f64e734d7388b93e9b601f60019054906101000a90046001600160a01b03166028604051614c6292919061a2e8565b60405180910390a1601f546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015614cfc57600080fd5b505af1158015614d10573d6000803e3d6000fd5b50506023546020546040516001600160a01b039283169450911691507fde7603a6ed5d07c9f43597ccfe9043d15b66d3284f0de321f5cdf56329e6e03590614d5e908a90899060289061a30a565b60405180910390a36022546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015614df457600080fd5b505af1158015614e08573d6000803e3d6000fd5b50506020546040516001600160a01b0390911692507f5272d2fee39bff41b2e763562526315906046373ce08a7bacf76c3080d731ff09150614e50908990889060289061a30a565b60405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614eb157600080fd5b505af1158015614ec5573d6000803e3d6000fd5b50506022546020546040517f6f8728ad0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450636f8728ad9350614f2092909116908a9089908b9060289060040161a261565b600060405180830381600087803b158015614f3a57600080fd5b505af1158015614f4e573d6000803e3d6000fd5b50506023546020546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401611542565b60606015805480602002602001604051908101604052809291908181526020018280548015610e44576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610e26575050505050905090565b6024805460405163ca669fa760e01b81526001600160a01b039091166004820152620186a091600091737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa79101600060405180830381600087803b15801561504957600080fd5b505af115801561505d573d6000803e3d6000fd5b505060248054604080516001600160a01b03909216928201929092527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448083019190915282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f0000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061514c9190600401619eca565b600060405180830381600087803b15801561516657600080fd5b505af115801561517a573d6000803e3d6000fd5b50506022546025546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101879052604481018690529116925063106e62909150606401600060405180830381600087803b1580156151ee57600080fd5b505af1158015613207573d6000803e3d6000fd5b600061520c619a63565b6152178484836153e3565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c54906044015b60006040518083038186803b15801561528d57600080fd5b505afa158015613207573d6000803e3d6000fd5b6040517fa59828850000000000000000000000000000000000000000000000000000000081528115156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063a5982885906024015b60006040518083038186803b15801561530757600080fd5b505afa15801561280f573d6000803e3d6000fd5b6040517f0c9fd5810000000000000000000000000000000000000000000000000000000081528115156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90630c9fd581906024016152ef565b6040517f515361f60000000000000000000000000000000000000000000000000000000081526001600160a01b03808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f690604401615275565b6153d6619a63565b61280f858585848661545e565b6000806153f0858461555e565b90506154536040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f7879000000815250828660405160200161543e92919061a335565b6040516020818303038152906040528561556a565b9150505b9392505050565b6040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201528190737109709ecfa91a80626ff3989d68f67f5b1dd12d9081906306447d5690602401600060405180830381600087803b1580156154d057600080fd5b505af19250505080156154e1575060015b6154f6576154f187878787615598565b612bef565b61550287878787615598565b806001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561553d57600080fd5b505af1158015615551573d6000803e3d6000fd5b5050505050505050505050565b600061545783836155b1565b60c0810151516000901561558e5761558784848460c001516155cc565b9050615457565b6155878484615772565b60006155a4848361585d565b905061280f858285615869565b60006155bd8383615c33565b6154578383602001518461556a565b6000806155d7615c43565b905060006155e58683615d16565b905060006155fc82606001518360200151856161bc565b9050600061560c838389896163ce565b905060006156198261724b565b602081015181519192509060030b1561568c5789826040015160405160200161564392919061a357565b60408051601f19818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261568391600401619eca565b60405180910390fd5b60006156cf6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a20000000000000000000000081525083600161741a565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90615722908490600401619eca565b602060405180830381865afa15801561573f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615763919061a15b565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc925906157c7908790600401619eca565b600060405180830381865afa1580156157e4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261580c919081019061a491565b9050600061583a828560405160200161582692919061a4c6565b60405160208183030381529060405261761a565b90506001600160a01b03811661521757848460405160200161564392919061a4f5565b60006155bd838361762d565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201527fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61036024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90600090829063667f9d7090604401602060405180830381865afa158015615905573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615929919061a064565b905080615ad057600061593b86617639565b604080518082018252600581527f352e302e30000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506159c6905b60408051808201825260008082526020918201528151808301909252845182528085019082015290617731565b806159d2575060008451115b15615a55576040517f4f1ef2860000000000000000000000000000000000000000000000000000000081526001600160a01b03871690634f1ef28690615a1e908890889060040161a335565b600060405180830381600087803b158015615a3857600080fd5b505af1158015615a4c573d6000803e3d6000fd5b50505050615aca565b6040517f3659cfe60000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152871690633659cfe690602401600060405180830381600087803b158015615ab157600080fd5b505af1158015615ac5573d6000803e3d6000fd5b505050505b5061280f565b806000615adc82617639565b604080518082018252600581527f352e302e3000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615b3e90615999565b80615b4a575060008551115b15615bcf576040517f9623609d0000000000000000000000000000000000000000000000000000000081526001600160a01b03831690639623609d90615b98908a908a908a9060040161a5a0565b600060405180830381600087803b158015615bb257600080fd5b505af1158015615bc6573d6000803e3d6000fd5b50505050612bef565b6040517f99a88ec40000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015287811660248301528316906399a88ec490604401600060405180830381600087803b15801561553d57600080fd5b615c3f82826000617745565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90615cca90849060040161a5d1565b600060405180830381865afa158015615ce7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615d0f919081019061a618565b9250505090565b615d486040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050615d936040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b615d9c85617848565b60208201526000615dac86617c2d565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015615dee573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615e16919081019061a618565b86838560200151604051602001615e30949392919061a661565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190615e88908590600401619eca565b600060405180830381865afa158015615ea5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615ecd919081019061a618565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690615f1590849060040161a765565b602060405180830381865afa158015615f32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615f56919061a139565b615f6b5781604051602001615643919061a7b7565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890615fb090849060040161a849565b600060405180830381865afa158015615fcd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615ff5919081019061a618565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f69061603c90849060040161a89b565b602060405180830381865afa158015616059573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061607d919061a139565b15616112576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906160c790849060040161a89b565b600060405180830381865afa1580156160e4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261610c919081019061a618565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001616137919061a8ed565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161616392919061a959565b600060405180830381865afa158015616180573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526161a8919081019061a618565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816161d85790505090506040518060400160405280600481526020017f6772657000000000000000000000000000000000000000000000000000000000815250816000815181106162385761623861a97e565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061628c5761628c61a97e565b6020026020010181905250846040516020016162a8919061a9ad565b604051602081830303815290604052816002815181106162ca576162ca61a97e565b6020026020010181905250826040516020016162e6919061aa19565b604051602081830303815290604052816003815181106163085761630861a97e565b6020026020010181905250600061631e8261724b565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506163af9060408051808201825260008082526020918201528151808301909252845182528085019082015290617eb0565b6163c45785604051602001615643919061aa5a565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d901561641e565b511590565b616592578260200151156164da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401615683565b8260c0015115616592576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401615683565b6040805160ff8082526120008201909252600091816020015b60608152602001906001900390816165ab57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806166069061aaeb565b935060ff168151811061661b5761661b61a97e565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e370000000000000000000000000000000000000081525060405160200161666c919061ab0a565b6040516020818303038152906040528282806166879061aaeb565b935060ff168151811061669c5761669c61a97e565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806166e99061aaeb565b935060ff16815181106166fe576166fe61a97e565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d6500000000000000000000000000000000000081525082828061674b9061aaeb565b935060ff16815181106167605761676061a97e565b6020026020010181905250876020015182828061677c9061aaeb565b935060ff16815181106167915761679161a97e565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806167de9061aaeb565b935060ff16815181106167f3576167f361a97e565b60209081029190910101528751828261680b8161aaeb565b935060ff16815181106168205761682061a97e565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e4964000000000000000000000000000000000000000000000081525082828061686d9061aaeb565b935060ff16815181106168825761688261a97e565b602002602001018190525061689646617f11565b82826168a18161aaeb565b935060ff16815181106168b6576168b661a97e565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c6500000000000000000000000000000000008152508282806169039061aaeb565b935060ff16815181106169185761691861a97e565b6020026020010181905250868282806169309061aaeb565b935060ff16815181106169455761694561a97e565b6020908102919091010152855115616a6c5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826169968161aaeb565b935060ff16815181106169ab576169ab61a97e565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d906169fb908990600401619eca565b600060405180830381865afa158015616a18573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616a40919081019061a618565b8282616a4b8161aaeb565b935060ff1681518110616a6057616a6061a97e565b60200260200101819052505b846020015115616b3c5760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282616ab58161aaeb565b935060ff1681518110616aca57616aca61a97e565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280616b179061aaeb565b935060ff1681518110616b2c57616b2c61a97e565b6020026020010181905250616d03565b616b746164198660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b616c075760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282616bb78161aaeb565b935060ff1681518110616bcc57616bcc61a97e565b60200260200101819052508460a00151604051602001616bec919061a9ad565b604051602081830303815290604052828280616b179061aaeb565b8460c00151158015616c4a575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152616c4890511590565b155b15616d035760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282616c8e8161aaeb565b935060ff1681518110616ca357616ca361a97e565b6020026020010181905250616cb788617fb1565b604051602001616cc7919061a9ad565b604051602081830303815290604052828280616ce29061aaeb565b935060ff1681518110616cf757616cf761a97e565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152616d3790511590565b616dcc5760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282616d7a8161aaeb565b935060ff1681518110616d8f57616d8f61a97e565b60200260200101819052508460400151828280616dab9061aaeb565b935060ff1681518110616dc057616dc061a97e565b60200260200101819052505b606085015115616eed5760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282616e158161aaeb565b935060ff1681518110616e2a57616e2a61a97e565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015616e99573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616ec1919081019061a618565b8282616ecc8161aaeb565b935060ff1681518110616ee157616ee161a97e565b60200260200101819052505b60e08501515115616f945760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282616f378161aaeb565b935060ff1681518110616f4c57616f4c61a97e565b6020026020010181905250616f688560e0015160000151617f11565b8282616f738161aaeb565b935060ff1681518110616f8857616f8861a97e565b60200260200101819052505b60e0850151602001511561703e5760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282616fe18161aaeb565b935060ff1681518110616ff657616ff661a97e565b60200260200101819052506170128560e0015160200151617f11565b828261701d8161aaeb565b935060ff16815181106170325761703261a97e565b60200260200101819052505b60e085015160400151156170e85760408051808201909152600e81527f2d2d6d61784665655065724761730000000000000000000000000000000000006020820152828261708b8161aaeb565b935060ff16815181106170a0576170a061a97e565b60200260200101819052506170bc8560e0015160400151617f11565b82826170c78161aaeb565b935060ff16815181106170dc576170dc61a97e565b60200260200101819052505b60e085015160600151156171925760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826171358161aaeb565b935060ff168151811061714a5761714a61a97e565b60200260200101819052506171668560e0015160600151617f11565b82826171718161aaeb565b935060ff16815181106171865761718661a97e565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156171b0576171b0619edd565b6040519080825280602002602001820160405280156171e357816020015b60608152602001906001900390816171ce5790505b50905060005b8260ff168160ff16101561723c57838160ff168151811061720c5761720c61a97e565b6020026020010151828260ff16815181106172295761722961a97e565b60209081029190910101526001016171e9565b5093505050505b949350505050565b6172726040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916172f89186910161ab75565b600060405180830381865afa158015617315573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261733d919081019061a618565b9050600061734b8683618aa0565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161737b9190619dbc565b6000604051808303816000875af115801561739a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526173c2919081019061abbc565b805190915060030b158015906173db5750602081015151155b80156173ea5750604081015151155b156163c457816000815181106174025761740261a97e565b6020026020010151604051602001615643919061ac72565b6060600061744f8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506174869082905b90618bf5565b156175e3576000617503826174fd846174f76174c98a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90618c1c565b90618c7e565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150617567908290618bf5565b156175d157604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526175ce905b8290618d03565b90505b6175da81618d29565b92505050615457565b82156175fc57848460405160200161564392919061ae5e565b5050604080516020810190915260008152615457565b509392505050565b6000808251602084016000f09392505050565b615c3f82826001617745565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fad3cb1cc00000000000000000000000000000000000000000000000000000000179052905160609160009182916001600160a01b038616916176ae919061af05565b600060405180830381855afa9150503d80600081146176e9576040519150601f19603f3d011682016040523d82523d6000602084013e6176ee565b606091505b5091509150818015617701575060208151115b1561771a5780806020019051810190617243919061a618565b505060408051602081019091526000815292915050565b600061773d8383618d92565b159392505050565b8160a001511561775457505050565b6000617761848484618e6d565b9050600061776e8261724b565b602081015181519192509060030b15801561780a5750604080518082018252600781527f53554343455353000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261780a90604080518082018252600080825260209182015281518083019092528451825280850190820152617480565b1561781757505050505050565b60408201515115617837578160400151604051602001615643919061af21565b80604051602001615643919061af7f565b6060600061787d8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506178e2905b8290617eb0565b1561795157604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526154579061794c908390619408565b618d29565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526179b3905b8290619492565b600103617a8057604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617a19906175c7565b50604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526154579061794c905b8390618d03565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617adf906178db565b15617c1657604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290617b4790839061952c565b905060008160018351617b5a919061a126565b81518110617b6a57617b6a61a97e565b60200260200101519050617c0d61794c617be06040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290619408565b95945050505050565b82604051602001615643919061afea565b50919050565b60606000617c628360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150617cc4906178db565b15617cd25761545781618d29565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617d31906179ac565b600103617d9b57604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526154579061794c90617a79565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617dfa906178db565b15617c1657604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290617e6290839061952c565b9050600181511115617e9e578060028251617e7d919061a126565b81518110617e8d57617e8d61a97e565b602002602001015192505050919050565b5082604051602001615643919061afea565b805182516000911115617ec55750600061521b565b81518351602085015160009291617edb9161b0c8565b617ee5919061a126565b905082602001518103617efc57600191505061521b565b82516020840151819020912014905092915050565b60606000617f1e836195d1565b600101905060008167ffffffffffffffff811115617f3e57617f3e619edd565b6040519080825280601f01601f191660200182016040528015617f68576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084617f7257509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e534544000000000000000000000000000000000000000000008184019081528551808701875283815284019290925284518086019095525184529083015260609161803d905b8290617731565b1561807d57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e73650000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526180dc90618036565b1561811c57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d495400000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261817b90618036565b156181bb57505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261821a90618036565b8061827f5750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261827f90618036565b156182bf57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261831e90618036565b806183835750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261838390618036565b156183c357505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261842290618036565b806184875750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261848790618036565b156184c757505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261852690618036565b8061858b5750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261858b90618036565b156185cb57505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261862a90618036565b1561866a57505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526186c990618036565b1561870957505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261876890618036565b156187a857505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261880790618036565b1561884757505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e3000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526188a690618036565b156188e657505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261894590618036565b806189aa5750604080518082018252601181527f4147504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526189aa90618036565b156189ea57505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e3100000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618a4990618036565b15618a8957505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151615643929060200161b0db565b60608060005b8451811015618b2b5781858281518110618ac257618ac261a97e565b6020026020010151604051602001618adb92919061a4c6565b604051602081830303815290604052915060018551618afa919061a126565b8114618b235781604051602001618b11919061b244565b60405160208183030381529060405291505b600101618aa6565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081618b445790505090508381600081518110618b6f57618b6f61a97e565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110618bc357618bc361a97e565b60200260200101819052508181600281518110618be257618be261a97e565b6020908102919091010152949350505050565b6020808301518351835192840151600093618c1392918491906196b3565b14159392505050565b60408051808201909152600080825260208201526000618c4e84600001518560200151856000015186602001516197c4565b9050836020015181618c60919061a126565b84518590618c6f90839061a126565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015618ca357508161521b565b6020808301519084015160019114618cca5750815160208481015190840151829020919020145b8015618cfb57825184518590618ce190839061a126565b9052508251602085018051618cf790839061b0c8565b9052505b509192915050565b6040805180820190915260008082526020820152618d228383836198e4565b5092915050565b60606000826000015167ffffffffffffffff811115618d4a57618d4a619edd565b6040519080825280601f01601f191660200182016040528015618d74576020820181803683370190505b5090506000602082019050618d22818560200151866000015161998f565b8151815160009190811115618da5575081515b6020808501519084015160005b83811015618e5e5782518251808214618e2e576000196020871015618e0d57600184618ddf89602061a126565b618de9919061b0c8565b618df490600861b285565b618dff90600261b383565b618e09919061a126565b1990505b8181168382168181039114618e2b57975061521b9650505050505050565b50505b618e3960208661b0c8565b9450618e4660208561b0c8565b93505050602081618e57919061b0c8565b9050618db2565b50845186516163c4919061b38f565b60606000618e79615c43565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081618e9657905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280618ef19061aaeb565b935060ff1681518110618f0657618f0661a97e565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001618f57919061b3af565b604051602081830303815290604052828280618f729061aaeb565b935060ff1681518110618f8757618f8761a97e565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280618fd49061aaeb565b935060ff1681518110618fe957618fe961a97e565b602002602001018190525082604051602001619005919061aa19565b6040516020818303038152906040528282806190209061aaeb565b935060ff16815181106190355761903561a97e565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e7472616374000000000000000000000000000000000000000000008152508282806190829061aaeb565b935060ff16815181106190975761909761a97e565b60200260200101819052506190ac8784619a09565b82826190b78161aaeb565b935060ff16815181106190cc576190cc61a97e565b6020908102919091010152855151156191785760408051808201909152600b81527f2d2d7265666572656e63650000000000000000000000000000000000000000006020820152828261911e8161aaeb565b935060ff16815181106191335761913361a97e565b602002602001018190525061914c866000015184619a09565b82826191578161aaeb565b935060ff168151811061916c5761916c61a97e565b60200260200101819052505b8560800151156191e65760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b0000000000000000602082015282826191c18161aaeb565b935060ff16815181106191d6576191d661a97e565b602002602001018190525061924c565b841561924c5760408051808201909152601281527f2d2d726571756972655265666572656e636500000000000000000000000000006020820152828261922b8161aaeb565b935060ff16815181106192405761924061a97e565b60200260200101819052505b604086015151156192e85760408051808201909152600d81527f2d2d756e73616665416c6c6f7700000000000000000000000000000000000000602082015282826192968161aaeb565b935060ff16815181106192ab576192ab61a97e565b602002602001018190525085604001518282806192c79061aaeb565b935060ff16815181106192dc576192dc61a97e565b60200260200101819052505b8560600151156193525760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d6573000000000000000000000000602082015282826193318161aaeb565b935060ff16815181106193465761934661a97e565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561937057619370619edd565b6040519080825280602002602001820160405280156193a357816020015b606081526020019060019003908161938e5790505b50905060005b8260ff168160ff1610156193fc57838160ff16815181106193cc576193cc61a97e565b6020026020010151828260ff16815181106193e9576193e961a97e565b60209081029190910101526001016193a9565b50979650505050505050565b604080518082019091526000808252602082015281518351101561942d57508161521b565b815183516020850151600092916194439161b0c8565b61944d919061a126565b6020840151909150600190821461946e575082516020840151819020908220145b80156194895783518551869061948590839061a126565b9052505b50929392505050565b60008082600001516194b685600001518660200151866000015187602001516197c4565b6194c0919061b0c8565b90505b835160208501516194d4919061b0c8565b8111618d2257816194e48161b3f4565b925050826000015161951b8560200151836194ff919061a126565b865161950b919061a126565b83866000015187602001516197c4565b619525919061b0c8565b90506194c3565b6060600061953a8484619492565b61954590600161b0c8565b67ffffffffffffffff81111561955d5761955d619edd565b60405190808252806020026020018201604052801561959057816020015b606081526020019060019003908161957b5790505b50905060005b8151811015617612576195ac61794c8686618d03565b8282815181106195be576195be61a97e565b6020908102919091010152600101619596565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061961a577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310619646576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061966457662386f26fc10000830492506010015b6305f5e100831061967c576305f5e100830492506008015b612710831061969057612710830492506004015b606483106196a2576064830492506002015b600a831061521b5760010192915050565b6000808584116197ba576020841161976657600084156196fe5760016196da86602061a126565b6196e590600861b285565b6196f090600261b383565b6196fa919061a126565b1990505b835181168561970d898961b0c8565b619717919061a126565b805190935082165b818114619751578784116197395787945050505050617243565b836197438161b40e565b94505082845116905061971f565b61975b878561b0c8565b945050505050617243565b838320619773858861a126565b61977d908761b0c8565b91505b8582106197b8578482208082036197a55761979b868461b0c8565b9350505050617243565b6197b060018461a126565b925050619780565b505b5092949350505050565b600083818685116198cf576020851161987e57600085156198105760016197ec87602061a126565b6197f790600861b285565b61980290600261b383565b61980c919061a126565b1990505b845181166000876198218b8b61b0c8565b61982b919061a126565b855190915083165b828114619870578186106198585761984b8b8b61b0c8565b9650505050505050617243565b856198628161b3f4565b965050838651169050619833565b859650505050505050617243565b508383206000905b619890868961a126565b82116198cd578583208082036198ac5783945050505050617243565b6198b760018561b0c8565b93505081806198c59061b3f4565b925050619886565b505b6198d9878761b0c8565b979650505050505050565b6040805180820190915260008082526020820152600061991685600001518660200151866000015187602001516197c4565b602080870180519186019190915251909150619932908261a126565b835284516020860151619945919061b0c8565b81036199545760008552619986565b83518351619962919061b0c8565b8551869061997190839061a126565b9052508351619980908261b0c8565b60208601525b50909392505050565b602081106199c757815183526199a660208461b0c8565b92506199b360208361b0c8565b91506199c060208261a126565b905061998f565b60001981156199f65760016199dd83602061a126565b6199e99061010061b383565b6199f3919061a126565b90505b9151835183169219169190911790915250565b60606000619a178484615d16565b8051602080830151604051939450619a319390910161b425565b60405160208183030381529060405291505092915050565b610c9f8061b47e83390190565b610ec28061c11d83390190565b6040518060e00160405280606081526020016060815260200160608152602001600015158152602001600015158152602001600015158152602001619aa6619aab565b905290565b60405180610100016040528060001515815260200160001515815260200160608152602001600080191681526020016060815260200160608152602001600015158152602001619aa66040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b81811015619b5d5783516001600160a01b0316835260209384019390920191600101619b36565b509095945050505050565b60005b83811015619b83578181015183820152602001619b6b565b50506000910152565b60008151808452619ba4816020860160208601619b68565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015619cb4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015619c9a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352619c84848651619b8c565b6020958601959094509290920191600101619c4a565b509197505050602094850194929092019150600101619be0565b50929695505050505050565b600081518084526020840193506020830160005b82811015619d145781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101619cd4565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015619cb4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752619d8a6040880182619b8c565b9050602082015191508681036020880152619da58183619cc0565b965050506020938401939190910190600101619d46565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015619cb4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452619e1e858351619b8c565b94506020938401939190910190600101619de4565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015619cb4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152619eb46040870182619cc0565b9550506020938401939190910190600101619e5b565b6020815260006154576020830184619b8c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600181811c90821680619f2057607f821691505b602082108103617c27577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b601f821115619fa057806000526020600020601f840160051c81016020851015619f805750805b601f840160051c820191505b8181101561280f5760008155600101619f8c565b505050565b815167ffffffffffffffff811115619fbf57619fbf619edd565b619fd381619fcd8454619f0c565b84619f59565b6020601f82116001811461a0075760008315619fef5750848201515b600019600385901b1c1916600184901b17845561280f565b600084815260208120601f198516915b8281101561a037578785015182556020948501946001909201910161a017565b508482101561a0555786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b60006020828403121561a07657600080fd5b5051919050565b6001600160a01b0384168152826020820152606060408201526000617c0d6060830184619b8c565b8281526040602082015260006172436040830184619b8c565b6001600160a01b038516815283602082015260806040820152600061a0e66080830185619b8c565b905082606083015295945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561521b5761521b61a0f7565b60006020828403121561a14b57600080fd5b8151801515811461545757600080fd5b60006020828403121561a16d57600080fd5b81516001600160a01b038116811461545757600080fd5b6001600160a01b0381541682526001600160a01b03600182015416602083015260028101546040830152600060038201608060608501526000815461a1c881619f0c565b806080880152600182166000811461a1e7576001811461a2215761a255565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831660a089015260a082151560051b890101935061a255565b84600052602060002060005b8381101561a24c5781548a820160a0015260019091019060200161a22d565b890160a0019450505b50919695505050505050565b6001600160a01b038616815284602082015260a06040820152600061a28960a0830186619b8c565b846060840152828103608084015261a2a1818561a184565b98975050505050505050565b60008261a2e3577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6001600160a01b0383168152604060208201526000617243604083018461a184565b83815260606020820152600061a3236060830185619b8c565b82810360408401526163c4818561a184565b6001600160a01b03831681526040602082015260006172436040830184619b8c565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161a38f81601a850160208801619b68565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161a3cc81601c840160208801619b68565b01601c01949350505050565b6040516060810167ffffffffffffffff8111828210171561a3fb5761a3fb619edd565b60405290565b60008067ffffffffffffffff84111561a41c5761a41c619edd565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561a44b5761a44b619edd565b60405283815290508082840185101561a46357600080fd5b617612846020830185619b68565b600082601f83011261a48257600080fd5b6154578383516020850161a401565b60006020828403121561a4a357600080fd5b815167ffffffffffffffff81111561a4ba57600080fd5b6152178482850161a471565b6000835161a4d8818460208801619b68565b83519083019061a4ec818360208801619b68565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161a52d81601a850160208801619b68565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161a56a816033840160208801619b68565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b6001600160a01b03841681526001600160a01b0383166020820152606060408201526000617c0d6060830184619b8c565b60408152600b60408201527f464f554e4452595f4f555400000000000000000000000000000000000000000060608201526080602082015260006154576080830184619b8c565b60006020828403121561a62a57600080fd5b815167ffffffffffffffff81111561a64157600080fd5b8201601f8101841361a65257600080fd5b6152178482516020840161a401565b6000855161a673818460208a01619b68565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161a6ad816001840160208a01619b68565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161a6eb816002840160208901619b68565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161a72d816002840160208801619b68565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061a7786040830184619b8c565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161a7ef81601f850160208701619b68565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061a85c6040830184619b8c565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061a8ae6040830184619b8c565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161a925816014850160208701619b68565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061a96c6040830185619b8c565b82810360208401526154538185619b8c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161a9e5816001850160208701619b68565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161aa2b818460208701619b68565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161aade81604b850160208701619b68565b91909101604b0192915050565b600060ff821660ff810361ab015761ab0161a0f7565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161ab68816029850160208701619b68565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f504154480000000000000000000060608201526080602082015260006154576080830184619b8c565b60006020828403121561abce57600080fd5b815167ffffffffffffffff81111561abe557600080fd5b82016060818503121561abf757600080fd5b61abff61a3d8565b81518060030b811461ac1057600080fd5b8152602082015167ffffffffffffffff81111561ac2c57600080fd5b61ac388682850161a471565b602083015250604082015167ffffffffffffffff81111561ac5857600080fd5b61ac648682850161a471565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161acd0816021850160208701619b68565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161aebc816021850160208801619b68565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161aef981602e840160208801619b68565b01602e01949350505050565b6000825161af17818460208701619b68565b9190910192915050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161ab68816029850160208701619b68565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161afdd816022850160208701619b68565b9190910160220192915050565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161b02281600e850160208701619b68565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b8082018082111561521b5761521b61a0f7565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161b113816018850160208801619b68565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161b15081601c840160208801619b68565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161b256818460208701619b68565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b808202811582820484141761521b5761521b61a0f7565b6001815b600184111561b2d75780850481111561b2bb5761b2bb61a0f7565b600184161561b2c957908102905b60019390931c92800261b2a0565b935093915050565b60008261b2ee5750600161521b565b8161b2fb5750600061521b565b816001811461b311576002811461b31b5761b337565b600191505061521b565b60ff84111561b32c5761b32c61a0f7565b50506001821b61521b565b5060208310610133831016604e8410600b841016171561b35a575081810a61521b565b61b367600019848461b29c565b806000190482111561b37b5761b37b61a0f7565b029392505050565b6000615457838361b2df565b8181036000831280158383131683831282161715618d2257618d2261a0f7565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161b3e781601c850160208701619b68565b91909101601c0192915050565b6000600019820361b4075761b40761a0f7565b5060010190565b60008161b41d5761b41d61a0f7565b506000190190565b6000835161b437818460208801619b68565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161b471816001840160208801619b68565b0160010194935050505056fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212205f76808fb3dc6dacf4bd766b2d0bf9d6beb64856c952cec8e267368511bd936a64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610e9e806100246000396000f3fe60806040526004361061006e5760003560e01c8063c51316911161004b578063c5131691146100d5578063c9028a36146100f5578063e04d4f9714610115578063f05b6abf1461012857005b8063357fc5a214610077578063676cc054146100975780636ed70169146100c057005b3661007557005b005b34801561008357600080fd5b506100756100923660046106ec565b610148565b6100aa6100a5366004610728565b6101de565b6040516100b79190610823565b60405180910390f35b3480156100cc57600080fd5b50610075610222565b3480156100e157600080fd5b506100756100f03660046106ec565b610257565b34801561010157600080fd5b50610075610110366004610836565b610332565b610075610123366004610996565b61036e565b34801561013457600080fd5b50610075610143366004610a82565b6103b2565b6101506103e7565b61017273ffffffffffffffffffffffffffffffffffffffff831633838661042a565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101d96001600055565b505050565b6040516060907f3658b46bab672c7672b69c2f0feda706eabdb7d2231421c96e9049b2db5e7eee90600090a1506040805160208101909152600081525b9392505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b61025f6103e7565b600061026c600285610b6c565b9050806000036102a8576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102ca73ffffffffffffffffffffffffffffffffffffffff841633848461042a565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101d96001600055565b7f689a5a5cb55e795ffe4cd8b419cd3bb0a3373974c54d25f64e734d7388b93e9b3382604051610363929190610bf0565b60405180910390a150565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa33348585856040516103a5959493929190610ce2565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103a59493929190610d6c565b600260005403610423576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526104bf9085906104c5565b50505050565b60006104e773ffffffffffffffffffffffffffffffffffffffff841683610560565b9050805160001415801561050c57508080602001905181019061050a9190610e2f565b155b156101d9576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061021b83836000846000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105939190610e4c565b60006040518083038185875af1925050503d80600081146105d0576040519150601f19603f3d011682016040523d82523d6000602084013e6105d5565b606091505b50915091506105e58683836105ef565b9695505050505050565b606082610604576105ff8261067e565b61021b565b8151158015610628575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610677576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610557565b508061021b565b80511561068e5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106e757600080fd5b919050565b60008060006060848603121561070157600080fd5b83359250610711602085016106c3565b915061071f604085016106c3565b90509250925092565b6000806000838503604081121561073e57600080fd5b602081121561074c57600080fd5b50839250602084013567ffffffffffffffff81111561076a57600080fd5b8401601f8101861361077b57600080fd5b803567ffffffffffffffff81111561079257600080fd5b8660208284010111156107a457600080fd5b939660209190910195509293505050565b60005b838110156107d05781810151838201526020016107b8565b50506000910152565b600081518084526107f18160208601602086016107b5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061021b60208301846107d9565b60006020828403121561084857600080fd5b813567ffffffffffffffff81111561085f57600080fd5b82016080818503121561021b57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156108e7576108e7610871565b604052919050565b600082601f83011261090057600080fd5b813567ffffffffffffffff81111561091a5761091a610871565b61094b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016108a0565b81815284602083860101111561096057600080fd5b816020850160208301376000918101602001919091529392505050565b80151581146106c057600080fd5b80356106e78161097d565b6000806000606084860312156109ab57600080fd5b833567ffffffffffffffff8111156109c257600080fd5b6109ce868287016108ef565b9350506020840135915060408401356109e68161097d565b809150509250925092565b600067ffffffffffffffff821115610a0b57610a0b610871565b5060051b60200190565b600082601f830112610a2657600080fd5b8135610a39610a34826109f1565b6108a0565b8082825260208201915060208360051b860101925085831115610a5b57600080fd5b602085015b83811015610a78578035835260209283019201610a60565b5095945050505050565b600080600060608486031215610a9757600080fd5b833567ffffffffffffffff811115610aae57600080fd5b8401601f81018613610abf57600080fd5b8035610acd610a34826109f1565b8082825260208201915060208360051b850101925088831115610aef57600080fd5b602084015b83811015610b3157803567ffffffffffffffff811115610b1357600080fd5b610b228b6020838901016108ef565b84525060209283019201610af4565b509550505050602084013567ffffffffffffffff811115610b5157600080fd5b610b5d86828701610a15565b92505061071f6040850161098b565b600082610ba2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015273ffffffffffffffffffffffffffffffffffffffff610c2e836106c3565b16604082015273ffffffffffffffffffffffffffffffffffffffff610c55602084016106c3565b166060820152600080604084013590508060808401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610ca157600080fd5b830160208101903567ffffffffffffffff811115610cbe57600080fd5b803603821315610ccd57600080fd5b608060a08501526105e560c085018284610ba7565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610d1760a08301866107d9565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610d62578151865260209586019590910190600101610d44565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610dff577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610dea8583516107d9565b94506020938401939190910190600101610db0565b505050508281036040840152610e158186610d30565b915050610e26606083018415159052565b95945050505050565b600060208284031215610e4157600080fd5b815161021b8161097d565b60008251610e5e8184602087016107b5565b919091019291505056fea2646970667358221220dbbcdb2ae8ea201fd0567f815d9a6ce082b3a1b6ed3f6fce312e955f9aa11e1364736f6c634300081a00335a657461436f6e6e6563746f724e617469766555706772616465546573742e736f6ca2646970667358221220a05094aaa649e8210b7455fc04459549685990ea5c9c4f38ad41a4509d5f684764736f6c634300081a0033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061d0368061003c6000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c8063a217fddf11610104578063ccb0e3f2116100a2578063e20c9f7111610071578063e20c9f7114610357578063e63ab1e91461035f578063fa7626d414610386578063fe574f841461039357600080fd5b8063ccb0e3f214610337578063d509b16c1461033f578063dcf7d03714610347578063de1cb76c1461034f57600080fd5b8063b0464fdc116100de578063b0464fdc14610307578063b5508aa91461030f578063ba414fa614610317578063c19099721461032f57600080fd5b8063a217fddf146102d0578063a783c789146102d8578063af298bb1146102ff57600080fd5b8063493465581161017c578063828320141161014b578063828320141461026957806385226c811461027157806385f438c114610286578063916a17c6146102bb57600080fd5b8063493465581461023c5780634df42da11461024457806352ff59391461024c57806366d9a9a01461025457600080fd5b80632ade3880116101b85780632ade38801461020f5780633cba0107146102245780633e5e3c231461022c5780633f7286f41461023457600080fd5b8063070f2ad0146101df5780630a9254e4146101e95780631ed7831c146101f1575b600080fd5b6101e761039b565b005b6101e761059b565b6101f9610dec565b6040516102069190619b1c565b60405180910390f35b610217610e4e565b6040516102069190619bb8565b6101e7610f90565b6101f9611753565b6101f96117b3565b6101e7611813565b6101e7611e57565b6101e7611fc7565b61025c612816565b6040516102069190619d1e565b6101e7612998565b610279612bf8565b6040516102069190619dbc565b6102ad7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b604051908152602001610206565b6102c3612cc8565b6040516102069190619e33565b6102ad600081565b6102ad7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b6101e7612dc3565b6102c361320f565b61027961330a565b61031f6133da565b6040519015158152602001610206565b6101e76134ae565b6101e761371e565b6101e7614244565b6101e7614282565b6101e761492c565b6101f9614f89565b6102ad7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b601f5461031f9060ff1681565b6101e7614fe9565b6026546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b15801561040d57600080fd5b505af1158015610421573d6000803e3d6000fd5b5050602654604080516001600160a01b039092166024830152600060448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506104ed9190600401619eca565b600060405180830381600087803b15801561050757600080fd5b505af115801561051b573d6000803e3d6000fd5b5050602254602480546040517f950837aa0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529216935063950837aa9250015b600060405180830381600087803b15801561058157600080fd5b505af1158015610595573d6000803e3d6000fd5b50505050565b602480547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602580548216611234179055602680548216615678179055602780549091166198761790556040516105f990619a49565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f08015801561067d573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600e81527f4761746577617945564d2e736f6c00000000000000000000000000000000000060208201526026546024805493519186169082015260448101939093529216606482015260009161076f916084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc0c53b8b00000000000000000000000000000000000000000000000000000000179052615202565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0384811682029290921792839055604080518082018252601081527f4552433230437573746f64792e736f6c000000000000000000000000000000006020820152602654602480549351949096048516958401959095529383166044830152909116606482015291925061081591608401610712565b602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383811691909117909155604080518082018252601781527f5a657461436f6e6e6563746f724e61746976652e736f6c0000000000000000006020820152601f5460235460265460248054955161010090940487169084015290851660448301528416606482015291909216608482015291925061091a9160a40160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff8c8765e00000000000000000000000000000000000000000000000000000000179052615202565b602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03831617905560405190915061095c90619a56565b604051809103906000f080158015610978573d6000803e3d6000fd5b50602080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556026546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b158015610a2457600080fd5b505af1158015610a38573d6000803e3d6000fd5b5050602480546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d93506306447d56925001600060405180830381600087803b158015610aad57600080fd5b505af1158015610ac1573d6000803e3d6000fd5b5050601f546021546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261010090920416925063ae7a3a6f9150602401600060405180830381600087803b158015610b2c57600080fd5b505af1158015610b40573d6000803e3d6000fd5b5050601f546022546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526101009092041692506310188aef9150602401600060405180830381600087803b158015610bab57600080fd5b505af1158015610bbf573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610c2157600080fd5b505af1158015610c35573d6000803e3d6000fd5b50506023546022546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152624c4b406024820152911692506340c10f199150604401600060405180830381600087803b158015610ca457600080fd5b505af1158015610cb8573d6000803e3d6000fd5b50506026546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610d3c57600080fd5b505af1158015610d50573d6000803e3d6000fd5b5050604080516080810182526024546001600160a01b039081168252602354811660208084019182526001848601908152855191820190955260008152606084018190528351602880549185167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316178155925160298054919095169116179092559251602a55909350909150602b906105959082619fa5565b60606016805480602002602001604051908101604052809291908181526020018280548015610e4457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610e26575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015610f8757600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610f70578382906000526020600020018054610ee390619f0c565b80601f0160208091040260200160405190810160405280929190818152602001828054610f0f90619f0c565b8015610f5c5780601f10610f3157610100808354040283529160200191610f5c565b820191906000526020600020905b815481529060010190602001808311610f3f57829003601f168201915b505050505081526020019060010190610ec4565b505050508152505081526020019060010190610e72565b50505050905090565b602354602554604051620186a0602482018190526001600160a01b039384166044830152929091166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a20000000000000000000000000000000000000000000000000000000017905260235460255491516370a0823160e01b81526001600160a01b0392831660048201529293506000929116906370a0823190602401602060405180830381865afa15801561106e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611092919061a064565b905061109f816000615221565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156110f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611114919061a064565b601f54604080516001600160a01b036101009093048316602482015260448082018a905282518083039091018152606490910182526020810180517fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911617905260235491517ff30c7ba300000000000000000000000000000000000000000000000000000000815293945092737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba3926111ef92911690600090869060040161a07d565b600060405180830381600087803b15801561120957600080fd5b505af115801561121d573d6000803e3d6000fd5b50506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156112af57600080fd5b505af11580156112c3573d6000803e3d6000fd5b5050601f54602354602554604080516101009094046001600160a01b039081168552602085018d9052928316908401521660608201527f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609250608001905060405180910390a16022546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156113b757600080fd5b505af11580156113cb573d6000803e3d6000fd5b50506020546040516001600160a01b0390911692507f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d9150611410908990889061a0a5565b60405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561147157600080fd5b505af1158015611485573d6000803e3d6000fd5b50506022546020546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef93506114dd92909116908a9089908b9060040161a0be565b600060405180830381600087803b1580156114f757600080fd5b505af115801561150b573d6000803e3d6000fd5b50506023546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a08231906024015b602060405180830381865afa15801561155f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611583919061a064565b905061158f8188615221565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156115e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611604919061a064565b9050611619816116148a8761a126565b615221565b602354601f546020546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526101009092046001600160a01b0390811660048401529081166024830152600092169063dd62ed3e90604401602060405180830381865afa158015611691573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b5919061a064565b90506116c2816000615221565b602354601f546040516370a0823160e01b81526101009091046001600160a01b03908116600483015260009216906370a0823190602401602060405180830381865afa158015611716573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173a919061a064565b9050611747816000615221565b50505050505050505050565b60606018805480602002602001604051908101604052809291908181526020018280548015610e44576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610e26575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610e44576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610e26575050505050905090565b6040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6ed701690000000000000000000000000000000000000000000000000000000017905260235460255493516370a0823160e01b8152620186a0946000949385936001600160a01b03908116936370a08231936118b593921691016001600160a01b0391909116815260200190565b602060405180830381865afa1580156118d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f6919061a064565b9050611903816000615221565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611954573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611978919061a064565b601f54604080516001600160a01b036101009093048316602482015260448082018a905282518083039091018152606490910182526020810180517fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911617905260235491517ff30c7ba300000000000000000000000000000000000000000000000000000000815293945092737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba392611a5392911690600090869060040161a07d565b600060405180830381600087803b158015611a6d57600080fd5b505af1158015611a81573d6000803e3d6000fd5b50506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015611b1357600080fd5b505af1158015611b27573d6000803e3d6000fd5b5050601f546040516101009091046001600160a01b031681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09250602001905060405180910390a16022546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611bfe57600080fd5b505af1158015611c12573d6000803e3d6000fd5b50506020546040516001600160a01b0390911692507f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d9150611c57908990889061a0a5565b60405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611cb857600080fd5b505af1158015611ccc573d6000803e3d6000fd5b50506022546020546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350611d2492909116908a9089908b9060040161a0be565b600060405180830381600087803b158015611d3e57600080fd5b505af1158015611d52573d6000803e3d6000fd5b50506023546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611da5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc9919061a064565b9050611dd6816000615221565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611e27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4b919061a064565b90506116198185615221565b602480546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d569101600060405180830381600087803b158015611ec857600080fd5b505af1158015611edc573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015611f6557600080fd5b505af1158015611f79573d6000803e3d6000fd5b50506022546040517f950837aa000000000000000000000000000000000000000000000000000000008152600060048201526001600160a01b03909116925063950837aa9150602401610567565b6022546040517f91d148540000000000000000000000000000000000000000000000000000000081527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4600482015261432160248201819052916000916001600160a01b03909116906391d1485490604401602060405180830381865afa158015612056573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207a919061a139565b9050612085816152a1565b6022546040517f91d148540000000000000000000000000000000000000000000000000000000081527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60048201526001600160a01b03848116602483015260009216906391d1485490604401602060405180830381865afa15801561210f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612133919061a139565b905061213e816152a1565b6022546026546040517f91d148540000000000000000000000000000000000000000000000000000000081527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460048201526001600160a01b03918216602482015260009291909116906391d1485490604401602060405180830381865afa1580156121ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f2919061a139565b90506121fd8161531b565b6022546026546040517f91d148540000000000000000000000000000000000000000000000000000000081527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60048201526001600160a01b03918216602482015260009291909116906391d1485490604401602060405180830381865afa15801561228d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122b1919061a139565b90506122bc8161531b565b602480546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d569101600060405180830381600087803b15801561232d57600080fd5b505af1158015612341573d6000803e3d6000fd5b50506022546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156123d357600080fd5b505af11580156123e7573d6000803e3d6000fd5b5050602654604080516001600160a01b03928316815291891660208301527f33770ab682353c17917ad3e667f05905fc8dda00671ef1ed33bef9bc8db0323e935001905060405180910390a16022546040517f950837aa0000000000000000000000000000000000000000000000000000000081526001600160a01b0387811660048301529091169063950837aa90602401600060405180830381600087803b15801561249357600080fd5b505af11580156124a7573d6000803e3d6000fd5b5050505061252b85602260009054906101000a90046001600160a01b03166001600160a01b0316635b1125916040518163ffffffff1660e01b8152600401602060405180830381865afa158015612502573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612526919061a15b565b61536d565b6022546040517f91d148540000000000000000000000000000000000000000000000000000000081527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460048201526001600160a01b038781166024830152909116906391d1485490604401602060405180830381865afa1580156125b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d8919061a139565b93506125e38461531b565b6022546040517f91d148540000000000000000000000000000000000000000000000000000000081527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60048201526001600160a01b038781166024830152909116906391d1485490604401602060405180830381865afa15801561266c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612690919061a139565b925061269b8361531b565b6022546026546040517f91d148540000000000000000000000000000000000000000000000000000000081527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460048201526001600160a01b0391821660248201529116906391d1485490604401602060405180830381865afa158015612726573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061274a919061a139565b9150612755826152a1565b6022546026546040517f91d148540000000000000000000000000000000000000000000000000000000081527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60048201526001600160a01b0391821660248201529116906391d1485490604401602060405180830381865afa1580156127e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612804919061a139565b905061280f816152a1565b5050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610f87578382906000526020600020906002020160405180604001604052908160008201805461286d90619f0c565b80601f016020809104026020016040519081016040528092919081815260200182805461289990619f0c565b80156128e65780601f106128bb576101008083540402835291602001916128e6565b820191906000526020600020905b8154815290600101906020018083116128c957829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561298057602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161292d5790505b5050505050815250508152602001906001019061283a565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f19018152908290526024805463ca669fa760e01b84526001600160a01b03166004840152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa79101600060405180830381600087803b158015612a3557600080fd5b505af1158015612a49573d6000803e3d6000fd5b505060248054604080516001600160a01b03909216928201929092527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448083019190915282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f0000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250612b389190600401619eca565b600060405180830381600087803b158015612b5257600080fd5b505af1158015612b66573d6000803e3d6000fd5b50506022546020546040517f6f8728ad0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450636f8728ad9350612bc1929091169087908690889060289060040161a261565b600060405180830381600087803b158015612bdb57600080fd5b505af1158015612bef573d6000803e3d6000fd5b50505050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610f87578382906000526020600020018054612c3b90619f0c565b80601f0160208091040260200160405190810160405280929190818152602001828054612c6790619f0c565b8015612cb45780601f10612c8957610100808354040283529160200191612cb4565b820191906000526020600020905b815481529060010190602001808311612c9757829003601f168201915b505050505081526020019060010190612c1c565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015610f875760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015612dab57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411612d585790505b50505050508152505081526020019060010190612cec565b602280546040805160608101909152828152612e0d926001600160a01b039092169161cfdf60208301396040805160208101909152600081526024546001600160a01b03166153ce565b6022546023546025546040516370a0823160e01b81526001600160a01b03918216600482015292811692620186a09260009283929116906370a0823190602401602060405180830381865afa158015612e6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e8e919061a064565b9050612e9b816000615221565b6025546040516001600160a01b0390911660248201526044810184905260009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260235490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391612f7b916001600160a01b039190911690600090869060040161a07d565b600060405180830381600087803b158015612f9557600080fd5b505af1158015612fa9573d6000803e3d6000fd5b50506040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b0388166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561303757600080fd5b505af115801561304b573d6000803e3d6000fd5b50506025546040518781526001600160a01b0390911692507f3e35ef4326151011878c9e8e968a0f3913fe98ca68f72a1e0c2e9be13ffb3ee9915060200160405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156130ea57600080fd5b505af11580156130fe573d6000803e3d6000fd5b50506025546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810188905260448101879052908816925063106e62909150606401600060405180830381600087803b15801561317057600080fd5b505af1158015613184573d6000803e3d6000fd5b50506023546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156131d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131fb919061a064565b90506132078186615221565b505050505050565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015610f875760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156132f257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161329f5790505b50505050508152505081526020019060010190613233565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610f8757838290600052602060002001805461334d90619f0c565b80601f016020809104026020016040519081016040528092919081815260200182805461337990619f0c565b80156133c65780601f1061339b576101008083540402835291602001916133c6565b820191906000526020600020905b8154815290600101906020018083116133a957829003601f168201915b50505050508152602001906001019061332e565b60085460009060ff16156133f2575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015613483573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134a7919061a064565b1415905090565b602354602554604051620186a0602482018190526001600160a01b039384166044830152929091166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a20000000000000000000000000000000000000000000000000000000017905260248054915163ca669fa760e01b81526001600160a01b039092166004830152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa79101600060405180830381600087803b15801561359557600080fd5b505af11580156135a9573d6000803e3d6000fd5b505060248054604080516001600160a01b03909216928201929092527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448083019190915282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f0000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506136989190600401619eca565b600060405180830381600087803b1580156136b257600080fd5b505af11580156136c6573d6000803e3d6000fd5b50506022546020546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350612bc1929091169087908690889060040161a0be565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152620186a090600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561377f57600080fd5b505af1158015613793573d6000803e3d6000fd5b5050602754604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061387e9190600401619eca565b600060405180830381600087803b15801561389857600080fd5b505af11580156138ac573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561390057600080fd5b505af1158015613914573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561397157600080fd5b505af1158015613985573d6000803e3d6000fd5b5050602754604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250613a709190600401619eca565b600060405180830381600087803b158015613a8a57600080fd5b505af1158015613a9e573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613af257600080fd5b505af1158015613b06573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015613b6357600080fd5b505af1158015613b77573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613bcb57600080fd5b505af1158015613bdf573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd93c0665000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015613c6857600080fd5b505af1158015613c7c573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015613cd957600080fd5b505af1158015613ced573d6000803e3d6000fd5b50506022546025546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101879052604481018690529116925063106e62909150606401600060405180830381600087803b158015613d6157600080fd5b505af1158015613d75573d6000803e3d6000fd5b50506024805460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063ca669fa7925001600060405180830381600087803b158015613dd157600080fd5b505af1158015613de5573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613e3957600080fd5b505af1158015613e4d573d6000803e3d6000fd5b50506023546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a08231906024015b602060405180830381865afa158015613ea1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ec5919061a064565b9050613ed2816000615221565b6025546040516001600160a01b0390911660248201526044810184905260009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260235490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391613fb2916001600160a01b039190911690600090869060040161a07d565b600060405180830381600087803b158015613fcc57600080fd5b505af1158015613fe0573d6000803e3d6000fd5b50506022546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561407257600080fd5b505af1158015614086573d6000803e3d6000fd5b50506025546040518781526001600160a01b0390911692507f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5915060200160405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561412557600080fd5b505af1158015614139573d6000803e3d6000fd5b50506022546025546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101899052604481018890529116925063106e62909150606401600060405180830381600087803b1580156141ad57600080fd5b505af11580156141c1573d6000803e3d6000fd5b50506023546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015614214573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614238919061a064565b905061280f8186615221565b6023546025546040516370a0823160e01b81526001600160a01b039182166004820152620186a09260009283929116906370a0823190602401613e84565b602354602554604051620186a0602482018190526001600160a01b039384166044830152929091166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc51316910000000000000000000000000000000000000000000000000000000017905260235460255491516370a0823160e01b81526001600160a01b0392831660048201529293506000929116906370a0823190602401602060405180830381865afa158015614360573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614384919061a064565b9050614391816000615221565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156143e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614406919061a064565b601f54604080516001600160a01b036101009093048316602482015260448082018a905282518083039091018152606490910182526020810180517fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911617905260235491517ff30c7ba300000000000000000000000000000000000000000000000000000000815293945092737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba3926144e192911690600090869060040161a07d565b600060405180830381600087803b1580156144fb57600080fd5b505af115801561450f573d6000803e3d6000fd5b50506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156145a157600080fd5b505af11580156145b5573d6000803e3d6000fd5b5050601f547f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60925061010090046001600160a01b031690506145f860028961a2ad565b602354602554604080516001600160a01b03958616815260208101949094529184168383015292909216606082015290519081900360800190a16022546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156146c057600080fd5b505af11580156146d4573d6000803e3d6000fd5b50506020546040516001600160a01b0390911692507f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d9150614719908990889061a0a5565b60405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561477a57600080fd5b505af115801561478e573d6000803e3d6000fd5b50506022546020546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef93506147e692909116908a9089908b9060040161a0be565b600060405180830381600087803b15801561480057600080fd5b505af1158015614814573d6000803e3d6000fd5b50506023546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015614867573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061488b919061a064565b905061489c8161161460028a61a2ad565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156148ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614911919061a064565b90506116198161492260028b61a2ad565b611614908761a126565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f19018152908290526023546020546370a0823160e01b84526001600160a01b0390811660048501529193506000929116906370a0823190602401602060405180830381865afa1580156149c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906149e6919061a064565b90506149f3816000615221565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015614a44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a68919061a064565b601f54604080516001600160a01b036101009093048316602482015260448082018a905282518083039091018152606490910182526020810180517fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911617905260235491517ff30c7ba300000000000000000000000000000000000000000000000000000000815293945092737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba392614b4392911690600090869060040161a07d565b600060405180830381600087803b158015614b5d57600080fd5b505af1158015614b71573d6000803e3d6000fd5b50506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015614c0357600080fd5b505af1158015614c17573d6000803e3d6000fd5b505050507f689a5a5cb55e795ffe4cd8b419cd3bb0a3373974c54d25f64e734d7388b93e9b601f60019054906101000a90046001600160a01b03166028604051614c6292919061a2e8565b60405180910390a1601f546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015614cfc57600080fd5b505af1158015614d10573d6000803e3d6000fd5b50506023546020546040516001600160a01b039283169450911691507fde7603a6ed5d07c9f43597ccfe9043d15b66d3284f0de321f5cdf56329e6e03590614d5e908a90899060289061a30a565b60405180910390a36022546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015614df457600080fd5b505af1158015614e08573d6000803e3d6000fd5b50506020546040516001600160a01b0390911692507f5272d2fee39bff41b2e763562526315906046373ce08a7bacf76c3080d731ff09150614e50908990889060289061a30a565b60405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614eb157600080fd5b505af1158015614ec5573d6000803e3d6000fd5b50506022546020546040517f6f8728ad0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450636f8728ad9350614f2092909116908a9089908b9060289060040161a261565b600060405180830381600087803b158015614f3a57600080fd5b505af1158015614f4e573d6000803e3d6000fd5b50506023546020546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401611542565b60606015805480602002602001604051908101604052809291908181526020018280548015610e44576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610e26575050505050905090565b6024805460405163ca669fa760e01b81526001600160a01b039091166004820152620186a091600091737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa79101600060405180830381600087803b15801561504957600080fd5b505af115801561505d573d6000803e3d6000fd5b505060248054604080516001600160a01b03909216928201929092527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448083019190915282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f0000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061514c9190600401619eca565b600060405180830381600087803b15801561516657600080fd5b505af115801561517a573d6000803e3d6000fd5b50506022546025546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101879052604481018690529116925063106e62909150606401600060405180830381600087803b1580156151ee57600080fd5b505af1158015613207573d6000803e3d6000fd5b600061520c619a63565b6152178484836153e3565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c54906044015b60006040518083038186803b15801561528d57600080fd5b505afa158015613207573d6000803e3d6000fd5b6040517fa59828850000000000000000000000000000000000000000000000000000000081528115156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063a5982885906024015b60006040518083038186803b15801561530757600080fd5b505afa15801561280f573d6000803e3d6000fd5b6040517f0c9fd5810000000000000000000000000000000000000000000000000000000081528115156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90630c9fd581906024016152ef565b6040517f515361f60000000000000000000000000000000000000000000000000000000081526001600160a01b03808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f690604401615275565b6153d6619a63565b61280f858585848661545e565b6000806153f0858461555e565b90506154536040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f7879000000815250828660405160200161543e92919061a335565b6040516020818303038152906040528561556a565b9150505b9392505050565b6040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201528190737109709ecfa91a80626ff3989d68f67f5b1dd12d9081906306447d5690602401600060405180830381600087803b1580156154d057600080fd5b505af19250505080156154e1575060015b6154f6576154f187878787615598565b612bef565b61550287878787615598565b806001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561553d57600080fd5b505af1158015615551573d6000803e3d6000fd5b5050505050505050505050565b600061545783836155b1565b60c0810151516000901561558e5761558784848460c001516155cc565b9050615457565b6155878484615772565b60006155a4848361585d565b905061280f858285615869565b60006155bd8383615c33565b6154578383602001518461556a565b6000806155d7615c43565b905060006155e58683615d16565b905060006155fc82606001518360200151856161bc565b9050600061560c838389896163ce565b905060006156198261724b565b602081015181519192509060030b1561568c5789826040015160405160200161564392919061a357565b60408051601f19818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261568391600401619eca565b60405180910390fd5b60006156cf6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a20000000000000000000000081525083600161741a565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90615722908490600401619eca565b602060405180830381865afa15801561573f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615763919061a15b565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc925906157c7908790600401619eca565b600060405180830381865afa1580156157e4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261580c919081019061a491565b9050600061583a828560405160200161582692919061a4c6565b60405160208183030381529060405261761a565b90506001600160a01b03811661521757848460405160200161564392919061a4f5565b60006155bd838361762d565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201527fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61036024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90600090829063667f9d7090604401602060405180830381865afa158015615905573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615929919061a064565b905080615ad057600061593b86617639565b604080518082018252600581527f352e302e30000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506159c6905b60408051808201825260008082526020918201528151808301909252845182528085019082015290617731565b806159d2575060008451115b15615a55576040517f4f1ef2860000000000000000000000000000000000000000000000000000000081526001600160a01b03871690634f1ef28690615a1e908890889060040161a335565b600060405180830381600087803b158015615a3857600080fd5b505af1158015615a4c573d6000803e3d6000fd5b50505050615aca565b6040517f3659cfe60000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152871690633659cfe690602401600060405180830381600087803b158015615ab157600080fd5b505af1158015615ac5573d6000803e3d6000fd5b505050505b5061280f565b806000615adc82617639565b604080518082018252600581527f352e302e3000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615b3e90615999565b80615b4a575060008551115b15615bcf576040517f9623609d0000000000000000000000000000000000000000000000000000000081526001600160a01b03831690639623609d90615b98908a908a908a9060040161a5a0565b600060405180830381600087803b158015615bb257600080fd5b505af1158015615bc6573d6000803e3d6000fd5b50505050612bef565b6040517f99a88ec40000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015287811660248301528316906399a88ec490604401600060405180830381600087803b15801561553d57600080fd5b615c3f82826000617745565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90615cca90849060040161a5d1565b600060405180830381865afa158015615ce7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615d0f919081019061a618565b9250505090565b615d486040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050615d936040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b615d9c85617848565b60208201526000615dac86617c2d565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015615dee573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615e16919081019061a618565b86838560200151604051602001615e30949392919061a661565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190615e88908590600401619eca565b600060405180830381865afa158015615ea5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615ecd919081019061a618565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690615f1590849060040161a765565b602060405180830381865afa158015615f32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615f56919061a139565b615f6b5781604051602001615643919061a7b7565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890615fb090849060040161a849565b600060405180830381865afa158015615fcd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615ff5919081019061a618565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f69061603c90849060040161a89b565b602060405180830381865afa158015616059573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061607d919061a139565b15616112576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906160c790849060040161a89b565b600060405180830381865afa1580156160e4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261610c919081019061a618565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001616137919061a8ed565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161616392919061a959565b600060405180830381865afa158015616180573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526161a8919081019061a618565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816161d85790505090506040518060400160405280600481526020017f6772657000000000000000000000000000000000000000000000000000000000815250816000815181106162385761623861a97e565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061628c5761628c61a97e565b6020026020010181905250846040516020016162a8919061a9ad565b604051602081830303815290604052816002815181106162ca576162ca61a97e565b6020026020010181905250826040516020016162e6919061aa19565b604051602081830303815290604052816003815181106163085761630861a97e565b6020026020010181905250600061631e8261724b565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506163af9060408051808201825260008082526020918201528151808301909252845182528085019082015290617eb0565b6163c45785604051602001615643919061aa5a565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d901561641e565b511590565b616592578260200151156164da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401615683565b8260c0015115616592576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401615683565b6040805160ff8082526120008201909252600091816020015b60608152602001906001900390816165ab57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806166069061aaeb565b935060ff168151811061661b5761661b61a97e565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e370000000000000000000000000000000000000081525060405160200161666c919061ab0a565b6040516020818303038152906040528282806166879061aaeb565b935060ff168151811061669c5761669c61a97e565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806166e99061aaeb565b935060ff16815181106166fe576166fe61a97e565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d6500000000000000000000000000000000000081525082828061674b9061aaeb565b935060ff16815181106167605761676061a97e565b6020026020010181905250876020015182828061677c9061aaeb565b935060ff16815181106167915761679161a97e565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806167de9061aaeb565b935060ff16815181106167f3576167f361a97e565b60209081029190910101528751828261680b8161aaeb565b935060ff16815181106168205761682061a97e565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e4964000000000000000000000000000000000000000000000081525082828061686d9061aaeb565b935060ff16815181106168825761688261a97e565b602002602001018190525061689646617f11565b82826168a18161aaeb565b935060ff16815181106168b6576168b661a97e565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c6500000000000000000000000000000000008152508282806169039061aaeb565b935060ff16815181106169185761691861a97e565b6020026020010181905250868282806169309061aaeb565b935060ff16815181106169455761694561a97e565b6020908102919091010152855115616a6c5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826169968161aaeb565b935060ff16815181106169ab576169ab61a97e565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d906169fb908990600401619eca565b600060405180830381865afa158015616a18573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616a40919081019061a618565b8282616a4b8161aaeb565b935060ff1681518110616a6057616a6061a97e565b60200260200101819052505b846020015115616b3c5760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282616ab58161aaeb565b935060ff1681518110616aca57616aca61a97e565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280616b179061aaeb565b935060ff1681518110616b2c57616b2c61a97e565b6020026020010181905250616d03565b616b746164198660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b616c075760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282616bb78161aaeb565b935060ff1681518110616bcc57616bcc61a97e565b60200260200101819052508460a00151604051602001616bec919061a9ad565b604051602081830303815290604052828280616b179061aaeb565b8460c00151158015616c4a575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152616c4890511590565b155b15616d035760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282616c8e8161aaeb565b935060ff1681518110616ca357616ca361a97e565b6020026020010181905250616cb788617fb1565b604051602001616cc7919061a9ad565b604051602081830303815290604052828280616ce29061aaeb565b935060ff1681518110616cf757616cf761a97e565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152616d3790511590565b616dcc5760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282616d7a8161aaeb565b935060ff1681518110616d8f57616d8f61a97e565b60200260200101819052508460400151828280616dab9061aaeb565b935060ff1681518110616dc057616dc061a97e565b60200260200101819052505b606085015115616eed5760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282616e158161aaeb565b935060ff1681518110616e2a57616e2a61a97e565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015616e99573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616ec1919081019061a618565b8282616ecc8161aaeb565b935060ff1681518110616ee157616ee161a97e565b60200260200101819052505b60e08501515115616f945760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282616f378161aaeb565b935060ff1681518110616f4c57616f4c61a97e565b6020026020010181905250616f688560e0015160000151617f11565b8282616f738161aaeb565b935060ff1681518110616f8857616f8861a97e565b60200260200101819052505b60e0850151602001511561703e5760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282616fe18161aaeb565b935060ff1681518110616ff657616ff661a97e565b60200260200101819052506170128560e0015160200151617f11565b828261701d8161aaeb565b935060ff16815181106170325761703261a97e565b60200260200101819052505b60e085015160400151156170e85760408051808201909152600e81527f2d2d6d61784665655065724761730000000000000000000000000000000000006020820152828261708b8161aaeb565b935060ff16815181106170a0576170a061a97e565b60200260200101819052506170bc8560e0015160400151617f11565b82826170c78161aaeb565b935060ff16815181106170dc576170dc61a97e565b60200260200101819052505b60e085015160600151156171925760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826171358161aaeb565b935060ff168151811061714a5761714a61a97e565b60200260200101819052506171668560e0015160600151617f11565b82826171718161aaeb565b935060ff16815181106171865761718661a97e565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156171b0576171b0619edd565b6040519080825280602002602001820160405280156171e357816020015b60608152602001906001900390816171ce5790505b50905060005b8260ff168160ff16101561723c57838160ff168151811061720c5761720c61a97e565b6020026020010151828260ff16815181106172295761722961a97e565b60209081029190910101526001016171e9565b5093505050505b949350505050565b6172726040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916172f89186910161ab75565b600060405180830381865afa158015617315573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261733d919081019061a618565b9050600061734b8683618aa0565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161737b9190619dbc565b6000604051808303816000875af115801561739a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526173c2919081019061abbc565b805190915060030b158015906173db5750602081015151155b80156173ea5750604081015151155b156163c457816000815181106174025761740261a97e565b6020026020010151604051602001615643919061ac72565b6060600061744f8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506174869082905b90618bf5565b156175e3576000617503826174fd846174f76174c98a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90618c1c565b90618c7e565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150617567908290618bf5565b156175d157604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526175ce905b8290618d03565b90505b6175da81618d29565b92505050615457565b82156175fc57848460405160200161564392919061ae5e565b5050604080516020810190915260008152615457565b509392505050565b6000808251602084016000f09392505050565b615c3f82826001617745565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fad3cb1cc00000000000000000000000000000000000000000000000000000000179052905160609160009182916001600160a01b038616916176ae919061af05565b600060405180830381855afa9150503d80600081146176e9576040519150601f19603f3d011682016040523d82523d6000602084013e6176ee565b606091505b5091509150818015617701575060208151115b1561771a5780806020019051810190617243919061a618565b505060408051602081019091526000815292915050565b600061773d8383618d92565b159392505050565b8160a001511561775457505050565b6000617761848484618e6d565b9050600061776e8261724b565b602081015181519192509060030b15801561780a5750604080518082018252600781527f53554343455353000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261780a90604080518082018252600080825260209182015281518083019092528451825280850190820152617480565b1561781757505050505050565b60408201515115617837578160400151604051602001615643919061af21565b80604051602001615643919061af7f565b6060600061787d8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506178e2905b8290617eb0565b1561795157604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526154579061794c908390619408565b618d29565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526179b3905b8290619492565b600103617a8057604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617a19906175c7565b50604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526154579061794c905b8390618d03565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617adf906178db565b15617c1657604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290617b4790839061952c565b905060008160018351617b5a919061a126565b81518110617b6a57617b6a61a97e565b60200260200101519050617c0d61794c617be06040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290619408565b95945050505050565b82604051602001615643919061afea565b50919050565b60606000617c628360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150617cc4906178db565b15617cd25761545781618d29565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617d31906179ac565b600103617d9b57604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526154579061794c90617a79565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617dfa906178db565b15617c1657604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290617e6290839061952c565b9050600181511115617e9e578060028251617e7d919061a126565b81518110617e8d57617e8d61a97e565b602002602001015192505050919050565b5082604051602001615643919061afea565b805182516000911115617ec55750600061521b565b81518351602085015160009291617edb9161b0c8565b617ee5919061a126565b905082602001518103617efc57600191505061521b565b82516020840151819020912014905092915050565b60606000617f1e836195d1565b600101905060008167ffffffffffffffff811115617f3e57617f3e619edd565b6040519080825280601f01601f191660200182016040528015617f68576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084617f7257509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e534544000000000000000000000000000000000000000000008184019081528551808701875283815284019290925284518086019095525184529083015260609161803d905b8290617731565b1561807d57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e73650000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526180dc90618036565b1561811c57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d495400000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261817b90618036565b156181bb57505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261821a90618036565b8061827f5750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261827f90618036565b156182bf57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261831e90618036565b806183835750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261838390618036565b156183c357505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261842290618036565b806184875750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261848790618036565b156184c757505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261852690618036565b8061858b5750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261858b90618036565b156185cb57505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261862a90618036565b1561866a57505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526186c990618036565b1561870957505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261876890618036565b156187a857505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261880790618036565b1561884757505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e3000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526188a690618036565b156188e657505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261894590618036565b806189aa5750604080518082018252601181527f4147504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526189aa90618036565b156189ea57505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e3100000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618a4990618036565b15618a8957505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151615643929060200161b0db565b60608060005b8451811015618b2b5781858281518110618ac257618ac261a97e565b6020026020010151604051602001618adb92919061a4c6565b604051602081830303815290604052915060018551618afa919061a126565b8114618b235781604051602001618b11919061b244565b60405160208183030381529060405291505b600101618aa6565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081618b445790505090508381600081518110618b6f57618b6f61a97e565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110618bc357618bc361a97e565b60200260200101819052508181600281518110618be257618be261a97e565b6020908102919091010152949350505050565b6020808301518351835192840151600093618c1392918491906196b3565b14159392505050565b60408051808201909152600080825260208201526000618c4e84600001518560200151856000015186602001516197c4565b9050836020015181618c60919061a126565b84518590618c6f90839061a126565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015618ca357508161521b565b6020808301519084015160019114618cca5750815160208481015190840151829020919020145b8015618cfb57825184518590618ce190839061a126565b9052508251602085018051618cf790839061b0c8565b9052505b509192915050565b6040805180820190915260008082526020820152618d228383836198e4565b5092915050565b60606000826000015167ffffffffffffffff811115618d4a57618d4a619edd565b6040519080825280601f01601f191660200182016040528015618d74576020820181803683370190505b5090506000602082019050618d22818560200151866000015161998f565b8151815160009190811115618da5575081515b6020808501519084015160005b83811015618e5e5782518251808214618e2e576000196020871015618e0d57600184618ddf89602061a126565b618de9919061b0c8565b618df490600861b285565b618dff90600261b383565b618e09919061a126565b1990505b8181168382168181039114618e2b57975061521b9650505050505050565b50505b618e3960208661b0c8565b9450618e4660208561b0c8565b93505050602081618e57919061b0c8565b9050618db2565b50845186516163c4919061b38f565b60606000618e79615c43565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081618e9657905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280618ef19061aaeb565b935060ff1681518110618f0657618f0661a97e565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001618f57919061b3af565b604051602081830303815290604052828280618f729061aaeb565b935060ff1681518110618f8757618f8761a97e565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280618fd49061aaeb565b935060ff1681518110618fe957618fe961a97e565b602002602001018190525082604051602001619005919061aa19565b6040516020818303038152906040528282806190209061aaeb565b935060ff16815181106190355761903561a97e565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e7472616374000000000000000000000000000000000000000000008152508282806190829061aaeb565b935060ff16815181106190975761909761a97e565b60200260200101819052506190ac8784619a09565b82826190b78161aaeb565b935060ff16815181106190cc576190cc61a97e565b6020908102919091010152855151156191785760408051808201909152600b81527f2d2d7265666572656e63650000000000000000000000000000000000000000006020820152828261911e8161aaeb565b935060ff16815181106191335761913361a97e565b602002602001018190525061914c866000015184619a09565b82826191578161aaeb565b935060ff168151811061916c5761916c61a97e565b60200260200101819052505b8560800151156191e65760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b0000000000000000602082015282826191c18161aaeb565b935060ff16815181106191d6576191d661a97e565b602002602001018190525061924c565b841561924c5760408051808201909152601281527f2d2d726571756972655265666572656e636500000000000000000000000000006020820152828261922b8161aaeb565b935060ff16815181106192405761924061a97e565b60200260200101819052505b604086015151156192e85760408051808201909152600d81527f2d2d756e73616665416c6c6f7700000000000000000000000000000000000000602082015282826192968161aaeb565b935060ff16815181106192ab576192ab61a97e565b602002602001018190525085604001518282806192c79061aaeb565b935060ff16815181106192dc576192dc61a97e565b60200260200101819052505b8560600151156193525760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d6573000000000000000000000000602082015282826193318161aaeb565b935060ff16815181106193465761934661a97e565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561937057619370619edd565b6040519080825280602002602001820160405280156193a357816020015b606081526020019060019003908161938e5790505b50905060005b8260ff168160ff1610156193fc57838160ff16815181106193cc576193cc61a97e565b6020026020010151828260ff16815181106193e9576193e961a97e565b60209081029190910101526001016193a9565b50979650505050505050565b604080518082019091526000808252602082015281518351101561942d57508161521b565b815183516020850151600092916194439161b0c8565b61944d919061a126565b6020840151909150600190821461946e575082516020840151819020908220145b80156194895783518551869061948590839061a126565b9052505b50929392505050565b60008082600001516194b685600001518660200151866000015187602001516197c4565b6194c0919061b0c8565b90505b835160208501516194d4919061b0c8565b8111618d2257816194e48161b3f4565b925050826000015161951b8560200151836194ff919061a126565b865161950b919061a126565b83866000015187602001516197c4565b619525919061b0c8565b90506194c3565b6060600061953a8484619492565b61954590600161b0c8565b67ffffffffffffffff81111561955d5761955d619edd565b60405190808252806020026020018201604052801561959057816020015b606081526020019060019003908161957b5790505b50905060005b8151811015617612576195ac61794c8686618d03565b8282815181106195be576195be61a97e565b6020908102919091010152600101619596565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061961a577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310619646576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061966457662386f26fc10000830492506010015b6305f5e100831061967c576305f5e100830492506008015b612710831061969057612710830492506004015b606483106196a2576064830492506002015b600a831061521b5760010192915050565b6000808584116197ba576020841161976657600084156196fe5760016196da86602061a126565b6196e590600861b285565b6196f090600261b383565b6196fa919061a126565b1990505b835181168561970d898961b0c8565b619717919061a126565b805190935082165b818114619751578784116197395787945050505050617243565b836197438161b40e565b94505082845116905061971f565b61975b878561b0c8565b945050505050617243565b838320619773858861a126565b61977d908761b0c8565b91505b8582106197b8578482208082036197a55761979b868461b0c8565b9350505050617243565b6197b060018461a126565b925050619780565b505b5092949350505050565b600083818685116198cf576020851161987e57600085156198105760016197ec87602061a126565b6197f790600861b285565b61980290600261b383565b61980c919061a126565b1990505b845181166000876198218b8b61b0c8565b61982b919061a126565b855190915083165b828114619870578186106198585761984b8b8b61b0c8565b9650505050505050617243565b856198628161b3f4565b965050838651169050619833565b859650505050505050617243565b508383206000905b619890868961a126565b82116198cd578583208082036198ac5783945050505050617243565b6198b760018561b0c8565b93505081806198c59061b3f4565b925050619886565b505b6198d9878761b0c8565b979650505050505050565b6040805180820190915260008082526020820152600061991685600001518660200151866000015187602001516197c4565b602080870180519186019190915251909150619932908261a126565b835284516020860151619945919061b0c8565b81036199545760008552619986565b83518351619962919061b0c8565b8551869061997190839061a126565b9052508351619980908261b0c8565b60208601525b50909392505050565b602081106199c757815183526199a660208461b0c8565b92506199b360208361b0c8565b91506199c060208261a126565b905061998f565b60001981156199f65760016199dd83602061a126565b6199e99061010061b383565b6199f3919061a126565b90505b9151835183169219169190911790915250565b60606000619a178484615d16565b8051602080830151604051939450619a319390910161b425565b60405160208183030381529060405291505092915050565b610c9f8061b47e83390190565b610ec28061c11d83390190565b6040518060e00160405280606081526020016060815260200160608152602001600015158152602001600015158152602001600015158152602001619aa6619aab565b905290565b60405180610100016040528060001515815260200160001515815260200160608152602001600080191681526020016060815260200160608152602001600015158152602001619aa66040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b81811015619b5d5783516001600160a01b0316835260209384019390920191600101619b36565b509095945050505050565b60005b83811015619b83578181015183820152602001619b6b565b50506000910152565b60008151808452619ba4816020860160208601619b68565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015619cb4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015619c9a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352619c84848651619b8c565b6020958601959094509290920191600101619c4a565b509197505050602094850194929092019150600101619be0565b50929695505050505050565b600081518084526020840193506020830160005b82811015619d145781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101619cd4565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015619cb4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752619d8a6040880182619b8c565b9050602082015191508681036020880152619da58183619cc0565b965050506020938401939190910190600101619d46565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015619cb4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452619e1e858351619b8c565b94506020938401939190910190600101619de4565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015619cb4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152619eb46040870182619cc0565b9550506020938401939190910190600101619e5b565b6020815260006154576020830184619b8c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600181811c90821680619f2057607f821691505b602082108103617c27577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b601f821115619fa057806000526020600020601f840160051c81016020851015619f805750805b601f840160051c820191505b8181101561280f5760008155600101619f8c565b505050565b815167ffffffffffffffff811115619fbf57619fbf619edd565b619fd381619fcd8454619f0c565b84619f59565b6020601f82116001811461a0075760008315619fef5750848201515b600019600385901b1c1916600184901b17845561280f565b600084815260208120601f198516915b8281101561a037578785015182556020948501946001909201910161a017565b508482101561a0555786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b60006020828403121561a07657600080fd5b5051919050565b6001600160a01b0384168152826020820152606060408201526000617c0d6060830184619b8c565b8281526040602082015260006172436040830184619b8c565b6001600160a01b038516815283602082015260806040820152600061a0e66080830185619b8c565b905082606083015295945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561521b5761521b61a0f7565b60006020828403121561a14b57600080fd5b8151801515811461545757600080fd5b60006020828403121561a16d57600080fd5b81516001600160a01b038116811461545757600080fd5b6001600160a01b0381541682526001600160a01b03600182015416602083015260028101546040830152600060038201608060608501526000815461a1c881619f0c565b806080880152600182166000811461a1e7576001811461a2215761a255565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831660a089015260a082151560051b890101935061a255565b84600052602060002060005b8381101561a24c5781548a820160a0015260019091019060200161a22d565b890160a0019450505b50919695505050505050565b6001600160a01b038616815284602082015260a06040820152600061a28960a0830186619b8c565b846060840152828103608084015261a2a1818561a184565b98975050505050505050565b60008261a2e3577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6001600160a01b0383168152604060208201526000617243604083018461a184565b83815260606020820152600061a3236060830185619b8c565b82810360408401526163c4818561a184565b6001600160a01b03831681526040602082015260006172436040830184619b8c565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161a38f81601a850160208801619b68565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161a3cc81601c840160208801619b68565b01601c01949350505050565b6040516060810167ffffffffffffffff8111828210171561a3fb5761a3fb619edd565b60405290565b60008067ffffffffffffffff84111561a41c5761a41c619edd565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561a44b5761a44b619edd565b60405283815290508082840185101561a46357600080fd5b617612846020830185619b68565b600082601f83011261a48257600080fd5b6154578383516020850161a401565b60006020828403121561a4a357600080fd5b815167ffffffffffffffff81111561a4ba57600080fd5b6152178482850161a471565b6000835161a4d8818460208801619b68565b83519083019061a4ec818360208801619b68565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161a52d81601a850160208801619b68565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161a56a816033840160208801619b68565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b6001600160a01b03841681526001600160a01b0383166020820152606060408201526000617c0d6060830184619b8c565b60408152600b60408201527f464f554e4452595f4f555400000000000000000000000000000000000000000060608201526080602082015260006154576080830184619b8c565b60006020828403121561a62a57600080fd5b815167ffffffffffffffff81111561a64157600080fd5b8201601f8101841361a65257600080fd5b6152178482516020840161a401565b6000855161a673818460208a01619b68565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161a6ad816001840160208a01619b68565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161a6eb816002840160208901619b68565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161a72d816002840160208801619b68565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061a7786040830184619b8c565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161a7ef81601f850160208701619b68565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061a85c6040830184619b8c565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061a8ae6040830184619b8c565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161a925816014850160208701619b68565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061a96c6040830185619b8c565b82810360208401526154538185619b8c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161a9e5816001850160208701619b68565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161aa2b818460208701619b68565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161aade81604b850160208701619b68565b91909101604b0192915050565b600060ff821660ff810361ab015761ab0161a0f7565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161ab68816029850160208701619b68565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f504154480000000000000000000060608201526080602082015260006154576080830184619b8c565b60006020828403121561abce57600080fd5b815167ffffffffffffffff81111561abe557600080fd5b82016060818503121561abf757600080fd5b61abff61a3d8565b81518060030b811461ac1057600080fd5b8152602082015167ffffffffffffffff81111561ac2c57600080fd5b61ac388682850161a471565b602083015250604082015167ffffffffffffffff81111561ac5857600080fd5b61ac648682850161a471565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161acd0816021850160208701619b68565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161aebc816021850160208801619b68565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161aef981602e840160208801619b68565b01602e01949350505050565b6000825161af17818460208701619b68565b9190910192915050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161ab68816029850160208701619b68565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161afdd816022850160208701619b68565b9190910160220192915050565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161b02281600e850160208701619b68565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b8082018082111561521b5761521b61a0f7565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161b113816018850160208801619b68565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161b15081601c840160208801619b68565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161b256818460208701619b68565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b808202811582820484141761521b5761521b61a0f7565b6001815b600184111561b2d75780850481111561b2bb5761b2bb61a0f7565b600184161561b2c957908102905b60019390931c92800261b2a0565b935093915050565b60008261b2ee5750600161521b565b8161b2fb5750600061521b565b816001811461b311576002811461b31b5761b337565b600191505061521b565b60ff84111561b32c5761b32c61a0f7565b50506001821b61521b565b5060208310610133831016604e8410600b841016171561b35a575081810a61521b565b61b367600019848461b29c565b806000190482111561b37b5761b37b61a0f7565b029392505050565b6000615457838361b2df565b8181036000831280158383131683831282161715618d2257618d2261a0f7565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161b3e781601c850160208701619b68565b91909101601c0192915050565b6000600019820361b4075761b40761a0f7565b5060010190565b60008161b41d5761b41d61a0f7565b506000190190565b6000835161b437818460208801619b68565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161b471816001840160208801619b68565b0160010194935050505056fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220a043c41353215fce25ecb67a8a4f6f724aaa86dea8dcb0a6975bfb1f10ff3beb64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610e9e806100246000396000f3fe60806040526004361061006e5760003560e01c8063c51316911161004b578063c5131691146100d5578063c9028a36146100f5578063e04d4f9714610115578063f05b6abf1461012857005b8063357fc5a214610077578063676cc054146100975780636ed70169146100c057005b3661007557005b005b34801561008357600080fd5b506100756100923660046106ec565b610148565b6100aa6100a5366004610728565b6101de565b6040516100b79190610823565b60405180910390f35b3480156100cc57600080fd5b50610075610222565b3480156100e157600080fd5b506100756100f03660046106ec565b610257565b34801561010157600080fd5b50610075610110366004610836565b610332565b610075610123366004610996565b61036e565b34801561013457600080fd5b50610075610143366004610a82565b6103b2565b6101506103e7565b61017273ffffffffffffffffffffffffffffffffffffffff831633838661042a565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101d96001600055565b505050565b6040516060907f3658b46bab672c7672b69c2f0feda706eabdb7d2231421c96e9049b2db5e7eee90600090a1506040805160208101909152600081525b9392505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b61025f6103e7565b600061026c600285610b6c565b9050806000036102a8576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102ca73ffffffffffffffffffffffffffffffffffffffff841633848461042a565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101d96001600055565b7f689a5a5cb55e795ffe4cd8b419cd3bb0a3373974c54d25f64e734d7388b93e9b3382604051610363929190610bf0565b60405180910390a150565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa33348585856040516103a5959493929190610ce2565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103a59493929190610d6c565b600260005403610423576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526104bf9085906104c5565b50505050565b60006104e773ffffffffffffffffffffffffffffffffffffffff841683610560565b9050805160001415801561050c57508080602001905181019061050a9190610e2f565b155b156101d9576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061021b83836000846000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105939190610e4c565b60006040518083038185875af1925050503d80600081146105d0576040519150601f19603f3d011682016040523d82523d6000602084013e6105d5565b606091505b50915091506105e58683836105ef565b9695505050505050565b606082610604576105ff8261067e565b61021b565b8151158015610628575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610677576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610557565b508061021b565b80511561068e5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106e757600080fd5b919050565b60008060006060848603121561070157600080fd5b83359250610711602085016106c3565b915061071f604085016106c3565b90509250925092565b6000806000838503604081121561073e57600080fd5b602081121561074c57600080fd5b50839250602084013567ffffffffffffffff81111561076a57600080fd5b8401601f8101861361077b57600080fd5b803567ffffffffffffffff81111561079257600080fd5b8660208284010111156107a457600080fd5b939660209190910195509293505050565b60005b838110156107d05781810151838201526020016107b8565b50506000910152565b600081518084526107f18160208601602086016107b5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061021b60208301846107d9565b60006020828403121561084857600080fd5b813567ffffffffffffffff81111561085f57600080fd5b82016080818503121561021b57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156108e7576108e7610871565b604052919050565b600082601f83011261090057600080fd5b813567ffffffffffffffff81111561091a5761091a610871565b61094b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016108a0565b81815284602083860101111561096057600080fd5b816020850160208301376000918101602001919091529392505050565b80151581146106c057600080fd5b80356106e78161097d565b6000806000606084860312156109ab57600080fd5b833567ffffffffffffffff8111156109c257600080fd5b6109ce868287016108ef565b9350506020840135915060408401356109e68161097d565b809150509250925092565b600067ffffffffffffffff821115610a0b57610a0b610871565b5060051b60200190565b600082601f830112610a2657600080fd5b8135610a39610a34826109f1565b6108a0565b8082825260208201915060208360051b860101925085831115610a5b57600080fd5b602085015b83811015610a78578035835260209283019201610a60565b5095945050505050565b600080600060608486031215610a9757600080fd5b833567ffffffffffffffff811115610aae57600080fd5b8401601f81018613610abf57600080fd5b8035610acd610a34826109f1565b8082825260208201915060208360051b850101925088831115610aef57600080fd5b602084015b83811015610b3157803567ffffffffffffffff811115610b1357600080fd5b610b228b6020838901016108ef565b84525060209283019201610af4565b509550505050602084013567ffffffffffffffff811115610b5157600080fd5b610b5d86828701610a15565b92505061071f6040850161098b565b600082610ba2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015273ffffffffffffffffffffffffffffffffffffffff610c2e836106c3565b16604082015273ffffffffffffffffffffffffffffffffffffffff610c55602084016106c3565b166060820152600080604084013590508060808401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610ca157600080fd5b830160208101903567ffffffffffffffff811115610cbe57600080fd5b803603821315610ccd57600080fd5b608060a08501526105e560c085018284610ba7565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610d1760a08301866107d9565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610d62578151865260209586019590910190600101610d44565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610dff577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610dea8583516107d9565b94506020938401939190910190600101610db0565b505050508281036040840152610e158186610d30565b915050610e26606083018415159052565b95945050505050565b600060208284031215610e4157600080fd5b815161021b8161097d565b60008251610e5e8184602087016107b5565b919091019291505056fea26469706673582212200121b4788f0b35a4b6df21db4f43708a9b20e8b16f616e6f3300230e75bbdd1364736f6c634300081a00335a657461436f6e6e6563746f724e617469766555706772616465546573742e736f6ca26469706673582212208ae3c9625bc4290a042422793e40fcbec9a36e9adee3ee9cf77ee3c70c02330564736f6c634300081a0033", } // ZetaConnectorNativeTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/zetaconnectornativeupgradetest.sol/zetaconnectornativeupgradetest.go b/v2/pkg/zetaconnectornativeupgradetest.sol/zetaconnectornativeupgradetest.go index 5c33e4610..79b31c6c9 100644 --- a/v2/pkg/zetaconnectornativeupgradetest.sol/zetaconnectornativeupgradetest.go +++ b/v2/pkg/zetaconnectornativeupgradetest.sol/zetaconnectornativeupgradetest.go @@ -40,7 +40,7 @@ type RevertContext struct { // ZetaConnectorNativeUpgradeTestMetaData contains all meta data concerning the ZetaConnectorNativeUpgradeTest contract. var ZetaConnectorNativeUpgradeTestMetaData = &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\":\"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\":\"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\":\"initialize\",\"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\"}],\"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\":\"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\":\"updateTSSAddress\",\"inputs\":[{\"name\":\"newTSSAddress\",\"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\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"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\":\"\",\"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\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"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\":\"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\":\"UpdatedZetaConnectorTSSAddress\",\"inputs\":[{\"name\":\"oldTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newTSSAddress\",\"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\":\"Withdrawn\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawnAndCalled\",\"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\":\"WithdrawnAndReverted\",\"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\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawnV2\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"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\":\"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\":\"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: "0x60a060405230608052348015601357600080fd5b5060805161248461003d6000396000818161125d01528181611286015261145c01526124846000f3fe6080604052600436106101965760003560e01c80635e3e9fef116100e1578063950837aa1161008a578063ad3cb1cc11610064578063ad3cb1cc146104f2578063d547741f14610548578063e63ab1e914610568578063f8c8765e1461059c57600080fd5b8063950837aa14610489578063a217fddf146104a9578063a783c789146104be57600080fd5b80638456cb59116100bb5780638456cb59146103db57806385f438c1146103f057806391d148541461042457600080fd5b80635e3e9fef1461037b5780636f8728ad1461039b578063743e0c9b146103bb57600080fd5b806336568abe1161014357806352d1902d1161011d57806352d1902d1461030f5780635b112591146103245780635c975abb1461034457600080fd5b806336568abe146102c75780633f4ba83a146102e75780634f1ef286146102fc57600080fd5b806321e093b11161017457806321e093b11461022a578063248a9ca31461024a5780632f2ff15d146102a757600080fd5b806301ffc9a71461019b578063106e6290146101d0578063116191b6146101f2575b600080fd5b3480156101a757600080fd5b506101bb6101b6366004611dea565b6105bc565b60405190151581526020015b60405180910390f35b3480156101dc57600080fd5b506101f06101eb366004611e48565b610655565b005b3480156101fe57600080fd5b50600054610212906001600160a01b031681565b6040516001600160a01b0390911681526020016101c7565b34801561023657600080fd5b50600154610212906001600160a01b031681565b34801561025657600080fd5b50610299610265366004611e7b565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101c7565b3480156102b357600080fd5b506101f06102c2366004611e94565b610718565b3480156102d357600080fd5b506101f06102e2366004611e94565b610762565b3480156102f357600080fd5b506101f06107ae565b6101f061030a366004611eef565b6107e3565b34801561031b57600080fd5b50610299610802565b34801561033057600080fd5b50600254610212906001600160a01b031681565b34801561035057600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101bb565b34801561038757600080fd5b506101f061039636600461203f565b610831565b3480156103a757600080fd5b506101f06103b63660046120a1565b610985565b3480156103c757600080fd5b506101f06103d6366004611e7b565b610ade565b3480156103e757600080fd5b506101f0610afe565b3480156103fc57600080fd5b506102997f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b34801561043057600080fd5b506101bb61043f366004611e94565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561049557600080fd5b506101f06104a4366004612139565b610b30565b3480156104b557600080fd5b50610299600081565b3480156104ca57600080fd5b506102997f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b3480156104fe57600080fd5b5061053b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101c79190612178565b34801561055457600080fd5b506101f0610563366004611e94565b610cc3565b34801561057457600080fd5b506102997f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b3480156105a857600080fd5b506101f06105b73660046121c9565b610d07565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061064f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61065d610e8e565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461068781610f0f565b61068f610f19565b6001546106a6906001600160a01b03168585610f77565b836001600160a01b03167f3e35ef4326151011878c9e8e968a0f3913fe98ca68f72a1e0c2e9be13ffb3ee9846040516106e191815260200190565b60405180910390a25061071360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461075281610f0f565b61075c8383611011565b50505050565b6001600160a01b03811633146107a4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61071382826110fe565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6107d881610f0f565b6107e06111c2565b50565b6107eb611252565b6107f482611322565b6107fe828261132d565b5050565b600061080c611451565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610839610e8e565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461086381610f0f565b61086b610f19565b600054600154610888916001600160a01b03918216911687610f77565b6000546001546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692635131ab59926108dd929116908a908a908a908a90600401612266565b600060405180830381600087803b1580156108f757600080fd5b505af115801561090b573d6000803e3d6000fd5b50505050856001600160a01b03167f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d86868660405161094c939291906122a9565b60405180910390a25061097e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b61098d610e8e565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46109b781610f0f565b6109bf610f19565b6000546001546109dc916001600160a01b03918216911688610f77565b6000546001546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526001600160a01b039283169263aa0c0fc192610a33929116908b908b908b908b908a90600401612374565b600060405180830381600087803b158015610a4d57600080fd5b505af1158015610a61573d6000803e3d6000fd5b50505050866001600160a01b03167f5272d2fee39bff41b2e763562526315906046373ce08a7bacf76c3080d731ff087878786604051610aa494939291906123cb565b60405180910390a250610ad660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b610ae6610f19565b6001546107e0906001600160a01b03163330846114b3565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610b2881610f0f565b6107e06114ec565b6000610b3b81610f0f565b6001600160a01b038216610b7b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254610bb2907f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4906001600160a01b03166110fe565b50600254610bea907f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb906001600160a01b03166110fe565b50610c157f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483611011565b50610c407f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb83611011565b50600254604080516001600160a01b03928316815291841660208301527f33770ab682353c17917ad3e667f05905fc8dda00671ef1ed33bef9bc8db0323e910160405180910390a150600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610cfd81610f0f565b61075c83836110fe565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610d525750825b905060008267ffffffffffffffff166001148015610d6f5750303b155b905081158015610d7d575080155b15610db4576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610e155784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610e2189898989611565565b8315610e835784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b505050505050505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01610f09576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6107e08133611870565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615610f75576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040516001600160a01b0383811660248301526044820183905261071391859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506118fd565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166110f4576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556110aa3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061064f565b600091505061064f565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156110f4576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061064f565b6111ca611979565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806112eb57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166112df7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610f75576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006107fe81610f0f565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156113a5575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526113a2918101906123f7565b60015b6113eb576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611447576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016113e2565b61071383836119d4565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f75576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040516001600160a01b03848116602483015283811660448301526064820183905261075c9186918216906323b872dd90608401610fa4565b6114f4610f19565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611234565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156115b05750825b905060008267ffffffffffffffff1660011480156115cd5750303b155b9050811580156115db575080155b15611612576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156116735784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038916158061169057506001600160a01b038816155b806116a257506001600160a01b038716155b806116b457506001600160a01b038616155b156116eb576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116f3611a2a565b6116fb611a32565b611703611a2a565b61170b611a42565b600080546001600160a01b03808c167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316178355600180548c831690841617905560028054918b16919092161790556117669087611011565b506117917f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e488611011565b506117bc7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb88611011565b506117e77f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611011565b506118127f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a88611011565b508315610e835784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001610e7a565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166107fe576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016113e2565b60006119126001600160a01b03841683611a52565b905080516000141580156119375750808060200190518101906119359190612410565b155b15610713576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016113e2565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610f75576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119dd82611a67565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611a22576107138282611b0f565b6107fe611b85565b610f75611bbd565b611a3a611bbd565b610f75611c24565b611a4a611bbd565b610f75611c2c565b6060611a6083836000611c7d565b9392505050565b806001600160a01b03163b600003611ab6576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016113e2565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611b2c9190612432565b600060405180830381855af49150503d8060008114611b67576040519150601f19603f3d011682016040523d82523d6000602084013e611b6c565b606091505b5091509150611b7c858383611d33565b95945050505050565b3415610f75576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610f75576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610feb611bbd565b611c34611bbd565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b606081471015611cbb576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016113e2565b600080856001600160a01b03168486604051611cd79190612432565b60006040518083038185875af1925050503d8060008114611d14576040519150601f19603f3d011682016040523d82523d6000602084013e611d19565b606091505b5091509150611d29868383611d33565b9695505050505050565b606082611d4857611d4382611da8565b611a60565b8151158015611d5f57506001600160a01b0384163b155b15611da1576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016113e2565b5080611a60565b805115611db85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215611dfc57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611a6057600080fd5b80356001600160a01b0381168114611e4357600080fd5b919050565b600080600060608486031215611e5d57600080fd5b611e6684611e2c565b95602085013595506040909401359392505050565b600060208284031215611e8d57600080fd5b5035919050565b60008060408385031215611ea757600080fd5b82359150611eb760208401611e2c565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215611f0257600080fd5b611f0b83611e2c565b9150602083013567ffffffffffffffff811115611f2757600080fd5b8301601f81018513611f3857600080fd5b803567ffffffffffffffff811115611f5257611f52611ec0565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715611fbe57611fbe611ec0565b604052818152828201602001871015611fd657600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008083601f84011261200857600080fd5b50813567ffffffffffffffff81111561202057600080fd5b60208301915083602082850101111561203857600080fd5b9250929050565b60008060008060006080868803121561205757600080fd5b61206086611e2c565b945060208601359350604086013567ffffffffffffffff81111561208357600080fd5b61208f88828901611ff6565b96999598509660600135949350505050565b60008060008060008060a087890312156120ba57600080fd5b6120c387611e2c565b955060208701359450604087013567ffffffffffffffff8111156120e657600080fd5b6120f289828a01611ff6565b90955093505060608701359150608087013567ffffffffffffffff81111561211957600080fd5b87016080818a03121561212b57600080fd5b809150509295509295509295565b60006020828403121561214b57600080fd5b611a6082611e2c565b60005b8381101561216f578181015183820152602001612157565b50506000910152565b6020815260008251806020840152612197816040850160208701612154565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b600080600080608085870312156121df57600080fd5b6121e885611e2c565b93506121f660208601611e2c565b925061220460408601611e2c565b915061221260608601611e2c565b905092959194509250565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015260806060820152600061229e60808301848661221d565b979650505050505050565b838152604060208201526000611b7c60408301848661221d565b6001600160a01b036122d482611e2c565b1682526001600160a01b036122eb60208301611e2c565b1660208301526040818101359083015260006060820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe101811261233357600080fd5b820160208101903567ffffffffffffffff81111561235057600080fd5b80360382131561235f57600080fd5b60806060860152611b7c60808601828461221d565b6001600160a01b03871681526001600160a01b038616602082015284604082015260a0606082015260006123ac60a08301858761221d565b82810360808401526123be81856122c3565b9998505050505050505050565b8481526060602082015260006123e560608301858761221d565b828103604084015261229e81856122c3565b60006020828403121561240957600080fd5b5051919050565b60006020828403121561242257600080fd5b81518015158114611a6057600080fd5b60008251612444818460208701612154565b919091019291505056fea26469706673582212202f9a6f6081eedb42be5da327ff3d1d7d400e5676531c1adc96bcfc57737cb71c64736f6c634300081a0033", + Bin: "0x60a060405230608052348015601357600080fd5b5060805161248461003d6000396000818161125d01528181611286015261145c01526124846000f3fe6080604052600436106101965760003560e01c80635e3e9fef116100e1578063950837aa1161008a578063ad3cb1cc11610064578063ad3cb1cc146104f2578063d547741f14610548578063e63ab1e914610568578063f8c8765e1461059c57600080fd5b8063950837aa14610489578063a217fddf146104a9578063a783c789146104be57600080fd5b80638456cb59116100bb5780638456cb59146103db57806385f438c1146103f057806391d148541461042457600080fd5b80635e3e9fef1461037b5780636f8728ad1461039b578063743e0c9b146103bb57600080fd5b806336568abe1161014357806352d1902d1161011d57806352d1902d1461030f5780635b112591146103245780635c975abb1461034457600080fd5b806336568abe146102c75780633f4ba83a146102e75780634f1ef286146102fc57600080fd5b806321e093b11161017457806321e093b11461022a578063248a9ca31461024a5780632f2ff15d146102a757600080fd5b806301ffc9a71461019b578063106e6290146101d0578063116191b6146101f2575b600080fd5b3480156101a757600080fd5b506101bb6101b6366004611dea565b6105bc565b60405190151581526020015b60405180910390f35b3480156101dc57600080fd5b506101f06101eb366004611e48565b610655565b005b3480156101fe57600080fd5b50600054610212906001600160a01b031681565b6040516001600160a01b0390911681526020016101c7565b34801561023657600080fd5b50600154610212906001600160a01b031681565b34801561025657600080fd5b50610299610265366004611e7b565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101c7565b3480156102b357600080fd5b506101f06102c2366004611e94565b610718565b3480156102d357600080fd5b506101f06102e2366004611e94565b610762565b3480156102f357600080fd5b506101f06107ae565b6101f061030a366004611eef565b6107e3565b34801561031b57600080fd5b50610299610802565b34801561033057600080fd5b50600254610212906001600160a01b031681565b34801561035057600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101bb565b34801561038757600080fd5b506101f061039636600461203f565b610831565b3480156103a757600080fd5b506101f06103b63660046120a1565b610985565b3480156103c757600080fd5b506101f06103d6366004611e7b565b610ade565b3480156103e757600080fd5b506101f0610afe565b3480156103fc57600080fd5b506102997f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b34801561043057600080fd5b506101bb61043f366004611e94565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561049557600080fd5b506101f06104a4366004612139565b610b30565b3480156104b557600080fd5b50610299600081565b3480156104ca57600080fd5b506102997f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b3480156104fe57600080fd5b5061053b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101c79190612178565b34801561055457600080fd5b506101f0610563366004611e94565b610cc3565b34801561057457600080fd5b506102997f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b3480156105a857600080fd5b506101f06105b73660046121c9565b610d07565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061064f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61065d610e8e565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461068781610f0f565b61068f610f19565b6001546106a6906001600160a01b03168585610f77565b836001600160a01b03167f3e35ef4326151011878c9e8e968a0f3913fe98ca68f72a1e0c2e9be13ffb3ee9846040516106e191815260200190565b60405180910390a25061071360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461075281610f0f565b61075c8383611011565b50505050565b6001600160a01b03811633146107a4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61071382826110fe565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6107d881610f0f565b6107e06111c2565b50565b6107eb611252565b6107f482611322565b6107fe828261132d565b5050565b600061080c611451565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610839610e8e565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461086381610f0f565b61086b610f19565b600054600154610888916001600160a01b03918216911687610f77565b6000546001546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692635131ab59926108dd929116908a908a908a908a90600401612266565b600060405180830381600087803b1580156108f757600080fd5b505af115801561090b573d6000803e3d6000fd5b50505050856001600160a01b03167f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d86868660405161094c939291906122a9565b60405180910390a25061097e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b61098d610e8e565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46109b781610f0f565b6109bf610f19565b6000546001546109dc916001600160a01b03918216911688610f77565b6000546001546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526001600160a01b039283169263aa0c0fc192610a33929116908b908b908b908b908a90600401612374565b600060405180830381600087803b158015610a4d57600080fd5b505af1158015610a61573d6000803e3d6000fd5b50505050866001600160a01b03167f5272d2fee39bff41b2e763562526315906046373ce08a7bacf76c3080d731ff087878786604051610aa494939291906123cb565b60405180910390a250610ad660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b610ae6610f19565b6001546107e0906001600160a01b03163330846114b3565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610b2881610f0f565b6107e06114ec565b6000610b3b81610f0f565b6001600160a01b038216610b7b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254610bb2907f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4906001600160a01b03166110fe565b50600254610bea907f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb906001600160a01b03166110fe565b50610c157f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483611011565b50610c407f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb83611011565b50600254604080516001600160a01b03928316815291841660208301527f33770ab682353c17917ad3e667f05905fc8dda00671ef1ed33bef9bc8db0323e910160405180910390a150600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610cfd81610f0f565b61075c83836110fe565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610d525750825b905060008267ffffffffffffffff166001148015610d6f5750303b155b905081158015610d7d575080155b15610db4576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610e155784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610e2189898989611565565b8315610e835784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b505050505050505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01610f09576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6107e08133611870565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615610f75576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040516001600160a01b0383811660248301526044820183905261071391859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506118fd565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166110f4576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556110aa3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061064f565b600091505061064f565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156110f4576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061064f565b6111ca611979565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806112eb57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166112df7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610f75576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006107fe81610f0f565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156113a5575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526113a2918101906123f7565b60015b6113eb576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611447576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016113e2565b61071383836119d4565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f75576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040516001600160a01b03848116602483015283811660448301526064820183905261075c9186918216906323b872dd90608401610fa4565b6114f4610f19565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611234565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156115b05750825b905060008267ffffffffffffffff1660011480156115cd5750303b155b9050811580156115db575080155b15611612576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156116735784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038916158061169057506001600160a01b038816155b806116a257506001600160a01b038716155b806116b457506001600160a01b038616155b156116eb576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116f3611a2a565b6116fb611a32565b611703611a2a565b61170b611a42565b600080546001600160a01b03808c167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316178355600180548c831690841617905560028054918b16919092161790556117669087611011565b506117917f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e488611011565b506117bc7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb88611011565b506117e77f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611011565b506118127f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a88611011565b508315610e835784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001610e7a565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166107fe576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016113e2565b60006119126001600160a01b03841683611a52565b905080516000141580156119375750808060200190518101906119359190612410565b155b15610713576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016113e2565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610f75576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119dd82611a67565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611a22576107138282611b0f565b6107fe611b85565b610f75611bbd565b611a3a611bbd565b610f75611c24565b611a4a611bbd565b610f75611c2c565b6060611a6083836000611c7d565b9392505050565b806001600160a01b03163b600003611ab6576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016113e2565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611b2c9190612432565b600060405180830381855af49150503d8060008114611b67576040519150601f19603f3d011682016040523d82523d6000602084013e611b6c565b606091505b5091509150611b7c858383611d33565b95945050505050565b3415610f75576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610f75576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610feb611bbd565b611c34611bbd565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b606081471015611cbb576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016113e2565b600080856001600160a01b03168486604051611cd79190612432565b60006040518083038185875af1925050503d8060008114611d14576040519150601f19603f3d011682016040523d82523d6000602084013e611d19565b606091505b5091509150611d29868383611d33565b9695505050505050565b606082611d4857611d4382611da8565b611a60565b8151158015611d5f57506001600160a01b0384163b155b15611da1576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016113e2565b5080611a60565b805115611db85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215611dfc57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611a6057600080fd5b80356001600160a01b0381168114611e4357600080fd5b919050565b600080600060608486031215611e5d57600080fd5b611e6684611e2c565b95602085013595506040909401359392505050565b600060208284031215611e8d57600080fd5b5035919050565b60008060408385031215611ea757600080fd5b82359150611eb760208401611e2c565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215611f0257600080fd5b611f0b83611e2c565b9150602083013567ffffffffffffffff811115611f2757600080fd5b8301601f81018513611f3857600080fd5b803567ffffffffffffffff811115611f5257611f52611ec0565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715611fbe57611fbe611ec0565b604052818152828201602001871015611fd657600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008083601f84011261200857600080fd5b50813567ffffffffffffffff81111561202057600080fd5b60208301915083602082850101111561203857600080fd5b9250929050565b60008060008060006080868803121561205757600080fd5b61206086611e2c565b945060208601359350604086013567ffffffffffffffff81111561208357600080fd5b61208f88828901611ff6565b96999598509660600135949350505050565b60008060008060008060a087890312156120ba57600080fd5b6120c387611e2c565b955060208701359450604087013567ffffffffffffffff8111156120e657600080fd5b6120f289828a01611ff6565b90955093505060608701359150608087013567ffffffffffffffff81111561211957600080fd5b87016080818a03121561212b57600080fd5b809150509295509295509295565b60006020828403121561214b57600080fd5b611a6082611e2c565b60005b8381101561216f578181015183820152602001612157565b50506000910152565b6020815260008251806020840152612197816040850160208701612154565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b600080600080608085870312156121df57600080fd5b6121e885611e2c565b93506121f660208601611e2c565b925061220460408601611e2c565b915061221260608601611e2c565b905092959194509250565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015260806060820152600061229e60808301848661221d565b979650505050505050565b838152604060208201526000611b7c60408301848661221d565b6001600160a01b036122d482611e2c565b1682526001600160a01b036122eb60208301611e2c565b1660208301526040818101359083015260006060820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe101811261233357600080fd5b820160208101903567ffffffffffffffff81111561235057600080fd5b80360382131561235f57600080fd5b60806060860152611b7c60808601828461221d565b6001600160a01b03871681526001600160a01b038616602082015284604082015260a0606082015260006123ac60a08301858761221d565b82810360808401526123be81856122c3565b9998505050505050505050565b8481526060602082015260006123e560608301858761221d565b828103604084015261229e81856122c3565b60006020828403121561240957600080fd5b5051919050565b60006020828403121561242257600080fd5b81518015158114611a6057600080fd5b60008251612444818460208701612154565b919091019291505056fea264697066735822122088a3c4caa6fac6e05897ea5aa5d2d7bfd7475716ebc3036a69e9eb83e9e72f2c64736f6c634300081a0033", } // ZetaConnectorNativeUpgradeTestABI 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 a7a25bd40..80ded77ab 100644 --- a/v2/pkg/zetaconnectornonnative.sol/zetaconnectornonnative.go +++ b/v2/pkg/zetaconnectornonnative.sol/zetaconnectornonnative.go @@ -40,7 +40,7 @@ type RevertContext struct { // ZetaConnectorNonNativeMetaData contains all meta data concerning the ZetaConnectorNonNative contract. var ZetaConnectorNonNativeMetaData = &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\":\"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\":\"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\":\"initialize\",\"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\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"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\":\"updateTSSAddress\",\"inputs\":[{\"name\":\"newTSSAddress\",\"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\":\"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\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"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\":\"UpdatedZetaConnectorTSSAddress\",\"inputs\":[{\"name\":\"oldTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newTSSAddress\",\"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\":\"Withdrawn\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawnAndCalled\",\"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\":\"WithdrawnAndReverted\",\"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\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"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\":\"ERC1967InvalidImplementation\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967NonPayable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExceedsMaxSupply\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpectedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"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\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x60a060405230608052348015601357600080fd5b5060805161251961003d6000396000818161145701528181611480015261165601526125196000f3fe6080604052600436106101ac5760003560e01c80636f8728ad116100ec578063a217fddf1161008a578063d547741f11610064578063d547741f1461057e578063d5abeb011461059e578063e63ab1e9146105b4578063f8c8765e146105e857600080fd5b8063a217fddf146104df578063a783c789146104f4578063ad3cb1cc1461052857600080fd5b80638456cb59116100c65780638456cb591461041157806385f438c11461042657806391d148541461045a578063950837aa146104bf57600080fd5b80636f8728ad146103b15780636f8b44b0146103d1578063743e0c9b146103f157600080fd5b806336568abe1161015957806352d1902d1161013357806352d1902d146103255780635b1125911461033a5780635c975abb1461035a5780635e3e9fef1461039157600080fd5b806336568abe146102dd5780633f4ba83a146102fd5780634f1ef2861461031257600080fd5b806321e093b11161018a57806321e093b114610240578063248a9ca3146102605780632f2ff15d146102bd57600080fd5b806301ffc9a7146101b1578063106e6290146101e6578063116191b614610208575b600080fd5b3480156101bd57600080fd5b506101d16101cc366004611e67565b610608565b60405190151581526020015b60405180910390f35b3480156101f257600080fd5b50610206610201366004611ec5565b6106a1565b005b34801561021457600080fd5b50600054610228906001600160a01b031681565b6040516001600160a01b0390911681526020016101dd565b34801561024c57600080fd5b50600154610228906001600160a01b031681565b34801561026c57600080fd5b506102af61027b366004611ef8565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101dd565b3480156102c957600080fd5b506102066102d8366004611f11565b610758565b3480156102e957600080fd5b506102066102f8366004611f11565b6107a2565b34801561030957600080fd5b506102066107ee565b610206610320366004611f6c565b610823565b34801561033157600080fd5b506102af610842565b34801561034657600080fd5b50600254610228906001600160a01b031681565b34801561036657600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101d1565b34801561039d57600080fd5b506102066103ac3660046120bc565b610871565b3480156103bd57600080fd5b506102066103cc36600461211e565b6109bf565b3480156103dd57600080fd5b506102066103ec366004611ef8565b610b12565b3480156103fd57600080fd5b5061020661040c366004611ef8565b610b80565b34801561041d57600080fd5b50610206610c01565b34801561043257600080fd5b506102af7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b34801561046657600080fd5b506101d1610475366004611f11565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156104cb57600080fd5b506102066104da3660046121b6565b610c33565b3480156104eb57600080fd5b506102af600081565b34801561050057600080fd5b506102af7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561053457600080fd5b506105716040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101dd91906121f5565b34801561058a57600080fd5b50610206610599366004611f11565b610dc6565b3480156105aa57600080fd5b506102af60035481565b3480156105c057600080fd5b506102af7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b3480156105f457600080fd5b50610206610603366004612246565b610e0a565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061069b57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6106a9610fb5565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46106d381611036565b6106db611040565b6106e684848461109e565b836001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d58460405161072191815260200190565b60405180910390a25061075360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461079281611036565b61079c838361120b565b50505050565b6001600160a01b03811633146107e4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61075382826112f8565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61081881611036565b6108206113bc565b50565b61082b61144c565b6108348261151c565b61083e8282611527565b5050565b600061084c61164b565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610879610fb5565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46108a381611036565b6108ab611040565b6000546108c2906001600160a01b0316868461109e565b6000546001546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692635131ab5992610917929116908a908a908a908a906004016122e3565b600060405180830381600087803b15801561093157600080fd5b505af1158015610945573d6000803e3d6000fd5b50505050856001600160a01b03167f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d86868660405161098693929190612326565b60405180910390a2506109b860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6109c7610fb5565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46109f181611036565b6109f9611040565b600054610a10906001600160a01b0316878561109e565b6000546001546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526001600160a01b039283169263aa0c0fc192610a67929116908b908b908b908b908a906004016123f1565b600060405180830381600087803b158015610a8157600080fd5b505af1158015610a95573d6000803e3d6000fd5b50505050866001600160a01b03167f5272d2fee39bff41b2e763562526315906046373ce08a7bacf76c3080d731ff087878786604051610ad89493929190612448565b60405180910390a250610b0a60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610b3c81611036565b610b44611040565b60038290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610b88611040565b6001546040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018390526001600160a01b03909116906379cc679090604401600060405180830381600087803b158015610bed57600080fd5b505af11580156109b8573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610c2b81611036565b6108206116ad565b6000610c3e81611036565b6001600160a01b038216610c7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254610cb5907f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4906001600160a01b03166112f8565b50600254610ced907f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb906001600160a01b03166112f8565b50610d187f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48361120b565b50610d437f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb8361120b565b50600254604080516001600160a01b03928316815291841660208301527f33770ab682353c17917ad3e667f05905fc8dda00671ef1ed33bef9bc8db0323e910160405180910390a150600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610e0081611036565b61079c83836112f8565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610e555750825b905060008267ffffffffffffffff166001148015610e725750303b155b905081158015610e80575080155b15610eb7576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610f185784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610f2489898989611726565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6003558315610faa5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b505050505050505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611030576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6108208133611a31565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff161561109c576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600354600160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111189190612474565b611122908461248d565b111561115a576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040517f1e458bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018590526044820184905290911690631e458bee90606401600060405180830381600087803b1580156111c857600080fd5b505af11580156111dc573d6000803e3d6000fd5b50505050505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166112ee576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556112a43390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061069b565b600091505061069b565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156112ee576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061069b565b6113c4611abe565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806114e557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114d97f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b1561109c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061083e81611036565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561159f575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261159c91810190612474565b60015b6115e5576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611641576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016115dc565b6107538383611b19565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461109c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116b5611040565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361142e565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156117715750825b905060008267ffffffffffffffff16600114801561178e5750303b155b90508115801561179c575080155b156117d3576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156118345784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038916158061185157506001600160a01b038816155b8061186357506001600160a01b038716155b8061187557506001600160a01b038616155b156118ac576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118b4611b6f565b6118bc611b77565b6118c4611b6f565b6118cc611b87565b600080546001600160a01b03808c167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316178355600180548c831690841617905560028054918b1691909216179055611927908761120b565b506119527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48861120b565b5061197d7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb8861120b565b506119a87f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8761120b565b506119d37f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8861120b565b508315610faa5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001610fa1565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff1661083e576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016115dc565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1661109c576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b2282611b97565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b67576107538282611c3f565b61083e611cb5565b61109c611ced565b611b7f611ced565b61109c611d54565b611b8f611ced565b61109c611d5c565b806001600160a01b03163b600003611be6576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016115dc565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611c5c91906124c7565b600060405180830381855af49150503d8060008114611c97576040519150601f19603f3d011682016040523d82523d6000602084013e611c9c565b606091505b5091509150611cac858383611dad565b95945050505050565b341561109c576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661109c576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111e5611ced565b611d64611ced565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b606082611dc257611dbd82611e25565b611e1e565b8151158015611dd957506001600160a01b0384163b155b15611e1b576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016115dc565b50805b9392505050565b805115611e355780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215611e7957600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611e1e57600080fd5b80356001600160a01b0381168114611ec057600080fd5b919050565b600080600060608486031215611eda57600080fd5b611ee384611ea9565b95602085013595506040909401359392505050565b600060208284031215611f0a57600080fd5b5035919050565b60008060408385031215611f2457600080fd5b82359150611f3460208401611ea9565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215611f7f57600080fd5b611f8883611ea9565b9150602083013567ffffffffffffffff811115611fa457600080fd5b8301601f81018513611fb557600080fd5b803567ffffffffffffffff811115611fcf57611fcf611f3d565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561203b5761203b611f3d565b60405281815282820160200187101561205357600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008083601f84011261208557600080fd5b50813567ffffffffffffffff81111561209d57600080fd5b6020830191508360208285010111156120b557600080fd5b9250929050565b6000806000806000608086880312156120d457600080fd5b6120dd86611ea9565b945060208601359350604086013567ffffffffffffffff81111561210057600080fd5b61210c88828901612073565b96999598509660600135949350505050565b60008060008060008060a0878903121561213757600080fd5b61214087611ea9565b955060208701359450604087013567ffffffffffffffff81111561216357600080fd5b61216f89828a01612073565b90955093505060608701359150608087013567ffffffffffffffff81111561219657600080fd5b87016080818a0312156121a857600080fd5b809150509295509295509295565b6000602082840312156121c857600080fd5b611e1e82611ea9565b60005b838110156121ec5781810151838201526020016121d4565b50506000910152565b60208152600082518060208401526122148160408501602087016121d1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000806000806080858703121561225c57600080fd5b61226585611ea9565b935061227360208601611ea9565b925061228160408601611ea9565b915061228f60608601611ea9565b905092959194509250565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015260806060820152600061231b60808301848661229a565b979650505050505050565b838152604060208201526000611cac60408301848661229a565b6001600160a01b0361235182611ea9565b1682526001600160a01b0361236860208301611ea9565b1660208301526040818101359083015260006060820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe10181126123b057600080fd5b820160208101903567ffffffffffffffff8111156123cd57600080fd5b8036038213156123dc57600080fd5b60806060860152611cac60808601828461229a565b6001600160a01b03871681526001600160a01b038616602082015284604082015260a06060820152600061242960a08301858761229a565b828103608084015261243b8185612340565b9998505050505050505050565b84815260606020820152600061246260608301858761229a565b828103604084015261231b8185612340565b60006020828403121561248657600080fd5b5051919050565b8082018082111561069b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082516124d98184602087016121d1565b919091019291505056fea2646970667358221220dcdae3d1abcc1e59c760855979066a21bc8e8a92347b22dd5e8b2fe90f3a69a864736f6c634300081a0033", + Bin: "0x60a060405230608052348015601357600080fd5b5060805161251961003d6000396000818161145701528181611480015261165601526125196000f3fe6080604052600436106101ac5760003560e01c80636f8728ad116100ec578063a217fddf1161008a578063d547741f11610064578063d547741f1461057e578063d5abeb011461059e578063e63ab1e9146105b4578063f8c8765e146105e857600080fd5b8063a217fddf146104df578063a783c789146104f4578063ad3cb1cc1461052857600080fd5b80638456cb59116100c65780638456cb591461041157806385f438c11461042657806391d148541461045a578063950837aa146104bf57600080fd5b80636f8728ad146103b15780636f8b44b0146103d1578063743e0c9b146103f157600080fd5b806336568abe1161015957806352d1902d1161013357806352d1902d146103255780635b1125911461033a5780635c975abb1461035a5780635e3e9fef1461039157600080fd5b806336568abe146102dd5780633f4ba83a146102fd5780634f1ef2861461031257600080fd5b806321e093b11161018a57806321e093b114610240578063248a9ca3146102605780632f2ff15d146102bd57600080fd5b806301ffc9a7146101b1578063106e6290146101e6578063116191b614610208575b600080fd5b3480156101bd57600080fd5b506101d16101cc366004611e67565b610608565b60405190151581526020015b60405180910390f35b3480156101f257600080fd5b50610206610201366004611ec5565b6106a1565b005b34801561021457600080fd5b50600054610228906001600160a01b031681565b6040516001600160a01b0390911681526020016101dd565b34801561024c57600080fd5b50600154610228906001600160a01b031681565b34801561026c57600080fd5b506102af61027b366004611ef8565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101dd565b3480156102c957600080fd5b506102066102d8366004611f11565b610758565b3480156102e957600080fd5b506102066102f8366004611f11565b6107a2565b34801561030957600080fd5b506102066107ee565b610206610320366004611f6c565b610823565b34801561033157600080fd5b506102af610842565b34801561034657600080fd5b50600254610228906001600160a01b031681565b34801561036657600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101d1565b34801561039d57600080fd5b506102066103ac3660046120bc565b610871565b3480156103bd57600080fd5b506102066103cc36600461211e565b6109bf565b3480156103dd57600080fd5b506102066103ec366004611ef8565b610b12565b3480156103fd57600080fd5b5061020661040c366004611ef8565b610b80565b34801561041d57600080fd5b50610206610c01565b34801561043257600080fd5b506102af7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b34801561046657600080fd5b506101d1610475366004611f11565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156104cb57600080fd5b506102066104da3660046121b6565b610c33565b3480156104eb57600080fd5b506102af600081565b34801561050057600080fd5b506102af7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561053457600080fd5b506105716040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101dd91906121f5565b34801561058a57600080fd5b50610206610599366004611f11565b610dc6565b3480156105aa57600080fd5b506102af60035481565b3480156105c057600080fd5b506102af7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b3480156105f457600080fd5b50610206610603366004612246565b610e0a565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061069b57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6106a9610fb5565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46106d381611036565b6106db611040565b6106e684848461109e565b836001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d58460405161072191815260200190565b60405180910390a25061075360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461079281611036565b61079c838361120b565b50505050565b6001600160a01b03811633146107e4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61075382826112f8565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61081881611036565b6108206113bc565b50565b61082b61144c565b6108348261151c565b61083e8282611527565b5050565b600061084c61164b565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610879610fb5565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46108a381611036565b6108ab611040565b6000546108c2906001600160a01b0316868461109e565b6000546001546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692635131ab5992610917929116908a908a908a908a906004016122e3565b600060405180830381600087803b15801561093157600080fd5b505af1158015610945573d6000803e3d6000fd5b50505050856001600160a01b03167f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d86868660405161098693929190612326565b60405180910390a2506109b860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6109c7610fb5565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46109f181611036565b6109f9611040565b600054610a10906001600160a01b0316878561109e565b6000546001546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526001600160a01b039283169263aa0c0fc192610a67929116908b908b908b908b908a906004016123f1565b600060405180830381600087803b158015610a8157600080fd5b505af1158015610a95573d6000803e3d6000fd5b50505050866001600160a01b03167f5272d2fee39bff41b2e763562526315906046373ce08a7bacf76c3080d731ff087878786604051610ad89493929190612448565b60405180910390a250610b0a60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610b3c81611036565b610b44611040565b60038290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610b88611040565b6001546040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018390526001600160a01b03909116906379cc679090604401600060405180830381600087803b158015610bed57600080fd5b505af11580156109b8573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610c2b81611036565b6108206116ad565b6000610c3e81611036565b6001600160a01b038216610c7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254610cb5907f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4906001600160a01b03166112f8565b50600254610ced907f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb906001600160a01b03166112f8565b50610d187f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48361120b565b50610d437f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb8361120b565b50600254604080516001600160a01b03928316815291841660208301527f33770ab682353c17917ad3e667f05905fc8dda00671ef1ed33bef9bc8db0323e910160405180910390a150600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610e0081611036565b61079c83836112f8565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610e555750825b905060008267ffffffffffffffff166001148015610e725750303b155b905081158015610e80575080155b15610eb7576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610f185784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610f2489898989611726565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6003558315610faa5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b505050505050505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611030576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6108208133611a31565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff161561109c576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600354600160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111189190612474565b611122908461248d565b111561115a576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040517f1e458bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018590526044820184905290911690631e458bee90606401600060405180830381600087803b1580156111c857600080fd5b505af11580156111dc573d6000803e3d6000fd5b50505050505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166112ee576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556112a43390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061069b565b600091505061069b565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156112ee576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061069b565b6113c4611abe565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806114e557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114d97f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b1561109c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061083e81611036565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561159f575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261159c91810190612474565b60015b6115e5576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611641576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016115dc565b6107538383611b19565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461109c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116b5611040565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361142e565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156117715750825b905060008267ffffffffffffffff16600114801561178e5750303b155b90508115801561179c575080155b156117d3576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156118345784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038916158061185157506001600160a01b038816155b8061186357506001600160a01b038716155b8061187557506001600160a01b038616155b156118ac576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118b4611b6f565b6118bc611b77565b6118c4611b6f565b6118cc611b87565b600080546001600160a01b03808c167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316178355600180548c831690841617905560028054918b1691909216179055611927908761120b565b506119527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48861120b565b5061197d7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb8861120b565b506119a87f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8761120b565b506119d37f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8861120b565b508315610faa5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001610fa1565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff1661083e576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016115dc565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1661109c576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b2282611b97565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b67576107538282611c3f565b61083e611cb5565b61109c611ced565b611b7f611ced565b61109c611d54565b611b8f611ced565b61109c611d5c565b806001600160a01b03163b600003611be6576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016115dc565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611c5c91906124c7565b600060405180830381855af49150503d8060008114611c97576040519150601f19603f3d011682016040523d82523d6000602084013e611c9c565b606091505b5091509150611cac858383611dad565b95945050505050565b341561109c576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661109c576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111e5611ced565b611d64611ced565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b606082611dc257611dbd82611e25565b611e1e565b8151158015611dd957506001600160a01b0384163b155b15611e1b576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016115dc565b50805b9392505050565b805115611e355780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215611e7957600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611e1e57600080fd5b80356001600160a01b0381168114611ec057600080fd5b919050565b600080600060608486031215611eda57600080fd5b611ee384611ea9565b95602085013595506040909401359392505050565b600060208284031215611f0a57600080fd5b5035919050565b60008060408385031215611f2457600080fd5b82359150611f3460208401611ea9565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215611f7f57600080fd5b611f8883611ea9565b9150602083013567ffffffffffffffff811115611fa457600080fd5b8301601f81018513611fb557600080fd5b803567ffffffffffffffff811115611fcf57611fcf611f3d565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561203b5761203b611f3d565b60405281815282820160200187101561205357600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008083601f84011261208557600080fd5b50813567ffffffffffffffff81111561209d57600080fd5b6020830191508360208285010111156120b557600080fd5b9250929050565b6000806000806000608086880312156120d457600080fd5b6120dd86611ea9565b945060208601359350604086013567ffffffffffffffff81111561210057600080fd5b61210c88828901612073565b96999598509660600135949350505050565b60008060008060008060a0878903121561213757600080fd5b61214087611ea9565b955060208701359450604087013567ffffffffffffffff81111561216357600080fd5b61216f89828a01612073565b90955093505060608701359150608087013567ffffffffffffffff81111561219657600080fd5b87016080818a0312156121a857600080fd5b809150509295509295509295565b6000602082840312156121c857600080fd5b611e1e82611ea9565b60005b838110156121ec5781810151838201526020016121d4565b50506000910152565b60208152600082518060208401526122148160408501602087016121d1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000806000806080858703121561225c57600080fd5b61226585611ea9565b935061227360208601611ea9565b925061228160408601611ea9565b915061228f60608601611ea9565b905092959194509250565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015260806060820152600061231b60808301848661229a565b979650505050505050565b838152604060208201526000611cac60408301848661229a565b6001600160a01b0361235182611ea9565b1682526001600160a01b0361236860208301611ea9565b1660208301526040818101359083015260006060820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe10181126123b057600080fd5b820160208101903567ffffffffffffffff8111156123cd57600080fd5b8036038213156123dc57600080fd5b60806060860152611cac60808601828461229a565b6001600160a01b03871681526001600160a01b038616602082015284604082015260a06060820152600061242960a08301858761229a565b828103608084015261243b8185612340565b9998505050505050505050565b84815260606020820152600061246260608301858761229a565b828103604084015261231b8185612340565b60006020828403121561248657600080fd5b5051919050565b8082018082111561069b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082516124d98184602087016121d1565b919091019291505056fea2646970667358221220ecaeeab5029e9c664da04ee2fdaf2e0659e1740805c1791257cff702c4072f4664736f6c634300081a0033", } // 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 9e530a7a2..46cd772a3 100644 --- a/v2/pkg/zetaconnectornonnative.t.sol/zetaconnectornonnativetest.go +++ b/v2/pkg/zetaconnectornonnative.t.sol/zetaconnectornonnativetest.go @@ -67,7 +67,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\":\"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\":\"testSexMaxSupplyFailsIfSenderIsNotTss\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpgradeAndWithdraw\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdraw\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallFailsIfMaxSupplyIsReached\",\"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\":\"testWithdrawAndFailsIfMaxSupplyIsReached\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevert\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevertFailsIfMaxSupplyIsReached\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevertFailsIfSenderIsNotWithdrawer\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawFailsIfSenderIsNotWithdrawer\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawTogglePause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Called\",\"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\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposited\",\"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\"},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\":\"ReceivedOnCall\",\"inputs\":[],\"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\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedGatewayTSSAddress\",\"inputs\":[{\"name\":\"oldTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedZetaConnectorTSSAddress\",\"inputs\":[{\"name\":\"oldTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawn\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawnAndCalled\",\"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\":\"WithdrawnAndReverted\",\"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\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawnV2\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"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\":\"ConnectorInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExceedsMaxSupply\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotAllowedToCallOnCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotAllowedToCallOnRevert\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotWhitelistedInCustody\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PayloadSizeExceeded\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061d6318061003c6000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c8063aaf7419211610104578063d509b16c116100a2578063e63ab1e911610071578063e63ab1e914610357578063fa7626d41461037e578063fdca90521461038b578063fe574f841461039357600080fd5b8063d509b16c14610337578063dcf7d0371461033f578063de1cb76c14610347578063e20c9f711461034f57600080fd5b8063b5508aa9116100de578063b5508aa914610307578063ba414fa61461030f578063c190997214610327578063ccb0e3f21461032f57600080fd5b8063aaf74192146102ef578063af298bb1146102f7578063b0464fdc146102ff57600080fd5b8063493465581161017c57806385226c811161014b57806385226c811461026957806385f438c11461027e578063916a17c6146102b3578063a783c789146102c857600080fd5b8063493465581461023c57806366d9a9a0146102445780637db20efb14610259578063828320141461026157600080fd5b80632ade3880116101b85780632ade38801461020f5780633cba0107146102245780633e5e3c231461022c5780633f7286f41461023457600080fd5b80630a9254e4146101df5780631ed7831c146101e95780632506ef0314610207575b600080fd5b6101e761039b565b005b6101f1610b7e565b6040516101fe9190619a93565b60405180910390f35b6101e7610be0565b610217610e94565b6040516101fe9190619b2f565b6101e7610fd6565b6101f16117ad565b6101f161180d565b6101e761186d565b61024c611e4d565b6040516101fe9190619c95565b6101e7611fcf565b6101e761226e565b6102716124ce565b6040516101fe9190619d33565b6102a57f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6040519081526020016101fe565b6102bb61259e565b6040516101fe9190619daa565b6102a57f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b6101e7612699565b6101e7612914565b6102bb612d5e565b610271612e59565b610317612f29565b60405190151581526020016101fe565b6101e7612ffd565b6101e761326d565b6101e7613d9a565b6101e76140ed565b6101e7614729565b6101f1614e56565b6102a57f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b601f546103179060ff1681565b6101e7614eb6565b6101e76150b7565b602480547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602580548216611234179055602680548216615678908117909155602780549092166198761790915560405181906103ff906199c0565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015610432573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600e81527f4761746577617945564d2e736f6c000000000000000000000000000000000000602082015260265460248054935191861690820152604481019390935292166064820152600091610524916084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc0c53b8b000000000000000000000000000000000000000000000000000000001790526152a7565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0384811682029290921792839055604080518082018252601081527f4552433230437573746f64792e736f6c00000000000000000000000000000000602082015260265460248054935194909604851695840195909552938316604483015290911660648201529192506105ca916084016104c7565b602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383811691909117909155604080518082018252601a81527f5a657461436f6e6e6563746f724e6f6e4e61746976652e736f6c0000000000006020820152601f546023546026546024805495516101009094048716908401529085166044830152841660648201529190921660848201529192506106cf9160a40160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff8c8765e000000000000000000000000000000000000000000000000000000001790526152a7565b602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038381169190911790915560265460405163ca669fa760e01b815291166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561075a57600080fd5b505af115801561076e573d6000803e3d6000fd5b50506023546026546022546040517f15d57fd40000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082166024820152911692506315d57fd49150604401600060405180830381600087803b1580156107df57600080fd5b505af11580156107f3573d6000803e3d6000fd5b50505050604051610803906199cd565b604051809103906000f08015801561081f573d6000803e3d6000fd5b50602080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556026546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b1580156108cb57600080fd5b505af11580156108df573d6000803e3d6000fd5b5050602480546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d93506306447d56925001600060405180830381600087803b15801561095457600080fd5b505af1158015610968573d6000803e3d6000fd5b5050601f546021546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261010090920416925063ae7a3a6f9150602401600060405180830381600087803b1580156109d357600080fd5b505af11580156109e7573d6000803e3d6000fd5b5050601f546022546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526101009092041692506310188aef9150602401600060405180830381600087803b158015610a5257600080fd5b505af1158015610a66573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610ac857600080fd5b505af1158015610adc573d6000803e3d6000fd5b5050604080516080810182526024546001600160a01b039081168252602354811660208084019182526001848601908152855191820190955260008152606084018190528351602880549185167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316178155925160298054919095169116179092559251602a55909350909150602b90610b789082619f09565b50505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610bd657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610bb8575b5050505050905090565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a09060009060250160408051808303601f190181529082905260265463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015610c7b57600080fd5b505af1158015610c8f573d6000803e3d6000fd5b50506022546040517f6f8b44b0000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b039091169250636f8b44b09150602401600060405180830381600087803b158015610cf257600080fd5b505af1158015610d06573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015610d6357600080fd5b505af1158015610d77573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fc30436e9000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015610e0057600080fd5b505af1158015610e14573d6000803e3d6000fd5b50506022546020546001600160a01b039182169350636f8728ad925016610e3c856001619ff7565b8460286040518563ffffffff1660e01b8152600401610e5e949392919061a0e7565b600060405180830381600087803b158015610e7857600080fd5b505af1158015610e8c573d6000803e3d6000fd5b505050505050565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015610fcd57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610fb6578382906000526020600020018054610f2990619e70565b80601f0160208091040260200160405190810160405280929190818152602001828054610f5590619e70565b8015610fa25780601f10610f7757610100808354040283529160200191610fa2565b820191906000526020600020905b815481529060010190602001808311610f8557829003601f168201915b505050505081526020019060010190610f0a565b505050508152505081526020019060010190610eb8565b50505050905090565b602354602554604051620186a0602482018190526001600160a01b039384166044830152929091166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a20000000000000000000000000000000000000000000000000000000017905260235460255491516370a0823160e01b81526001600160a01b0392831660048201529293506000929116906370a0823190602401602060405180830381865afa1580156110b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d8919061a128565b90506110e58160006152c6565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611136573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115a919061a128565b90506111678160006152c6565b601f546040516101009091046001600160a01b03166024820152604481018690526064810185905260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260235490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391611252916001600160a01b039190911690600090869060040161a141565b600060405180830381600087803b15801561126c57600080fd5b505af1158015611280573d6000803e3d6000fd5b50506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561131257600080fd5b505af1158015611326573d6000803e3d6000fd5b5050601f54602354602554604080516101009094046001600160a01b039081168552602085018d9052928316908401521660608201527f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609250608001905060405180910390a16022546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561141a57600080fd5b505af115801561142e573d6000803e3d6000fd5b50506020546040516001600160a01b0390911692507f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d9150611473908990889061a169565b60405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156114d457600080fd5b505af11580156114e8573d6000803e3d6000fd5b50506022546020546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef935061154092909116908a9089908b9060040161a182565b600060405180830381600087803b15801561155a57600080fd5b505af115801561156e573d6000803e3d6000fd5b50506023546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156115c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e5919061a128565b90506115f181886152c6565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611642573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611666919061a128565b90506116738160006152c6565b602354601f546020546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526101009092046001600160a01b0390811660048401529081166024830152600092169063dd62ed3e90604401602060405180830381865afa1580156116eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170f919061a128565b905061171c8160006152c6565b602354601f546040516370a0823160e01b81526101009091046001600160a01b03908116600483015260009216906370a0823190602401602060405180830381865afa158015611770573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611794919061a128565b90506117a18160006152c6565b50505050505050505050565b60606018805480602002602001604051908101604052809291908181526020018280548015610bd6576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610bb8575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610bd6576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610bb8575050505050905090565b6040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6ed701690000000000000000000000000000000000000000000000000000000017905260235460255493516370a0823160e01b8152620186a0946000949385936001600160a01b03908116936370a082319361190f93921691016001600160a01b0391909116815260200190565b602060405180830381865afa15801561192c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611950919061a128565b905061195d8160006152c6565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156119ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d2919061a128565b90506119df8160006152c6565b601f546040516101009091046001600160a01b03166024820152604481018690526064810185905260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260235490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391611aca916001600160a01b039190911690600090869060040161a141565b600060405180830381600087803b158015611ae457600080fd5b505af1158015611af8573d6000803e3d6000fd5b50506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015611b8a57600080fd5b505af1158015611b9e573d6000803e3d6000fd5b5050601f546040516101009091046001600160a01b031681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09250602001905060405180910390a16022546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611c7557600080fd5b505af1158015611c89573d6000803e3d6000fd5b50506020546040516001600160a01b0390911692507f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d9150611cce908990889061a169565b60405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611d2f57600080fd5b505af1158015611d43573d6000803e3d6000fd5b50506022546020546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350611d9b92909116908a9089908b9060040161a182565b600060405180830381600087803b158015611db557600080fd5b505af1158015611dc9573d6000803e3d6000fd5b50506023546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611e1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e40919061a128565b90506115f18160006152c6565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610fcd5783829060005260206000209060020201604051806040016040529081600082018054611ea490619e70565b80601f0160208091040260200160405190810160405280929190818152602001828054611ed090619e70565b8015611f1d5780601f10611ef257610100808354040283529160200191611f1d565b820191906000526020600020905b815481529060010190602001808311611f0057829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611fb757602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611f645790505b50505050508152505081526020019060010190611e71565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152620186a090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561202d57600080fd5b505af1158015612041573d6000803e3d6000fd5b50506022546040517f6f8b44b0000000000000000000000000000000000000000000000000000000008152600481018590526001600160a01b039091169250636f8b44b09150602401600060405180830381600087803b1580156120a457600080fd5b505af11580156120b8573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561211557600080fd5b505af1158015612129573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fc30436e9000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156121b257600080fd5b505af11580156121c6573d6000803e3d6000fd5b50506022546020546001600160a01b03918216935063106e62909250166121ee846001619ff7565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039092166004830152602482015260006044820152606401600060405180830381600087803b15801561225357600080fd5b505af1158015612267573d6000803e3d6000fd5b5050505050565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f19018152908290526024805463ca669fa760e01b84526001600160a01b03166004840152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa79101600060405180830381600087803b15801561230b57600080fd5b505af115801561231f573d6000803e3d6000fd5b505060248054604080516001600160a01b03909216928201929092527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448083019190915282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f0000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061240e919060040161a1bb565b600060405180830381600087803b15801561242857600080fd5b505af115801561243c573d6000803e3d6000fd5b50506022546020546040517f6f8728ad0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450636f8728ad9350612497929091169087908690889060289060040161a1ce565b600060405180830381600087803b1580156124b157600080fd5b505af11580156124c5573d6000803e3d6000fd5b50505050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610fcd57838290600052602060002001805461251190619e70565b80601f016020809104026020016040519081016040528092919081815260200182805461253d90619e70565b801561258a5780601f1061255f5761010080835404028352916020019161258a565b820191906000526020600020905b81548152906001019060200180831161256d57829003601f168201915b5050505050815260200190600101906124f2565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015610fcd5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561268157602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161262e5790505b505050505081525050815260200190600101906125c2565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a09060009060250160408051808303601f190181529082905260265463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561273457600080fd5b505af1158015612748573d6000803e3d6000fd5b50506022546040517f6f8b44b0000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b039091169250636f8b44b09150602401600060405180830381600087803b1580156127ab57600080fd5b505af11580156127bf573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561281c57600080fd5b505af1158015612830573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fc30436e9000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156128b957600080fd5b505af11580156128cd573d6000803e3d6000fd5b50506022546020546001600160a01b039182169350635e3e9fef9250166128f5856001619ff7565b846040518463ffffffff1660e01b8152600401610e5e9392919061a21a565b6022546040805160608101909152602580825261295e926001600160a01b0316919061d5d760208301396040805160208101909152600081526024546001600160a01b0316615345565b6022546023546025546040516370a0823160e01b81526001600160a01b03918216600482015292811692620186a09260009216906370a0823190602401602060405180830381865afa1580156129b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129dc919061a128565b90506129e98160006152c6565b6025546040516001600160a01b0390911660248201526044810183905260006064820181905290819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260235490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391612ad2916001600160a01b039190911690600090869060040161a141565b600060405180830381600087803b158015612aec57600080fd5b505af1158015612b00573d6000803e3d6000fd5b50506040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b0388166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015612b8e57600080fd5b505af1158015612ba2573d6000803e3d6000fd5b50506025546040518781526001600160a01b0390911692507f3e35ef4326151011878c9e8e968a0f3913fe98ca68f72a1e0c2e9be13ffb3ee9915060200160405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612c4157600080fd5b505af1158015612c55573d6000803e3d6000fd5b50506025546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810188905260448101869052908816925063106e62909150606401600060405180830381600087803b158015612cc757600080fd5b505af1158015612cdb573d6000803e3d6000fd5b50506023546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015612d2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d52919061a128565b9050610e8c81866152c6565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015610fcd5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015612e4157602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411612dee5790505b50505050508152505081526020019060010190612d82565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610fcd578382906000526020600020018054612e9c90619e70565b80601f0160208091040260200160405190810160405280929190818152602001828054612ec890619e70565b8015612f155780601f10612eea57610100808354040283529160200191612f15565b820191906000526020600020905b815481529060010190602001808311612ef857829003601f168201915b505050505081526020019060010190612e7d565b60085460009060ff1615612f41575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612fd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ff6919061a128565b1415905090565b602354602554604051620186a0602482018190526001600160a01b039384166044830152929091166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a20000000000000000000000000000000000000000000000000000000017905260248054915163ca669fa760e01b81526001600160a01b039092166004830152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa79101600060405180830381600087803b1580156130e457600080fd5b505af11580156130f8573d6000803e3d6000fd5b505060248054604080516001600160a01b03909216928201929092527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448083019190915282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f0000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506131e7919060040161a1bb565b600060405180830381600087803b15801561320157600080fd5b505af1158015613215573d6000803e3d6000fd5b50506022546020546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350612497929091169087908690889060040161a182565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152620186a090600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156132ce57600080fd5b505af11580156132e2573d6000803e3d6000fd5b5050602754604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506133cd919060040161a1bb565b600060405180830381600087803b1580156133e757600080fd5b505af11580156133fb573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561344f57600080fd5b505af1158015613463573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156134c057600080fd5b505af11580156134d4573d6000803e3d6000fd5b5050602754604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506135bf919060040161a1bb565b600060405180830381600087803b1580156135d957600080fd5b505af11580156135ed573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561364157600080fd5b505af1158015613655573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156136b257600080fd5b505af11580156136c6573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561371a57600080fd5b505af115801561372e573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd93c0665000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156137b757600080fd5b505af11580156137cb573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561382857600080fd5b505af115801561383c573d6000803e3d6000fd5b50506022546025546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101879052604481018690529116925063106e62909150606401600060405180830381600087803b1580156138b057600080fd5b505af11580156138c4573d6000803e3d6000fd5b50506024805460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063ca669fa7925001600060405180830381600087803b15801561392057600080fd5b505af1158015613934573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561398857600080fd5b505af115801561399c573d6000803e3d6000fd5b50506023546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156139ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a13919061a128565b9050613a208160006152c6565b6025546040516001600160a01b039091166024820152604481018490526064810183905260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260235490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391613b07916001600160a01b039190911690600090869060040161a141565b600060405180830381600087803b158015613b2157600080fd5b505af1158015613b35573d6000803e3d6000fd5b50506022546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015613bc757600080fd5b505af1158015613bdb573d6000803e3d6000fd5b50506025546040518781526001600160a01b0390911692507f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5915060200160405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613c7a57600080fd5b505af1158015613c8e573d6000803e3d6000fd5b50506022546025546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101899052604481018890529116925063106e629091506064015b600060405180830381600087803b158015613d0357600080fd5b505af1158015613d17573d6000803e3d6000fd5b50506023546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015613d6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d8e919061a128565b905061226781866152c6565b6023546025546040516370a0823160e01b81526001600160a01b039182166004820152620186a09260009216906370a0823190602401602060405180830381865afa158015613ded573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e11919061a128565b9050613e1e8160006152c6565b6025546040516001600160a01b0390911660248201526044810183905260006064820181905290819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260235490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391613f07916001600160a01b039190911690600090869060040161a141565b600060405180830381600087803b158015613f2157600080fd5b505af1158015613f35573d6000803e3d6000fd5b50506022546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015613fc757600080fd5b505af1158015613fdb573d6000803e3d6000fd5b50506025546040518781526001600160a01b0390911692507f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5915060200160405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561407a57600080fd5b505af115801561408e573d6000803e3d6000fd5b50506022546025546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101899052604481018790529116925063106e62909150606401613ce9565b602354602554604051620186a0602482018190526001600160a01b039384166044830152929091166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc51316910000000000000000000000000000000000000000000000000000000017905260235460255491516370a0823160e01b81526001600160a01b0392831660048201529293506000929116906370a0823190602401602060405180830381865afa1580156141cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141ef919061a128565b90506141fc8160006152c6565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801561424d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614271919061a128565b905061427e8160006152c6565b601f546040516101009091046001600160a01b03166024820152604481018690526064810185905260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260235490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391614369916001600160a01b039190911690600090869060040161a141565b600060405180830381600087803b15801561438357600080fd5b505af1158015614397573d6000803e3d6000fd5b50506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561442957600080fd5b505af115801561443d573d6000803e3d6000fd5b5050601f547f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60925061010090046001600160a01b0316905061448060028961a253565b602354602554604080516001600160a01b03958616815260208101949094529184168383015292909216606082015290519081900360800190a16022546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561454857600080fd5b505af115801561455c573d6000803e3d6000fd5b50506020546040516001600160a01b0390911692507f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d91506145a1908990889061a169565b60405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561460257600080fd5b505af1158015614616573d6000803e3d6000fd5b50506022546020546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef935061466e92909116908a9089908b9060040161a182565b600060405180830381600087803b15801561468857600080fd5b505af115801561469c573d6000803e3d6000fd5b50506023546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156146ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614713919061a128565b90506115f18161472460028a61a253565b6152c6565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f19018152908290526023546020546370a0823160e01b84526001600160a01b0390811660048501529193506000929116906370a0823190602401602060405180830381865afa1580156147bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147e3919061a128565b90506147f08160006152c6565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015614841573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614865919061a128565b601f54604080516001600160a01b036101009093048316602482015260448101899052606480820189905282518083039091018152608490910182526020810180517f1e458bee000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911617905260235491517ff30c7ba300000000000000000000000000000000000000000000000000000000815293945092737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba39261494792911690600090869060040161a141565b600060405180830381600087803b15801561496157600080fd5b505af1158015614975573d6000803e3d6000fd5b50506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015614a0757600080fd5b505af1158015614a1b573d6000803e3d6000fd5b505050507f689a5a5cb55e795ffe4cd8b419cd3bb0a3373974c54d25f64e734d7388b93e9b601f60019054906101000a90046001600160a01b03166028604051614a6692919061a28e565b60405180910390a1601f546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015614b0057600080fd5b505af1158015614b14573d6000803e3d6000fd5b50506023546020546040516001600160a01b039283169450911691507fde7603a6ed5d07c9f43597ccfe9043d15b66d3284f0de321f5cdf56329e6e03590614b62908a90899060289061a2b0565b60405180910390a36022546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015614bf857600080fd5b505af1158015614c0c573d6000803e3d6000fd5b50506020546040516001600160a01b0390911692507f5272d2fee39bff41b2e763562526315906046373ce08a7bacf76c3080d731ff09150614c54908990889060289061a2b0565b60405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614cb557600080fd5b505af1158015614cc9573d6000803e3d6000fd5b50506022546020546040517f6f8728ad0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450636f8728ad9350614d2492909116908a9089908b9060289060040161a1ce565b600060405180830381600087803b158015614d3e57600080fd5b505af1158015614d52573d6000803e3d6000fd5b50506023546020546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015614da5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614dc9919061a128565b9050614dd581886152c6565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015614e26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614e4a919061a128565b905061167381856152c6565b60606015805480602002602001604051908101604052809291908181526020018280548015610bd6576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610bb8575050505050905090565b6024805460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa79101600060405180830381600087803b158015614f0e57600080fd5b505af1158015614f22573d6000803e3d6000fd5b505060248054604080516001600160a01b03909216928201929092527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60448083019190915282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f0000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250615011919060040161a1bb565b600060405180830381600087803b15801561502b57600080fd5b505af115801561503f573d6000803e3d6000fd5b50506022546040517f6f8b44b000000000000000000000000000000000000000000000000000000000815261271060048201526001600160a01b039091169250636f8b44b09150602401600060405180830381600087803b1580156150a357600080fd5b505af1158015610b78573d6000803e3d6000fd5b6024805460405163ca669fa760e01b81526001600160a01b039091166004820152620186a091600091737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa79101600060405180830381600087803b15801561511757600080fd5b505af115801561512b573d6000803e3d6000fd5b505060248054604080516001600160a01b03909216928201929092527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448083019190915282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f0000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061521a919060040161a1bb565b600060405180830381600087803b15801561523457600080fd5b505af1158015615248573d6000803e3d6000fd5b50506022546025546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101879052604481018690529116925063106e62909150606401610e5e565b60006152b16199da565b6152bc84848361535a565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b15801561533157600080fd5b505afa158015610e8c573d6000803e3d6000fd5b61534d6199da565b61226785858584866153d5565b60008061536785846154d5565b90506153ca6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f787900000081525082866040516020016153b592919061a2db565b604051602081830303815290604052856154e1565b9150505b9392505050565b6040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201528190737109709ecfa91a80626ff3989d68f67f5b1dd12d9081906306447d5690602401600060405180830381600087803b15801561544757600080fd5b505af1925050508015615458575060015b61546d576154688787878761550f565b6124c5565b6154798787878761550f565b806001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156154b457600080fd5b505af11580156154c8573d6000803e3d6000fd5b5050505050505050505050565b60006153ce8383615528565b60c08101515160009015615505576154fe84848460c00151615543565b90506153ce565b6154fe84846156e9565b600061551b84836157d4565b90506122678582856157e0565b60006155348383615baa565b6153ce838360200151846154e1565b60008061554e615bba565b9050600061555c8683615c8d565b905060006155738260600151836020015185616133565b9050600061558383838989616345565b90506000615590826171c2565b602081015181519192509060030b15615603578982604001516040516020016155ba92919061a2fd565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526155fa9160040161a1bb565b60405180910390fd5b60006156466040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001617391565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d9061569990849060040161a1bb565b602060405180830381865afa1580156156b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906156da919061a37e565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc9259061573e90879060040161a1bb565b600060405180830381865afa15801561575b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615783919081019061a460565b905060006157b1828560405160200161579d92919061a495565b604051602081830303815290604052617591565b90506001600160a01b0381166152bc5784846040516020016155ba92919061a4c4565b600061553483836175a4565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201527fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61036024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90600090829063667f9d7090604401602060405180830381865afa15801561587c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906158a0919061a128565b905080615a475760006158b2866175b0565b604080518082018252600581527f352e302e300000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061593d905b604080518082018252600080825260209182015281518083019092528451825280850190820152906176a8565b80615949575060008451115b156159cc576040517f4f1ef2860000000000000000000000000000000000000000000000000000000081526001600160a01b03871690634f1ef28690615995908890889060040161a2db565b600060405180830381600087803b1580156159af57600080fd5b505af11580156159c3573d6000803e3d6000fd5b50505050615a41565b6040517f3659cfe60000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152871690633659cfe690602401600060405180830381600087803b158015615a2857600080fd5b505af1158015615a3c573d6000803e3d6000fd5b505050505b50612267565b806000615a53826175b0565b604080518082018252600581527f352e302e3000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615ab590615910565b80615ac1575060008551115b15615b46576040517f9623609d0000000000000000000000000000000000000000000000000000000081526001600160a01b03831690639623609d90615b0f908a908a908a9060040161a56f565b600060405180830381600087803b158015615b2957600080fd5b505af1158015615b3d573d6000803e3d6000fd5b505050506124c5565b6040517f99a88ec40000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015287811660248301528316906399a88ec490604401600060405180830381600087803b1580156154b457600080fd5b615bb6828260006176bc565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90615c4190849060040161a5a0565b600060405180830381865afa158015615c5e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615c86919081019061a5e7565b9250505090565b615cbf6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050615d0a6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b615d13856177bf565b60208201526000615d2386617ba4565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015615d65573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615d8d919081019061a5e7565b86838560200151604051602001615da7949392919061a630565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190615dff90859060040161a1bb565b600060405180830381865afa158015615e1c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615e44919081019061a5e7565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690615e8c90849060040161a734565b602060405180830381865afa158015615ea9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615ecd919061a786565b615ee257816040516020016155ba919061a7a8565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890615f2790849060040161a83a565b600060405180830381865afa158015615f44573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615f6c919081019061a5e7565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690615fb390849060040161a88c565b602060405180830381865afa158015615fd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615ff4919061a786565b15616089576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061603e90849060040161a88c565b600060405180830381865afa15801561605b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616083919081019061a5e7565b60408501525b846001600160a01b03166349c4fac88286600001516040516020016160ae919061a8de565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016160da92919061a94a565b600060405180830381865afa1580156160f7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261611f919081019061a5e7565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b606081526020019060019003908161614f5790505090506040518060400160405280600481526020017f6772657000000000000000000000000000000000000000000000000000000000815250816000815181106161af576161af61a96f565b60200260200101819052506040518060400160405280600381526020017f2d726c0000000000000000000000000000000000000000000000000000000000815250816001815181106162035761620361a96f565b60200260200101819052508460405160200161621f919061a99e565b604051602081830303815290604052816002815181106162415761624161a96f565b60200260200101819052508260405160200161625d919061aa0a565b6040516020818303038152906040528160038151811061627f5761627f61a96f565b60200260200101819052506000616295826171c2565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506163269060408051808201825260008082526020918201528151808301909252845182528085019082015290617e27565b61633b57856040516020016155ba919061aa4b565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015616395565b511590565b61650957826020015115616451576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a4016155fa565b8260c0015115616509576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a4016155fa565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161652257905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061657d9061aadc565b935060ff16815181106165925761659261a96f565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016165e3919061aafb565b6040516020818303038152906040528282806165fe9061aadc565b935060ff16815181106166135761661361a96f565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806166609061aadc565b935060ff16815181106166755761667561a96f565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806166c29061aadc565b935060ff16815181106166d7576166d761a96f565b602002602001018190525087602001518282806166f39061aadc565b935060ff16815181106167085761670861a96f565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806167559061aadc565b935060ff168151811061676a5761676a61a96f565b6020908102919091010152875182826167828161aadc565b935060ff16815181106167975761679761a96f565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806167e49061aadc565b935060ff16815181106167f9576167f961a96f565b602002602001018190525061680d46617e88565b82826168188161aadc565b935060ff168151811061682d5761682d61a96f565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c65000000000000000000000000000000000081525082828061687a9061aadc565b935060ff168151811061688f5761688f61a96f565b6020026020010181905250868282806168a79061aadc565b935060ff16815181106168bc576168bc61a96f565b60209081029190910101528551156169e35760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261690d8161aadc565b935060ff16815181106169225761692261a96f565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d9061697290899060040161a1bb565b600060405180830381865afa15801561698f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526169b7919081019061a5e7565b82826169c28161aadc565b935060ff16815181106169d7576169d761a96f565b60200260200101819052505b846020015115616ab35760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282616a2c8161aadc565b935060ff1681518110616a4157616a4161a96f565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280616a8e9061aadc565b935060ff1681518110616aa357616aa361a96f565b6020026020010181905250616c7a565b616aeb6163908660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b616b7e5760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282616b2e8161aadc565b935060ff1681518110616b4357616b4361a96f565b60200260200101819052508460a00151604051602001616b63919061a99e565b604051602081830303815290604052828280616a8e9061aadc565b8460c00151158015616bc1575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152616bbf90511590565b155b15616c7a5760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282616c058161aadc565b935060ff1681518110616c1a57616c1a61a96f565b6020026020010181905250616c2e88617f28565b604051602001616c3e919061a99e565b604051602081830303815290604052828280616c599061aadc565b935060ff1681518110616c6e57616c6e61a96f565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152616cae90511590565b616d435760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282616cf18161aadc565b935060ff1681518110616d0657616d0661a96f565b60200260200101819052508460400151828280616d229061aadc565b935060ff1681518110616d3757616d3761a96f565b60200260200101819052505b606085015115616e645760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282616d8c8161aadc565b935060ff1681518110616da157616da161a96f565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015616e10573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616e38919081019061a5e7565b8282616e438161aadc565b935060ff1681518110616e5857616e5861a96f565b60200260200101819052505b60e08501515115616f0b5760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282616eae8161aadc565b935060ff1681518110616ec357616ec361a96f565b6020026020010181905250616edf8560e0015160000151617e88565b8282616eea8161aadc565b935060ff1681518110616eff57616eff61a96f565b60200260200101819052505b60e08501516020015115616fb55760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282616f588161aadc565b935060ff1681518110616f6d57616f6d61a96f565b6020026020010181905250616f898560e0015160200151617e88565b8282616f948161aadc565b935060ff1681518110616fa957616fa961a96f565b60200260200101819052505b60e0850151604001511561705f5760408051808201909152600e81527f2d2d6d6178466565506572476173000000000000000000000000000000000000602082015282826170028161aadc565b935060ff16815181106170175761701761a96f565b60200260200101819052506170338560e0015160400151617e88565b828261703e8161aadc565b935060ff16815181106170535761705361a96f565b60200260200101819052505b60e085015160600151156171095760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826170ac8161aadc565b935060ff16815181106170c1576170c161a96f565b60200260200101819052506170dd8560e0015160600151617e88565b82826170e88161aadc565b935060ff16815181106170fd576170fd61a96f565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561712757617127619e41565b60405190808252806020026020018201604052801561715a57816020015b60608152602001906001900390816171455790505b50905060005b8260ff168160ff1610156171b357838160ff16815181106171835761718361a96f565b6020026020010151828260ff16815181106171a0576171a061a96f565b6020908102919091010152600101617160565b5093505050505b949350505050565b6171e96040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c9161726f9186910161ab66565b600060405180830381865afa15801561728c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526172b4919081019061a5e7565b905060006172c28683618a17565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b81526004016172f29190619d33565b6000604051808303816000875af1158015617311573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617339919081019061abad565b805190915060030b158015906173525750602081015151155b80156173615750604081015151155b1561633b57816000815181106173795761737961a96f565b60200260200101516040516020016155ba919061ac63565b606060006173c68560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506173fd9082905b90618b6c565b1561755a57600061747a826174748461746e6174408a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90618b93565b90618bf5565b604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506174de908290618b6c565b1561754857604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617545905b8290618c7a565b90505b61755181618ca0565b925050506153ce565b82156175735784846040516020016155ba92919061ae4f565b50506040805160208101909152600081526153ce565b509392505050565b6000808251602084016000f09392505050565b615bb6828260016176bc565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fad3cb1cc00000000000000000000000000000000000000000000000000000000179052905160609160009182916001600160a01b03861691617625919061aef6565b600060405180830381855afa9150503d8060008114617660576040519150601f19603f3d011682016040523d82523d6000602084013e617665565b606091505b5091509150818015617678575060208151115b1561769157808060200190518101906171ba919061a5e7565b505060408051602081019091526000815292915050565b60006176b48383618d09565b159392505050565b8160a00151156176cb57505050565b60006176d8848484618de4565b905060006176e5826171c2565b602081015181519192509060030b1580156177815750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617781906040805180820182526000808252602091820152815180830190925284518252808501908201526173f7565b1561778e57505050505050565b604082015151156177ae5781604001516040516020016155ba919061af12565b806040516020016155ba919061af70565b606060006177f48360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150617859905b8290617e27565b156178c857604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526153ce906178c390839061937f565b618ca0565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261792a905b8290619409565b6001036179f757604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526179909061753e565b50604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526153ce906178c3905b8390618c7a565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617a5690617852565b15617b8d57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290617abe9083906194a3565b905060008160018351617ad1919061afdb565b81518110617ae157617ae161a96f565b60200260200101519050617b846178c3617b576040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529061937f565b95945050505050565b826040516020016155ba919061afee565b50919050565b60606000617bd98360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150617c3b90617852565b15617c49576153ce81618ca0565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617ca890617923565b600103617d1257604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526153ce906178c3906179f0565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617d7190617852565b15617b8d57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290617dd99083906194a3565b9050600181511115617e15578060028251617df4919061afdb565b81518110617e0457617e0461a96f565b602002602001015192505050919050565b50826040516020016155ba919061afee565b805182516000911115617e3c575060006152c0565b81518351602085015160009291617e5291619ff7565b617e5c919061afdb565b905082602001518103617e735760019150506152c0565b82516020840151819020912014905092915050565b60606000617e9583619548565b600101905060008167ffffffffffffffff811115617eb557617eb5619e41565b6040519080825280601f01601f191660200182016040528015617edf576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084617ee957509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091617fb4905b82906176a8565b15617ff457505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261805390617fad565b1561809357505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d49540000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526180f290617fad565b1561813257505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261819190617fad565b806181f65750604080518082018252601081527f47504c2d322e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526181f690617fad565b1561823657505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261829590617fad565b806182fa5750604080518082018252601081527f47504c2d332e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526182fa90617fad565b1561833a57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261839990617fad565b806183fe5750604080518082018252601181527f4c47504c2d322e312d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526183fe90617fad565b1561843e57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261849d90617fad565b806185025750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261850290617fad565b1561854257505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526185a190617fad565b156185e157505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261864090617fad565b1561868057505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526186df90617fad565b1561871f57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261877e90617fad565b156187be57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261881d90617fad565b1561885d57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526188bc90617fad565b806189215750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261892190617fad565b1561896157505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e31000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526189c090617fad565b15618a0057505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b604080840151845191516155ba929060200161b0cc565b60608060005b8451811015618aa25781858281518110618a3957618a3961a96f565b6020026020010151604051602001618a5292919061a495565b604051602081830303815290604052915060018551618a71919061afdb565b8114618a9a5781604051602001618a88919061b235565b60405160208183030381529060405291505b600101618a1d565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081618abb5790505090508381600081518110618ae657618ae661a96f565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110618b3a57618b3a61a96f565b60200260200101819052508181600281518110618b5957618b5961a96f565b6020908102919091010152949350505050565b6020808301518351835192840151600093618b8a929184919061962a565b14159392505050565b60408051808201909152600080825260208201526000618bc5846000015185602001518560000151866020015161973b565b9050836020015181618bd7919061afdb565b84518590618be690839061afdb565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015618c1a5750816152c0565b6020808301519084015160019114618c415750815160208481015190840151829020919020145b8015618c7257825184518590618c5890839061afdb565b9052508251602085018051618c6e908390619ff7565b9052505b509192915050565b6040805180820190915260008082526020820152618c9983838361985b565b5092915050565b60606000826000015167ffffffffffffffff811115618cc157618cc1619e41565b6040519080825280601f01601f191660200182016040528015618ceb576020820181803683370190505b5090506000602082019050618c998185602001518660000151619906565b8151815160009190811115618d1c575081515b6020808501519084015160005b83811015618dd55782518251808214618da5576000196020871015618d8457600184618d5689602061afdb565b618d609190619ff7565b618d6b90600861b276565b618d7690600261b374565b618d80919061afdb565b1990505b8181168382168181039114618da25797506152c09650505050505050565b50505b618db0602086619ff7565b9450618dbd602085619ff7565b93505050602081618dce9190619ff7565b9050618d29565b508451865161633b919061b380565b60606000618df0615bba565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081618e0d57905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280618e689061aadc565b935060ff1681518110618e7d57618e7d61a96f565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001618ece919061b3a0565b604051602081830303815290604052828280618ee99061aadc565b935060ff1681518110618efe57618efe61a96f565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280618f4b9061aadc565b935060ff1681518110618f6057618f6061a96f565b602002602001018190525082604051602001618f7c919061aa0a565b604051602081830303815290604052828280618f979061aadc565b935060ff1681518110618fac57618fac61a96f565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280618ff99061aadc565b935060ff168151811061900e5761900e61a96f565b60200260200101819052506190238784619980565b828261902e8161aadc565b935060ff16815181106190435761904361a96f565b6020908102919091010152855151156190ef5760408051808201909152600b81527f2d2d7265666572656e6365000000000000000000000000000000000000000000602082015282826190958161aadc565b935060ff16815181106190aa576190aa61a96f565b60200260200101819052506190c3866000015184619980565b82826190ce8161aadc565b935060ff16815181106190e3576190e361a96f565b60200260200101819052505b85608001511561915d5760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b0000000000000000602082015282826191388161aadc565b935060ff168151811061914d5761914d61a96f565b60200260200101819052506191c3565b84156191c35760408051808201909152601281527f2d2d726571756972655265666572656e63650000000000000000000000000000602082015282826191a28161aadc565b935060ff16815181106191b7576191b761a96f565b60200260200101819052505b6040860151511561925f5760408051808201909152600d81527f2d2d756e73616665416c6c6f77000000000000000000000000000000000000006020820152828261920d8161aadc565b935060ff16815181106192225761922261a96f565b6020026020010181905250856040015182828061923e9061aadc565b935060ff16815181106192535761925361a96f565b60200260200101819052505b8560600151156192c95760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d6573000000000000000000000000602082015282826192a88161aadc565b935060ff16815181106192bd576192bd61a96f565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156192e7576192e7619e41565b60405190808252806020026020018201604052801561931a57816020015b60608152602001906001900390816193055790505b50905060005b8260ff168160ff16101561937357838160ff16815181106193435761934361a96f565b6020026020010151828260ff16815181106193605761936061a96f565b6020908102919091010152600101619320565b50979650505050505050565b60408051808201909152600080825260208201528151835110156193a45750816152c0565b815183516020850151600092916193ba91619ff7565b6193c4919061afdb565b602084015190915060019082146193e5575082516020840151819020908220145b8015619400578351855186906193fc90839061afdb565b9052505b50929392505050565b600080826000015161942d856000015186602001518660000151876020015161973b565b6194379190619ff7565b90505b8351602085015161944b9190619ff7565b8111618c99578161945b8161b3e5565b9250508260000151619492856020015183619476919061afdb565b8651619482919061afdb565b838660000151876020015161973b565b61949c9190619ff7565b905061943a565b606060006194b18484619409565b6194bc906001619ff7565b67ffffffffffffffff8111156194d4576194d4619e41565b60405190808252806020026020018201604052801561950757816020015b60608152602001906001900390816194f25790505b50905060005b8151811015617589576195236178c38686618c7a565b8282815181106195355761953561a96f565b602090810291909101015260010161950d565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310619591577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106195bd576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106195db57662386f26fc10000830492506010015b6305f5e10083106195f3576305f5e100830492506008015b612710831061960757612710830492506004015b60648310619619576064830492506002015b600a83106152c05760010192915050565b60008085841161973157602084116196dd576000841561967557600161965186602061afdb565b61965c90600861b276565b61966790600261b374565b619671919061afdb565b1990505b83518116856196848989619ff7565b61968e919061afdb565b805190935082165b8181146196c8578784116196b057879450505050506171ba565b836196ba8161b3ff565b945050828451169050619696565b6196d28785619ff7565b9450505050506171ba565b8383206196ea858861afdb565b6196f49087619ff7565b91505b85821061972f5784822080820361971c576197128684619ff7565b93505050506171ba565b61972760018461afdb565b9250506196f7565b505b5092949350505050565b6000838186851161984657602085116197f5576000851561978757600161976387602061afdb565b61976e90600861b276565b61977990600261b374565b619783919061afdb565b1990505b845181166000876197988b8b619ff7565b6197a2919061afdb565b855190915083165b8281146197e7578186106197cf576197c28b8b619ff7565b96505050505050506171ba565b856197d98161b3e5565b9650508386511690506197aa565b8596505050505050506171ba565b508383206000905b619807868961afdb565b82116198445785832080820361982357839450505050506171ba565b61982e600185619ff7565b935050818061983c9061b3e5565b9250506197fd565b505b6198508787619ff7565b979650505050505050565b6040805180820190915260008082526020820152600061988d856000015186602001518660000151876020015161973b565b6020808701805191860191909152519091506198a9908261afdb565b8352845160208601516198bc9190619ff7565b81036198cb57600085526198fd565b835183516198d99190619ff7565b855186906198e890839061afdb565b90525083516198f79082619ff7565b60208601525b50909392505050565b6020811061993e578151835261991d602084619ff7565b925061992a602083619ff7565b915061993760208261afdb565b9050619906565b600019811561996d57600161995483602061afdb565b6199609061010061b374565b61996a919061afdb565b90505b9151835183169219169190911790915250565b6060600061998e8484615c8d565b80516020808301516040519394506199a89390910161b416565b60405160208183030381529060405291505092915050565b6112a68061b46f83390190565b610ec28061c71583390190565b6040518060e00160405280606081526020016060815260200160608152602001600015158152602001600015158152602001600015158152602001619a1d619a22565b905290565b60405180610100016040528060001515815260200160001515815260200160608152602001600080191681526020016060815260200160608152602001600015158152602001619a1d6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b81811015619ad45783516001600160a01b0316835260209384019390920191600101619aad565b509095945050505050565b60005b83811015619afa578181015183820152602001619ae2565b50506000910152565b60008151808452619b1b816020860160208601619adf565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015619c2b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015619c11577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352619bfb848651619b03565b6020958601959094509290920191600101619bc1565b509197505050602094850194929092019150600101619b57565b50929695505050505050565b600081518084526020840193506020830160005b82811015619c8b5781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101619c4b565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015619c2b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752619d016040880182619b03565b9050602082015191508681036020880152619d1c8183619c37565b965050506020938401939190910190600101619cbd565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015619c2b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452619d95858351619b03565b94506020938401939190910190600101619d5b565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015619c2b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152619e2b6040870182619c37565b9550506020938401939190910190600101619dd2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600181811c90821680619e8457607f821691505b602082108103617b9e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b601f821115619f0457806000526020600020601f840160051c81016020851015619ee45750805b601f840160051c820191505b818110156122675760008155600101619ef0565b505050565b815167ffffffffffffffff811115619f2357619f23619e41565b619f3781619f318454619e70565b84619ebd565b6020601f821160018114619f6b5760008315619f535750848201515b600019600385901b1c1916600184901b178455612267565b600084815260208120601f198516915b82811015619f9b5787850151825560209485019460019092019101619f7b565b5084821015619fb95786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156152c0576152c0619fc8565b6001600160a01b0381541682526001600160a01b03600182015416602083015260028101546040830152600060038201608060608501526000815461a04e81619e70565b806080880152600182166000811461a06d576001811461a0a75761a0db565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831660a089015260a082151560051b890101935061a0db565b84600052602060002060005b8381101561a0d25781548a820160a0015260019091019060200161a0b3565b890160a0019450505b50919695505050505050565b6001600160a01b038516815283602082015260a06040820152600061a10f60a0830185619b03565b600060608401528281036080840152619850818561a00a565b60006020828403121561a13a57600080fd5b5051919050565b6001600160a01b0384168152826020820152606060408201526000617b846060830184619b03565b8281526040602082015260006171ba6040830184619b03565b6001600160a01b038516815283602082015260806040820152600061a1aa6080830185619b03565b905082606083015295945050505050565b6020815260006153ce6020830184619b03565b6001600160a01b038616815284602082015260a06040820152600061a1f660a0830186619b03565b846060840152828103608084015261a20e818561a00a565b98975050505050505050565b6001600160a01b038416815282602082015260806040820152600061a2426080830184619b03565b905060006060830152949350505050565b60008261a289577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6001600160a01b03831681526040602082015260006171ba604083018461a00a565b83815260606020820152600061a2c96060830185619b03565b828103604084015261633b818561a00a565b6001600160a01b03831681526040602082015260006171ba6040830184619b03565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161a33581601a850160208801619adf565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161a37281601c840160208801619adf565b01601c01949350505050565b60006020828403121561a39057600080fd5b81516001600160a01b03811681146153ce57600080fd5b6040516060810167ffffffffffffffff8111828210171561a3ca5761a3ca619e41565b60405290565b60008067ffffffffffffffff84111561a3eb5761a3eb619e41565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561a41a5761a41a619e41565b60405283815290508082840185101561a43257600080fd5b617589846020830185619adf565b600082601f83011261a45157600080fd5b6153ce8383516020850161a3d0565b60006020828403121561a47257600080fd5b815167ffffffffffffffff81111561a48957600080fd5b6152bc8482850161a440565b6000835161a4a7818460208801619adf565b83519083019061a4bb818360208801619adf565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161a4fc81601a850160208801619adf565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161a539816033840160208801619adf565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b6001600160a01b03841681526001600160a01b0383166020820152606060408201526000617b846060830184619b03565b60408152600b60408201527f464f554e4452595f4f555400000000000000000000000000000000000000000060608201526080602082015260006153ce6080830184619b03565b60006020828403121561a5f957600080fd5b815167ffffffffffffffff81111561a61057600080fd5b8201601f8101841361a62157600080fd5b6152bc8482516020840161a3d0565b6000855161a642818460208a01619adf565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161a67c816001840160208a01619adf565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161a6ba816002840160208901619adf565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161a6fc816002840160208801619adf565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061a7476040830184619b03565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b60006020828403121561a79857600080fd5b815180151581146153ce57600080fd5b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161a7e081601f850160208701619adf565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061a84d6040830184619b03565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061a89f6040830184619b03565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161a916816014850160208701619adf565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061a95d6040830185619b03565b82810360208401526153ca8185619b03565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161a9d6816001850160208701619adf565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161aa1c818460208701619adf565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161aacf81604b850160208701619adf565b91909101604b0192915050565b600060ff821660ff810361aaf25761aaf2619fc8565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161ab59816029850160208701619adf565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f504154480000000000000000000060608201526080602082015260006153ce6080830184619b03565b60006020828403121561abbf57600080fd5b815167ffffffffffffffff81111561abd657600080fd5b82016060818503121561abe857600080fd5b61abf061a3a7565b81518060030b811461ac0157600080fd5b8152602082015167ffffffffffffffff81111561ac1d57600080fd5b61ac298682850161a440565b602083015250604082015167ffffffffffffffff81111561ac4957600080fd5b61ac558682850161a440565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161acc1816021850160208701619adf565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161aead816021850160208801619adf565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161aeea81602e840160208801619adf565b01602e01949350505050565b6000825161af08818460208701619adf565b9190910192915050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161ab59816029850160208701619adf565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161afce816022850160208701619adf565b9190910160220192915050565b818103818111156152c0576152c0619fc8565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161b02681600e850160208701619adf565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161b104816018850160208801619adf565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161b14181601c840160208801619adf565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161b247818460208701619adf565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b80820281158282048414176152c0576152c0619fc8565b6001815b600184111561b2c85780850481111561b2ac5761b2ac619fc8565b600184161561b2ba57908102905b60019390931c92800261b291565b935093915050565b60008261b2df575060016152c0565b8161b2ec575060006152c0565b816001811461b302576002811461b30c5761b328565b60019150506152c0565b60ff84111561b31d5761b31d619fc8565b50506001821b6152c0565b5060208310610133831016604e8410600b841016171561b34b575081810a6152c0565b61b358600019848461b28d565b806000190482111561b36c5761b36c619fc8565b029392505050565b60006153ce838361b2d0565b8181036000831280158383131683831282161715618c9957618c99619fc8565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161b3d881601c850160208701619adf565b91909101601c0192915050565b6000600019820361b3f85761b3f8619fc8565b5060010190565b60008161b40e5761b40e619fc8565b506000190190565b6000835161b428818460208801619adf565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161b462816001840160208801619adf565b0160010194935050505056fe608060405234801561001057600080fd5b506040516112a63803806112a683398101604081905261002f91610110565b604051806040016040528060048152602001635a65746160e01b815250604051806040016040528060048152602001635a45544160e01b815250816003908161007891906101e2565b50600461008582826101e2565b5050506001600160a01b03821615806100a557506001600160a01b038116155b156100c35760405163e6c4247b60e01b815260040160405180910390fd5b600680546001600160a01b039384166001600160a01b031991821617909155600780549290931691161790556102a0565b80516001600160a01b038116811461010b57600080fd5b919050565b6000806040838503121561012357600080fd5b61012c836100f4565b915061013a602084016100f4565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061016d57607f821691505b60208210810361018d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101dd57806000526020600020601f840160051c810160208510156101ba5750805b601f840160051c820191505b818110156101da57600081556001016101c6565b50505b505050565b81516001600160401b038111156101fb576101fb610143565b61020f816102098454610159565b84610193565b6020601f821160018114610243576000831561022b5750848201515b600019600385901b1c1916600184901b1784556101da565b600084815260208120601f198516915b828110156102735787850151825560209485019460019092019101610253565b50848210156102915786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610ff7806102af6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806342966c68116100b257806379cc679011610081578063a9059cbb11610066578063a9059cbb1461028e578063bff9662a146102a1578063dd62ed3e146102c157600080fd5b806379cc67901461027357806395d89b411461028657600080fd5b806342966c68146102025780635b1125911461021557806370a0823114610235578063779e3b631461026b57600080fd5b80631e458bee116100ee5780631e458bee1461018857806323b872dd1461019b578063313ce567146101ae578063328a01d0146101bd57600080fd5b806306fdde0314610120578063095ea7b31461013e57806315d57fd41461016157806318160ddd14610176575b600080fd5b610128610307565b6040516101359190610d97565b60405180910390f35b61015161014c366004610e2c565b610399565b6040519015158152602001610135565b61017461016f366004610e56565b6103b3565b005b6002545b604051908152602001610135565b610174610196366004610e89565b61057e565b6101516101a9366004610ebc565b610631565b60405160128152602001610135565b6007546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610135565b610174610210366004610ef9565b610655565b6006546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a610243366004610f12565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b610174610662565b610174610281366004610e2c565b610786565b610128610837565b61015161029c366004610e2c565b610846565b6005546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a6102cf366004610e56565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461031690610f34565b80601f016020809104026020016040519081016040528092919081815260200182805461034290610f34565b801561038f5780601f106103645761010080835404028352916020019161038f565b820191906000526020600020905b81548152906001019060200180831161037257829003601f168201915b5050505050905090565b6000336103a7818585610854565b60019150505b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff1633148015906103f3575060065473ffffffffffffffffffffffffffffffffffffffff163314155b15610431576040517fcdfcef970000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82161580610468575073ffffffffffffffffffffffffffffffffffffffff8116155b1561049f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006805473ffffffffffffffffffffffffffffffffffffffff8481167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316811790935560058054918516919092161790556040805133815260208101929092527fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff910160405180910390a16040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f1b9352454524a57a51f24f67dc66d898f616922cd1f7a12d73570ece12b1975c910160405180910390a15050565b60055473ffffffffffffffffffffffffffffffffffffffff1633146105d1576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6105db8383610866565b808373ffffffffffffffffffffffffffffffffffffffff167fc263b302aec62d29105026245f19e16f8e0137066ccd4a8bd941f716bd4096bb8460405161062491815260200190565b60405180910390a3505050565b60003361063f8582856108c6565b61064a858585610995565b506001949350505050565b61065f3382610a40565b50565b60075473ffffffffffffffffffffffffffffffffffffffff1633146106b5576040517fe700765e000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b60065473ffffffffffffffffffffffffffffffffffffffff16610704576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0910160405180910390a1565b60055473ffffffffffffffffffffffffffffffffffffffff1633146107d9576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6107e38282610a9c565b8173ffffffffffffffffffffffffffffffffffffffff167f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b18260405161082b91815260200190565b60405180910390a25050565b60606004805461031690610f34565b6000336103a7818585610995565b6108618383836001610ab1565b505050565b73ffffffffffffffffffffffffffffffffffffffff82166108b6576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c260008383610bf9565b5050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461098f5781811015610980576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401610428565b61098f84848484036000610ab1565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166109e5576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8216610a35576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b610861838383610bf9565b73ffffffffffffffffffffffffffffffffffffffff8216610a90576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c282600083610bf9565b610aa78233836108c6565b6108c28282610a40565b73ffffffffffffffffffffffffffffffffffffffff8416610b01576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8316610b51576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160209081526040808320938716835292905220829055801561098f578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610beb91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8316610c31578060026000828254610c269190610f87565b90915550610ce39050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610cb7576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810182905260448101839052606401610428565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff8216610d0c57600280548290039055610d38565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161062491815260200190565b602081526000825180602084015260005b81811015610dc55760208186018101516040868401015201610da8565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e2757600080fd5b919050565b60008060408385031215610e3f57600080fd5b610e4883610e03565b946020939093013593505050565b60008060408385031215610e6957600080fd5b610e7283610e03565b9150610e8060208401610e03565b90509250929050565b600080600060608486031215610e9e57600080fd5b610ea784610e03565b95602085013595506040909401359392505050565b600080600060608486031215610ed157600080fd5b610eda84610e03565b9250610ee860208501610e03565b929592945050506040919091013590565b600060208284031215610f0b57600080fd5b5035919050565b600060208284031215610f2457600080fd5b610f2d82610e03565b9392505050565b600181811c90821680610f4857607f821691505b602082108103610f81577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156103ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220e8a1f6a00b1b9c77fd6d8724e3829463441aaedd6b65190c6dc6c18bcc5810e364736f6c634300081a00336080604052348015600f57600080fd5b506001600055610e9e806100246000396000f3fe60806040526004361061006e5760003560e01c8063c51316911161004b578063c5131691146100d5578063c9028a36146100f5578063e04d4f9714610115578063f05b6abf1461012857005b8063357fc5a214610077578063676cc054146100975780636ed70169146100c057005b3661007557005b005b34801561008357600080fd5b506100756100923660046106ec565b610148565b6100aa6100a5366004610728565b6101de565b6040516100b79190610823565b60405180910390f35b3480156100cc57600080fd5b50610075610222565b3480156100e157600080fd5b506100756100f03660046106ec565b610257565b34801561010157600080fd5b50610075610110366004610836565b610332565b610075610123366004610996565b61036e565b34801561013457600080fd5b50610075610143366004610a82565b6103b2565b6101506103e7565b61017273ffffffffffffffffffffffffffffffffffffffff831633838661042a565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101d96001600055565b505050565b6040516060907f3658b46bab672c7672b69c2f0feda706eabdb7d2231421c96e9049b2db5e7eee90600090a1506040805160208101909152600081525b9392505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b61025f6103e7565b600061026c600285610b6c565b9050806000036102a8576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102ca73ffffffffffffffffffffffffffffffffffffffff841633848461042a565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101d96001600055565b7f689a5a5cb55e795ffe4cd8b419cd3bb0a3373974c54d25f64e734d7388b93e9b3382604051610363929190610bf0565b60405180910390a150565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa33348585856040516103a5959493929190610ce2565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103a59493929190610d6c565b600260005403610423576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526104bf9085906104c5565b50505050565b60006104e773ffffffffffffffffffffffffffffffffffffffff841683610560565b9050805160001415801561050c57508080602001905181019061050a9190610e2f565b155b156101d9576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061021b83836000846000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105939190610e4c565b60006040518083038185875af1925050503d80600081146105d0576040519150601f19603f3d011682016040523d82523d6000602084013e6105d5565b606091505b50915091506105e58683836105ef565b9695505050505050565b606082610604576105ff8261067e565b61021b565b8151158015610628575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610677576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610557565b508061021b565b80511561068e5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106e757600080fd5b919050565b60008060006060848603121561070157600080fd5b83359250610711602085016106c3565b915061071f604085016106c3565b90509250925092565b6000806000838503604081121561073e57600080fd5b602081121561074c57600080fd5b50839250602084013567ffffffffffffffff81111561076a57600080fd5b8401601f8101861361077b57600080fd5b803567ffffffffffffffff81111561079257600080fd5b8660208284010111156107a457600080fd5b939660209190910195509293505050565b60005b838110156107d05781810151838201526020016107b8565b50506000910152565b600081518084526107f18160208601602086016107b5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061021b60208301846107d9565b60006020828403121561084857600080fd5b813567ffffffffffffffff81111561085f57600080fd5b82016080818503121561021b57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156108e7576108e7610871565b604052919050565b600082601f83011261090057600080fd5b813567ffffffffffffffff81111561091a5761091a610871565b61094b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016108a0565b81815284602083860101111561096057600080fd5b816020850160208301376000918101602001919091529392505050565b80151581146106c057600080fd5b80356106e78161097d565b6000806000606084860312156109ab57600080fd5b833567ffffffffffffffff8111156109c257600080fd5b6109ce868287016108ef565b9350506020840135915060408401356109e68161097d565b809150509250925092565b600067ffffffffffffffff821115610a0b57610a0b610871565b5060051b60200190565b600082601f830112610a2657600080fd5b8135610a39610a34826109f1565b6108a0565b8082825260208201915060208360051b860101925085831115610a5b57600080fd5b602085015b83811015610a78578035835260209283019201610a60565b5095945050505050565b600080600060608486031215610a9757600080fd5b833567ffffffffffffffff811115610aae57600080fd5b8401601f81018613610abf57600080fd5b8035610acd610a34826109f1565b8082825260208201915060208360051b850101925088831115610aef57600080fd5b602084015b83811015610b3157803567ffffffffffffffff811115610b1357600080fd5b610b228b6020838901016108ef565b84525060209283019201610af4565b509550505050602084013567ffffffffffffffff811115610b5157600080fd5b610b5d86828701610a15565b92505061071f6040850161098b565b600082610ba2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015273ffffffffffffffffffffffffffffffffffffffff610c2e836106c3565b16604082015273ffffffffffffffffffffffffffffffffffffffff610c55602084016106c3565b166060820152600080604084013590508060808401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610ca157600080fd5b830160208101903567ffffffffffffffff811115610cbe57600080fd5b803603821315610ccd57600080fd5b608060a08501526105e560c085018284610ba7565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610d1760a08301866107d9565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610d62578151865260209586019590910190600101610d44565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610dff577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610dea8583516107d9565b94506020938401939190910190600101610db0565b505050508281036040840152610e158186610d30565b915050610e26606083018415159052565b95945050505050565b600060208284031215610e4157600080fd5b815161021b8161097d565b60008251610e5e8184602087016107b5565b919091019291505056fea2646970667358221220dbbcdb2ae8ea201fd0567f815d9a6ce082b3a1b6ed3f6fce312e955f9aa11e1364736f6c634300081a00335a657461436f6e6e6563746f724e6f6e4e617469766555706772616465546573742e736f6ca264697066735822122081590b69862a27f6c7c1268887c19cd631fe2d1741a77549a61063285e7395ee64736f6c634300081a0033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061d6318061003c6000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c8063aaf7419211610104578063d509b16c116100a2578063e63ab1e911610071578063e63ab1e914610357578063fa7626d41461037e578063fdca90521461038b578063fe574f841461039357600080fd5b8063d509b16c14610337578063dcf7d0371461033f578063de1cb76c14610347578063e20c9f711461034f57600080fd5b8063b5508aa9116100de578063b5508aa914610307578063ba414fa61461030f578063c190997214610327578063ccb0e3f21461032f57600080fd5b8063aaf74192146102ef578063af298bb1146102f7578063b0464fdc146102ff57600080fd5b8063493465581161017c57806385226c811161014b57806385226c811461026957806385f438c11461027e578063916a17c6146102b3578063a783c789146102c857600080fd5b8063493465581461023c57806366d9a9a0146102445780637db20efb14610259578063828320141461026157600080fd5b80632ade3880116101b85780632ade38801461020f5780633cba0107146102245780633e5e3c231461022c5780633f7286f41461023457600080fd5b80630a9254e4146101df5780631ed7831c146101e95780632506ef0314610207575b600080fd5b6101e761039b565b005b6101f1610b7e565b6040516101fe9190619a93565b60405180910390f35b6101e7610be0565b610217610e94565b6040516101fe9190619b2f565b6101e7610fd6565b6101f16117ad565b6101f161180d565b6101e761186d565b61024c611e4d565b6040516101fe9190619c95565b6101e7611fcf565b6101e761226e565b6102716124ce565b6040516101fe9190619d33565b6102a57f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b6040519081526020016101fe565b6102bb61259e565b6040516101fe9190619daa565b6102a57f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b6101e7612699565b6101e7612914565b6102bb612d5e565b610271612e59565b610317612f29565b60405190151581526020016101fe565b6101e7612ffd565b6101e761326d565b6101e7613d9a565b6101e76140ed565b6101e7614729565b6101f1614e56565b6102a57f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b601f546103179060ff1681565b6101e7614eb6565b6101e76150b7565b602480547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602580548216611234179055602680548216615678908117909155602780549092166198761790915560405181906103ff906199c0565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015610432573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600e81527f4761746577617945564d2e736f6c000000000000000000000000000000000000602082015260265460248054935191861690820152604481019390935292166064820152600091610524916084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc0c53b8b000000000000000000000000000000000000000000000000000000001790526152a7565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0384811682029290921792839055604080518082018252601081527f4552433230437573746f64792e736f6c00000000000000000000000000000000602082015260265460248054935194909604851695840195909552938316604483015290911660648201529192506105ca916084016104c7565b602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383811691909117909155604080518082018252601a81527f5a657461436f6e6e6563746f724e6f6e4e61746976652e736f6c0000000000006020820152601f546023546026546024805495516101009094048716908401529085166044830152841660648201529190921660848201529192506106cf9160a40160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff8c8765e000000000000000000000000000000000000000000000000000000001790526152a7565b602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038381169190911790915560265460405163ca669fa760e01b815291166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561075a57600080fd5b505af115801561076e573d6000803e3d6000fd5b50506023546026546022546040517f15d57fd40000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082166024820152911692506315d57fd49150604401600060405180830381600087803b1580156107df57600080fd5b505af11580156107f3573d6000803e3d6000fd5b50505050604051610803906199cd565b604051809103906000f08015801561081f573d6000803e3d6000fd5b50602080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556026546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b1580156108cb57600080fd5b505af11580156108df573d6000803e3d6000fd5b5050602480546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d93506306447d56925001600060405180830381600087803b15801561095457600080fd5b505af1158015610968573d6000803e3d6000fd5b5050601f546021546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261010090920416925063ae7a3a6f9150602401600060405180830381600087803b1580156109d357600080fd5b505af11580156109e7573d6000803e3d6000fd5b5050601f546022546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526101009092041692506310188aef9150602401600060405180830381600087803b158015610a5257600080fd5b505af1158015610a66573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610ac857600080fd5b505af1158015610adc573d6000803e3d6000fd5b5050604080516080810182526024546001600160a01b039081168252602354811660208084019182526001848601908152855191820190955260008152606084018190528351602880549185167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316178155925160298054919095169116179092559251602a55909350909150602b90610b789082619f09565b50505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610bd657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610bb8575b5050505050905090565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a09060009060250160408051808303601f190181529082905260265463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015610c7b57600080fd5b505af1158015610c8f573d6000803e3d6000fd5b50506022546040517f6f8b44b0000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b039091169250636f8b44b09150602401600060405180830381600087803b158015610cf257600080fd5b505af1158015610d06573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015610d6357600080fd5b505af1158015610d77573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fc30436e9000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015610e0057600080fd5b505af1158015610e14573d6000803e3d6000fd5b50506022546020546001600160a01b039182169350636f8728ad925016610e3c856001619ff7565b8460286040518563ffffffff1660e01b8152600401610e5e949392919061a0e7565b600060405180830381600087803b158015610e7857600080fd5b505af1158015610e8c573d6000803e3d6000fd5b505050505050565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015610fcd57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610fb6578382906000526020600020018054610f2990619e70565b80601f0160208091040260200160405190810160405280929190818152602001828054610f5590619e70565b8015610fa25780601f10610f7757610100808354040283529160200191610fa2565b820191906000526020600020905b815481529060010190602001808311610f8557829003601f168201915b505050505081526020019060010190610f0a565b505050508152505081526020019060010190610eb8565b50505050905090565b602354602554604051620186a0602482018190526001600160a01b039384166044830152929091166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a20000000000000000000000000000000000000000000000000000000017905260235460255491516370a0823160e01b81526001600160a01b0392831660048201529293506000929116906370a0823190602401602060405180830381865afa1580156110b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d8919061a128565b90506110e58160006152c6565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611136573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115a919061a128565b90506111678160006152c6565b601f546040516101009091046001600160a01b03166024820152604481018690526064810185905260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260235490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391611252916001600160a01b039190911690600090869060040161a141565b600060405180830381600087803b15801561126c57600080fd5b505af1158015611280573d6000803e3d6000fd5b50506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561131257600080fd5b505af1158015611326573d6000803e3d6000fd5b5050601f54602354602554604080516101009094046001600160a01b039081168552602085018d9052928316908401521660608201527f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609250608001905060405180910390a16022546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561141a57600080fd5b505af115801561142e573d6000803e3d6000fd5b50506020546040516001600160a01b0390911692507f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d9150611473908990889061a169565b60405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156114d457600080fd5b505af11580156114e8573d6000803e3d6000fd5b50506022546020546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef935061154092909116908a9089908b9060040161a182565b600060405180830381600087803b15801561155a57600080fd5b505af115801561156e573d6000803e3d6000fd5b50506023546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156115c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e5919061a128565b90506115f181886152c6565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611642573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611666919061a128565b90506116738160006152c6565b602354601f546020546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526101009092046001600160a01b0390811660048401529081166024830152600092169063dd62ed3e90604401602060405180830381865afa1580156116eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170f919061a128565b905061171c8160006152c6565b602354601f546040516370a0823160e01b81526101009091046001600160a01b03908116600483015260009216906370a0823190602401602060405180830381865afa158015611770573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611794919061a128565b90506117a18160006152c6565b50505050505050505050565b60606018805480602002602001604051908101604052809291908181526020018280548015610bd6576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610bb8575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610bd6576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610bb8575050505050905090565b6040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6ed701690000000000000000000000000000000000000000000000000000000017905260235460255493516370a0823160e01b8152620186a0946000949385936001600160a01b03908116936370a082319361190f93921691016001600160a01b0391909116815260200190565b602060405180830381865afa15801561192c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611950919061a128565b905061195d8160006152c6565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156119ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d2919061a128565b90506119df8160006152c6565b601f546040516101009091046001600160a01b03166024820152604481018690526064810185905260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260235490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391611aca916001600160a01b039190911690600090869060040161a141565b600060405180830381600087803b158015611ae457600080fd5b505af1158015611af8573d6000803e3d6000fd5b50506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015611b8a57600080fd5b505af1158015611b9e573d6000803e3d6000fd5b5050601f546040516101009091046001600160a01b031681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09250602001905060405180910390a16022546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611c7557600080fd5b505af1158015611c89573d6000803e3d6000fd5b50506020546040516001600160a01b0390911692507f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d9150611cce908990889061a169565b60405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611d2f57600080fd5b505af1158015611d43573d6000803e3d6000fd5b50506022546020546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350611d9b92909116908a9089908b9060040161a182565b600060405180830381600087803b158015611db557600080fd5b505af1158015611dc9573d6000803e3d6000fd5b50506023546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611e1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e40919061a128565b90506115f18160006152c6565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610fcd5783829060005260206000209060020201604051806040016040529081600082018054611ea490619e70565b80601f0160208091040260200160405190810160405280929190818152602001828054611ed090619e70565b8015611f1d5780601f10611ef257610100808354040283529160200191611f1d565b820191906000526020600020905b815481529060010190602001808311611f0057829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611fb757602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611f645790505b50505050508152505081526020019060010190611e71565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152620186a090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561202d57600080fd5b505af1158015612041573d6000803e3d6000fd5b50506022546040517f6f8b44b0000000000000000000000000000000000000000000000000000000008152600481018590526001600160a01b039091169250636f8b44b09150602401600060405180830381600087803b1580156120a457600080fd5b505af11580156120b8573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561211557600080fd5b505af1158015612129573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fc30436e9000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156121b257600080fd5b505af11580156121c6573d6000803e3d6000fd5b50506022546020546001600160a01b03918216935063106e62909250166121ee846001619ff7565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039092166004830152602482015260006044820152606401600060405180830381600087803b15801561225357600080fd5b505af1158015612267573d6000803e3d6000fd5b5050505050565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f19018152908290526024805463ca669fa760e01b84526001600160a01b03166004840152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa79101600060405180830381600087803b15801561230b57600080fd5b505af115801561231f573d6000803e3d6000fd5b505060248054604080516001600160a01b03909216928201929092527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448083019190915282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f0000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061240e919060040161a1bb565b600060405180830381600087803b15801561242857600080fd5b505af115801561243c573d6000803e3d6000fd5b50506022546020546040517f6f8728ad0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450636f8728ad9350612497929091169087908690889060289060040161a1ce565b600060405180830381600087803b1580156124b157600080fd5b505af11580156124c5573d6000803e3d6000fd5b50505050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610fcd57838290600052602060002001805461251190619e70565b80601f016020809104026020016040519081016040528092919081815260200182805461253d90619e70565b801561258a5780601f1061255f5761010080835404028352916020019161258a565b820191906000526020600020905b81548152906001019060200180831161256d57829003601f168201915b5050505050815260200190600101906124f2565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015610fcd5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561268157602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161262e5790505b505050505081525050815260200190600101906125c2565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a09060009060250160408051808303601f190181529082905260265463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561273457600080fd5b505af1158015612748573d6000803e3d6000fd5b50506022546040517f6f8b44b0000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b039091169250636f8b44b09150602401600060405180830381600087803b1580156127ab57600080fd5b505af11580156127bf573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561281c57600080fd5b505af1158015612830573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fc30436e9000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156128b957600080fd5b505af11580156128cd573d6000803e3d6000fd5b50506022546020546001600160a01b039182169350635e3e9fef9250166128f5856001619ff7565b846040518463ffffffff1660e01b8152600401610e5e9392919061a21a565b6022546040805160608101909152602580825261295e926001600160a01b0316919061d5d760208301396040805160208101909152600081526024546001600160a01b0316615345565b6022546023546025546040516370a0823160e01b81526001600160a01b03918216600482015292811692620186a09260009216906370a0823190602401602060405180830381865afa1580156129b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129dc919061a128565b90506129e98160006152c6565b6025546040516001600160a01b0390911660248201526044810183905260006064820181905290819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260235490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391612ad2916001600160a01b039190911690600090869060040161a141565b600060405180830381600087803b158015612aec57600080fd5b505af1158015612b00573d6000803e3d6000fd5b50506040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b0388166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015612b8e57600080fd5b505af1158015612ba2573d6000803e3d6000fd5b50506025546040518781526001600160a01b0390911692507f3e35ef4326151011878c9e8e968a0f3913fe98ca68f72a1e0c2e9be13ffb3ee9915060200160405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612c4157600080fd5b505af1158015612c55573d6000803e3d6000fd5b50506025546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810188905260448101869052908816925063106e62909150606401600060405180830381600087803b158015612cc757600080fd5b505af1158015612cdb573d6000803e3d6000fd5b50506023546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015612d2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d52919061a128565b9050610e8c81866152c6565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015610fcd5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015612e4157602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411612dee5790505b50505050508152505081526020019060010190612d82565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610fcd578382906000526020600020018054612e9c90619e70565b80601f0160208091040260200160405190810160405280929190818152602001828054612ec890619e70565b8015612f155780601f10612eea57610100808354040283529160200191612f15565b820191906000526020600020905b815481529060010190602001808311612ef857829003601f168201915b505050505081526020019060010190612e7d565b60085460009060ff1615612f41575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612fd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ff6919061a128565b1415905090565b602354602554604051620186a0602482018190526001600160a01b039384166044830152929091166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a20000000000000000000000000000000000000000000000000000000017905260248054915163ca669fa760e01b81526001600160a01b039092166004830152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa79101600060405180830381600087803b1580156130e457600080fd5b505af11580156130f8573d6000803e3d6000fd5b505060248054604080516001600160a01b03909216928201929092527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448083019190915282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f0000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506131e7919060040161a1bb565b600060405180830381600087803b15801561320157600080fd5b505af1158015613215573d6000803e3d6000fd5b50506022546020546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350612497929091169087908690889060040161a182565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152620186a090600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156132ce57600080fd5b505af11580156132e2573d6000803e3d6000fd5b5050602754604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506133cd919060040161a1bb565b600060405180830381600087803b1580156133e757600080fd5b505af11580156133fb573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561344f57600080fd5b505af1158015613463573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156134c057600080fd5b505af11580156134d4573d6000803e3d6000fd5b5050602754604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506135bf919060040161a1bb565b600060405180830381600087803b1580156135d957600080fd5b505af11580156135ed573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561364157600080fd5b505af1158015613655573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156136b257600080fd5b505af11580156136c6573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561371a57600080fd5b505af115801561372e573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd93c0665000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156137b757600080fd5b505af11580156137cb573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561382857600080fd5b505af115801561383c573d6000803e3d6000fd5b50506022546025546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101879052604481018690529116925063106e62909150606401600060405180830381600087803b1580156138b057600080fd5b505af11580156138c4573d6000803e3d6000fd5b50506024805460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063ca669fa7925001600060405180830381600087803b15801561392057600080fd5b505af1158015613934573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561398857600080fd5b505af115801561399c573d6000803e3d6000fd5b50506023546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156139ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a13919061a128565b9050613a208160006152c6565b6025546040516001600160a01b039091166024820152604481018490526064810183905260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260235490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391613b07916001600160a01b039190911690600090869060040161a141565b600060405180830381600087803b158015613b2157600080fd5b505af1158015613b35573d6000803e3d6000fd5b50506022546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015613bc757600080fd5b505af1158015613bdb573d6000803e3d6000fd5b50506025546040518781526001600160a01b0390911692507f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5915060200160405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613c7a57600080fd5b505af1158015613c8e573d6000803e3d6000fd5b50506022546025546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101899052604481018890529116925063106e629091506064015b600060405180830381600087803b158015613d0357600080fd5b505af1158015613d17573d6000803e3d6000fd5b50506023546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015613d6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d8e919061a128565b905061226781866152c6565b6023546025546040516370a0823160e01b81526001600160a01b039182166004820152620186a09260009216906370a0823190602401602060405180830381865afa158015613ded573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e11919061a128565b9050613e1e8160006152c6565b6025546040516001600160a01b0390911660248201526044810183905260006064820181905290819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260235490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391613f07916001600160a01b039190911690600090869060040161a141565b600060405180830381600087803b158015613f2157600080fd5b505af1158015613f35573d6000803e3d6000fd5b50506022546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015613fc757600080fd5b505af1158015613fdb573d6000803e3d6000fd5b50506025546040518781526001600160a01b0390911692507f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5915060200160405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561407a57600080fd5b505af115801561408e573d6000803e3d6000fd5b50506022546025546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101899052604481018790529116925063106e62909150606401613ce9565b602354602554604051620186a0602482018190526001600160a01b039384166044830152929091166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc51316910000000000000000000000000000000000000000000000000000000017905260235460255491516370a0823160e01b81526001600160a01b0392831660048201529293506000929116906370a0823190602401602060405180830381865afa1580156141cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141ef919061a128565b90506141fc8160006152c6565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801561424d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614271919061a128565b905061427e8160006152c6565b601f546040516101009091046001600160a01b03166024820152604481018690526064810185905260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e458bee0000000000000000000000000000000000000000000000000000000017905260235490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391614369916001600160a01b039190911690600090869060040161a141565b600060405180830381600087803b15801561438357600080fd5b505af1158015614397573d6000803e3d6000fd5b50506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561442957600080fd5b505af115801561443d573d6000803e3d6000fd5b5050601f547f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60925061010090046001600160a01b0316905061448060028961a253565b602354602554604080516001600160a01b03958616815260208101949094529184168383015292909216606082015290519081900360800190a16022546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561454857600080fd5b505af115801561455c573d6000803e3d6000fd5b50506020546040516001600160a01b0390911692507f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d91506145a1908990889061a169565b60405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561460257600080fd5b505af1158015614616573d6000803e3d6000fd5b50506022546020546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef935061466e92909116908a9089908b9060040161a182565b600060405180830381600087803b15801561468857600080fd5b505af115801561469c573d6000803e3d6000fd5b50506023546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156146ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614713919061a128565b90506115f18161472460028a61a253565b6152c6565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f19018152908290526023546020546370a0823160e01b84526001600160a01b0390811660048501529193506000929116906370a0823190602401602060405180830381865afa1580156147bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147e3919061a128565b90506147f08160006152c6565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015614841573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614865919061a128565b601f54604080516001600160a01b036101009093048316602482015260448101899052606480820189905282518083039091018152608490910182526020810180517f1e458bee000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911617905260235491517ff30c7ba300000000000000000000000000000000000000000000000000000000815293945092737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba39261494792911690600090869060040161a141565b600060405180830381600087803b15801561496157600080fd5b505af1158015614975573d6000803e3d6000fd5b50506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015614a0757600080fd5b505af1158015614a1b573d6000803e3d6000fd5b505050507f689a5a5cb55e795ffe4cd8b419cd3bb0a3373974c54d25f64e734d7388b93e9b601f60019054906101000a90046001600160a01b03166028604051614a6692919061a28e565b60405180910390a1601f546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526101009091046001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015614b0057600080fd5b505af1158015614b14573d6000803e3d6000fd5b50506023546020546040516001600160a01b039283169450911691507fde7603a6ed5d07c9f43597ccfe9043d15b66d3284f0de321f5cdf56329e6e03590614b62908a90899060289061a2b0565b60405180910390a36022546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015614bf857600080fd5b505af1158015614c0c573d6000803e3d6000fd5b50506020546040516001600160a01b0390911692507f5272d2fee39bff41b2e763562526315906046373ce08a7bacf76c3080d731ff09150614c54908990889060289061a2b0565b60405180910390a260265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614cb557600080fd5b505af1158015614cc9573d6000803e3d6000fd5b50506022546020546040517f6f8728ad0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450636f8728ad9350614d2492909116908a9089908b9060289060040161a1ce565b600060405180830381600087803b158015614d3e57600080fd5b505af1158015614d52573d6000803e3d6000fd5b50506023546020546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015614da5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614dc9919061a128565b9050614dd581886152c6565b6023546022546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015614e26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614e4a919061a128565b905061167381856152c6565b60606015805480602002602001604051908101604052809291908181526020018280548015610bd6576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610bb8575050505050905090565b6024805460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa79101600060405180830381600087803b158015614f0e57600080fd5b505af1158015614f22573d6000803e3d6000fd5b505060248054604080516001600160a01b03909216928201929092527f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb60448083019190915282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f0000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250615011919060040161a1bb565b600060405180830381600087803b15801561502b57600080fd5b505af115801561503f573d6000803e3d6000fd5b50506022546040517f6f8b44b000000000000000000000000000000000000000000000000000000000815261271060048201526001600160a01b039091169250636f8b44b09150602401600060405180830381600087803b1580156150a357600080fd5b505af1158015610b78573d6000803e3d6000fd5b6024805460405163ca669fa760e01b81526001600160a01b039091166004820152620186a091600091737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa79101600060405180830381600087803b15801561511757600080fd5b505af115801561512b573d6000803e3d6000fd5b505060248054604080516001600160a01b03909216928201929092527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e460448083019190915282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f0000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061521a919060040161a1bb565b600060405180830381600087803b15801561523457600080fd5b505af1158015615248573d6000803e3d6000fd5b50506022546025546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101879052604481018690529116925063106e62909150606401610e5e565b60006152b16199da565b6152bc84848361535a565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b15801561533157600080fd5b505afa158015610e8c573d6000803e3d6000fd5b61534d6199da565b61226785858584866153d5565b60008061536785846154d5565b90506153ca6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f787900000081525082866040516020016153b592919061a2db565b604051602081830303815290604052856154e1565b9150505b9392505050565b6040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201528190737109709ecfa91a80626ff3989d68f67f5b1dd12d9081906306447d5690602401600060405180830381600087803b15801561544757600080fd5b505af1925050508015615458575060015b61546d576154688787878761550f565b6124c5565b6154798787878761550f565b806001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156154b457600080fd5b505af11580156154c8573d6000803e3d6000fd5b5050505050505050505050565b60006153ce8383615528565b60c08101515160009015615505576154fe84848460c00151615543565b90506153ce565b6154fe84846156e9565b600061551b84836157d4565b90506122678582856157e0565b60006155348383615baa565b6153ce838360200151846154e1565b60008061554e615bba565b9050600061555c8683615c8d565b905060006155738260600151836020015185616133565b9050600061558383838989616345565b90506000615590826171c2565b602081015181519192509060030b15615603578982604001516040516020016155ba92919061a2fd565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526155fa9160040161a1bb565b60405180910390fd5b60006156466040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001617391565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d9061569990849060040161a1bb565b602060405180830381865afa1580156156b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906156da919061a37e565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc9259061573e90879060040161a1bb565b600060405180830381865afa15801561575b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615783919081019061a460565b905060006157b1828560405160200161579d92919061a495565b604051602081830303815290604052617591565b90506001600160a01b0381166152bc5784846040516020016155ba92919061a4c4565b600061553483836175a4565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201527fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61036024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90600090829063667f9d7090604401602060405180830381865afa15801561587c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906158a0919061a128565b905080615a475760006158b2866175b0565b604080518082018252600581527f352e302e300000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061593d905b604080518082018252600080825260209182015281518083019092528451825280850190820152906176a8565b80615949575060008451115b156159cc576040517f4f1ef2860000000000000000000000000000000000000000000000000000000081526001600160a01b03871690634f1ef28690615995908890889060040161a2db565b600060405180830381600087803b1580156159af57600080fd5b505af11580156159c3573d6000803e3d6000fd5b50505050615a41565b6040517f3659cfe60000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152871690633659cfe690602401600060405180830381600087803b158015615a2857600080fd5b505af1158015615a3c573d6000803e3d6000fd5b505050505b50612267565b806000615a53826175b0565b604080518082018252600581527f352e302e3000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615ab590615910565b80615ac1575060008551115b15615b46576040517f9623609d0000000000000000000000000000000000000000000000000000000081526001600160a01b03831690639623609d90615b0f908a908a908a9060040161a56f565b600060405180830381600087803b158015615b2957600080fd5b505af1158015615b3d573d6000803e3d6000fd5b505050506124c5565b6040517f99a88ec40000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015287811660248301528316906399a88ec490604401600060405180830381600087803b1580156154b457600080fd5b615bb6828260006176bc565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90615c4190849060040161a5a0565b600060405180830381865afa158015615c5e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615c86919081019061a5e7565b9250505090565b615cbf6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050615d0a6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b615d13856177bf565b60208201526000615d2386617ba4565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015615d65573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615d8d919081019061a5e7565b86838560200151604051602001615da7949392919061a630565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190615dff90859060040161a1bb565b600060405180830381865afa158015615e1c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615e44919081019061a5e7565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690615e8c90849060040161a734565b602060405180830381865afa158015615ea9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615ecd919061a786565b615ee257816040516020016155ba919061a7a8565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890615f2790849060040161a83a565b600060405180830381865afa158015615f44573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615f6c919081019061a5e7565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690615fb390849060040161a88c565b602060405180830381865afa158015615fd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615ff4919061a786565b15616089576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061603e90849060040161a88c565b600060405180830381865afa15801561605b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616083919081019061a5e7565b60408501525b846001600160a01b03166349c4fac88286600001516040516020016160ae919061a8de565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016160da92919061a94a565b600060405180830381865afa1580156160f7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261611f919081019061a5e7565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b606081526020019060019003908161614f5790505090506040518060400160405280600481526020017f6772657000000000000000000000000000000000000000000000000000000000815250816000815181106161af576161af61a96f565b60200260200101819052506040518060400160405280600381526020017f2d726c0000000000000000000000000000000000000000000000000000000000815250816001815181106162035761620361a96f565b60200260200101819052508460405160200161621f919061a99e565b604051602081830303815290604052816002815181106162415761624161a96f565b60200260200101819052508260405160200161625d919061aa0a565b6040516020818303038152906040528160038151811061627f5761627f61a96f565b60200260200101819052506000616295826171c2565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506163269060408051808201825260008082526020918201528151808301909252845182528085019082015290617e27565b61633b57856040516020016155ba919061aa4b565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015616395565b511590565b61650957826020015115616451576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a4016155fa565b8260c0015115616509576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a4016155fa565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161652257905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061657d9061aadc565b935060ff16815181106165925761659261a96f565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016165e3919061aafb565b6040516020818303038152906040528282806165fe9061aadc565b935060ff16815181106166135761661361a96f565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806166609061aadc565b935060ff16815181106166755761667561a96f565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806166c29061aadc565b935060ff16815181106166d7576166d761a96f565b602002602001018190525087602001518282806166f39061aadc565b935060ff16815181106167085761670861a96f565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806167559061aadc565b935060ff168151811061676a5761676a61a96f565b6020908102919091010152875182826167828161aadc565b935060ff16815181106167975761679761a96f565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806167e49061aadc565b935060ff16815181106167f9576167f961a96f565b602002602001018190525061680d46617e88565b82826168188161aadc565b935060ff168151811061682d5761682d61a96f565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c65000000000000000000000000000000000081525082828061687a9061aadc565b935060ff168151811061688f5761688f61a96f565b6020026020010181905250868282806168a79061aadc565b935060ff16815181106168bc576168bc61a96f565b60209081029190910101528551156169e35760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261690d8161aadc565b935060ff16815181106169225761692261a96f565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d9061697290899060040161a1bb565b600060405180830381865afa15801561698f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526169b7919081019061a5e7565b82826169c28161aadc565b935060ff16815181106169d7576169d761a96f565b60200260200101819052505b846020015115616ab35760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282616a2c8161aadc565b935060ff1681518110616a4157616a4161a96f565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280616a8e9061aadc565b935060ff1681518110616aa357616aa361a96f565b6020026020010181905250616c7a565b616aeb6163908660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b616b7e5760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282616b2e8161aadc565b935060ff1681518110616b4357616b4361a96f565b60200260200101819052508460a00151604051602001616b63919061a99e565b604051602081830303815290604052828280616a8e9061aadc565b8460c00151158015616bc1575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152616bbf90511590565b155b15616c7a5760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282616c058161aadc565b935060ff1681518110616c1a57616c1a61a96f565b6020026020010181905250616c2e88617f28565b604051602001616c3e919061a99e565b604051602081830303815290604052828280616c599061aadc565b935060ff1681518110616c6e57616c6e61a96f565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152616cae90511590565b616d435760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282616cf18161aadc565b935060ff1681518110616d0657616d0661a96f565b60200260200101819052508460400151828280616d229061aadc565b935060ff1681518110616d3757616d3761a96f565b60200260200101819052505b606085015115616e645760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282616d8c8161aadc565b935060ff1681518110616da157616da161a96f565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015616e10573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616e38919081019061a5e7565b8282616e438161aadc565b935060ff1681518110616e5857616e5861a96f565b60200260200101819052505b60e08501515115616f0b5760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282616eae8161aadc565b935060ff1681518110616ec357616ec361a96f565b6020026020010181905250616edf8560e0015160000151617e88565b8282616eea8161aadc565b935060ff1681518110616eff57616eff61a96f565b60200260200101819052505b60e08501516020015115616fb55760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282616f588161aadc565b935060ff1681518110616f6d57616f6d61a96f565b6020026020010181905250616f898560e0015160200151617e88565b8282616f948161aadc565b935060ff1681518110616fa957616fa961a96f565b60200260200101819052505b60e0850151604001511561705f5760408051808201909152600e81527f2d2d6d6178466565506572476173000000000000000000000000000000000000602082015282826170028161aadc565b935060ff16815181106170175761701761a96f565b60200260200101819052506170338560e0015160400151617e88565b828261703e8161aadc565b935060ff16815181106170535761705361a96f565b60200260200101819052505b60e085015160600151156171095760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826170ac8161aadc565b935060ff16815181106170c1576170c161a96f565b60200260200101819052506170dd8560e0015160600151617e88565b82826170e88161aadc565b935060ff16815181106170fd576170fd61a96f565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561712757617127619e41565b60405190808252806020026020018201604052801561715a57816020015b60608152602001906001900390816171455790505b50905060005b8260ff168160ff1610156171b357838160ff16815181106171835761718361a96f565b6020026020010151828260ff16815181106171a0576171a061a96f565b6020908102919091010152600101617160565b5093505050505b949350505050565b6171e96040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c9161726f9186910161ab66565b600060405180830381865afa15801561728c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526172b4919081019061a5e7565b905060006172c28683618a17565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b81526004016172f29190619d33565b6000604051808303816000875af1158015617311573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617339919081019061abad565b805190915060030b158015906173525750602081015151155b80156173615750604081015151155b1561633b57816000815181106173795761737961a96f565b60200260200101516040516020016155ba919061ac63565b606060006173c68560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506173fd9082905b90618b6c565b1561755a57600061747a826174748461746e6174408a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90618b93565b90618bf5565b604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506174de908290618b6c565b1561754857604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617545905b8290618c7a565b90505b61755181618ca0565b925050506153ce565b82156175735784846040516020016155ba92919061ae4f565b50506040805160208101909152600081526153ce565b509392505050565b6000808251602084016000f09392505050565b615bb6828260016176bc565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fad3cb1cc00000000000000000000000000000000000000000000000000000000179052905160609160009182916001600160a01b03861691617625919061aef6565b600060405180830381855afa9150503d8060008114617660576040519150601f19603f3d011682016040523d82523d6000602084013e617665565b606091505b5091509150818015617678575060208151115b1561769157808060200190518101906171ba919061a5e7565b505060408051602081019091526000815292915050565b60006176b48383618d09565b159392505050565b8160a00151156176cb57505050565b60006176d8848484618de4565b905060006176e5826171c2565b602081015181519192509060030b1580156177815750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617781906040805180820182526000808252602091820152815180830190925284518252808501908201526173f7565b1561778e57505050505050565b604082015151156177ae5781604001516040516020016155ba919061af12565b806040516020016155ba919061af70565b606060006177f48360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150617859905b8290617e27565b156178c857604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526153ce906178c390839061937f565b618ca0565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261792a905b8290619409565b6001036179f757604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526179909061753e565b50604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526153ce906178c3905b8390618c7a565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617a5690617852565b15617b8d57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290617abe9083906194a3565b905060008160018351617ad1919061afdb565b81518110617ae157617ae161a96f565b60200260200101519050617b846178c3617b576040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529061937f565b95945050505050565b826040516020016155ba919061afee565b50919050565b60606000617bd98360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150617c3b90617852565b15617c49576153ce81618ca0565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617ca890617923565b600103617d1257604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526153ce906178c3906179f0565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617d7190617852565b15617b8d57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290617dd99083906194a3565b9050600181511115617e15578060028251617df4919061afdb565b81518110617e0457617e0461a96f565b602002602001015192505050919050565b50826040516020016155ba919061afee565b805182516000911115617e3c575060006152c0565b81518351602085015160009291617e5291619ff7565b617e5c919061afdb565b905082602001518103617e735760019150506152c0565b82516020840151819020912014905092915050565b60606000617e9583619548565b600101905060008167ffffffffffffffff811115617eb557617eb5619e41565b6040519080825280601f01601f191660200182016040528015617edf576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084617ee957509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091617fb4905b82906176a8565b15617ff457505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261805390617fad565b1561809357505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d49540000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526180f290617fad565b1561813257505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261819190617fad565b806181f65750604080518082018252601081527f47504c2d322e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526181f690617fad565b1561823657505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261829590617fad565b806182fa5750604080518082018252601081527f47504c2d332e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526182fa90617fad565b1561833a57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261839990617fad565b806183fe5750604080518082018252601181527f4c47504c2d322e312d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526183fe90617fad565b1561843e57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261849d90617fad565b806185025750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261850290617fad565b1561854257505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526185a190617fad565b156185e157505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261864090617fad565b1561868057505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526186df90617fad565b1561871f57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261877e90617fad565b156187be57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261881d90617fad565b1561885d57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526188bc90617fad565b806189215750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261892190617fad565b1561896157505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e31000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526189c090617fad565b15618a0057505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b604080840151845191516155ba929060200161b0cc565b60608060005b8451811015618aa25781858281518110618a3957618a3961a96f565b6020026020010151604051602001618a5292919061a495565b604051602081830303815290604052915060018551618a71919061afdb565b8114618a9a5781604051602001618a88919061b235565b60405160208183030381529060405291505b600101618a1d565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081618abb5790505090508381600081518110618ae657618ae661a96f565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110618b3a57618b3a61a96f565b60200260200101819052508181600281518110618b5957618b5961a96f565b6020908102919091010152949350505050565b6020808301518351835192840151600093618b8a929184919061962a565b14159392505050565b60408051808201909152600080825260208201526000618bc5846000015185602001518560000151866020015161973b565b9050836020015181618bd7919061afdb565b84518590618be690839061afdb565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015618c1a5750816152c0565b6020808301519084015160019114618c415750815160208481015190840151829020919020145b8015618c7257825184518590618c5890839061afdb565b9052508251602085018051618c6e908390619ff7565b9052505b509192915050565b6040805180820190915260008082526020820152618c9983838361985b565b5092915050565b60606000826000015167ffffffffffffffff811115618cc157618cc1619e41565b6040519080825280601f01601f191660200182016040528015618ceb576020820181803683370190505b5090506000602082019050618c998185602001518660000151619906565b8151815160009190811115618d1c575081515b6020808501519084015160005b83811015618dd55782518251808214618da5576000196020871015618d8457600184618d5689602061afdb565b618d609190619ff7565b618d6b90600861b276565b618d7690600261b374565b618d80919061afdb565b1990505b8181168382168181039114618da25797506152c09650505050505050565b50505b618db0602086619ff7565b9450618dbd602085619ff7565b93505050602081618dce9190619ff7565b9050618d29565b508451865161633b919061b380565b60606000618df0615bba565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081618e0d57905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280618e689061aadc565b935060ff1681518110618e7d57618e7d61a96f565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001618ece919061b3a0565b604051602081830303815290604052828280618ee99061aadc565b935060ff1681518110618efe57618efe61a96f565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280618f4b9061aadc565b935060ff1681518110618f6057618f6061a96f565b602002602001018190525082604051602001618f7c919061aa0a565b604051602081830303815290604052828280618f979061aadc565b935060ff1681518110618fac57618fac61a96f565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280618ff99061aadc565b935060ff168151811061900e5761900e61a96f565b60200260200101819052506190238784619980565b828261902e8161aadc565b935060ff16815181106190435761904361a96f565b6020908102919091010152855151156190ef5760408051808201909152600b81527f2d2d7265666572656e6365000000000000000000000000000000000000000000602082015282826190958161aadc565b935060ff16815181106190aa576190aa61a96f565b60200260200101819052506190c3866000015184619980565b82826190ce8161aadc565b935060ff16815181106190e3576190e361a96f565b60200260200101819052505b85608001511561915d5760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b0000000000000000602082015282826191388161aadc565b935060ff168151811061914d5761914d61a96f565b60200260200101819052506191c3565b84156191c35760408051808201909152601281527f2d2d726571756972655265666572656e63650000000000000000000000000000602082015282826191a28161aadc565b935060ff16815181106191b7576191b761a96f565b60200260200101819052505b6040860151511561925f5760408051808201909152600d81527f2d2d756e73616665416c6c6f77000000000000000000000000000000000000006020820152828261920d8161aadc565b935060ff16815181106192225761922261a96f565b6020026020010181905250856040015182828061923e9061aadc565b935060ff16815181106192535761925361a96f565b60200260200101819052505b8560600151156192c95760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d6573000000000000000000000000602082015282826192a88161aadc565b935060ff16815181106192bd576192bd61a96f565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156192e7576192e7619e41565b60405190808252806020026020018201604052801561931a57816020015b60608152602001906001900390816193055790505b50905060005b8260ff168160ff16101561937357838160ff16815181106193435761934361a96f565b6020026020010151828260ff16815181106193605761936061a96f565b6020908102919091010152600101619320565b50979650505050505050565b60408051808201909152600080825260208201528151835110156193a45750816152c0565b815183516020850151600092916193ba91619ff7565b6193c4919061afdb565b602084015190915060019082146193e5575082516020840151819020908220145b8015619400578351855186906193fc90839061afdb565b9052505b50929392505050565b600080826000015161942d856000015186602001518660000151876020015161973b565b6194379190619ff7565b90505b8351602085015161944b9190619ff7565b8111618c99578161945b8161b3e5565b9250508260000151619492856020015183619476919061afdb565b8651619482919061afdb565b838660000151876020015161973b565b61949c9190619ff7565b905061943a565b606060006194b18484619409565b6194bc906001619ff7565b67ffffffffffffffff8111156194d4576194d4619e41565b60405190808252806020026020018201604052801561950757816020015b60608152602001906001900390816194f25790505b50905060005b8151811015617589576195236178c38686618c7a565b8282815181106195355761953561a96f565b602090810291909101015260010161950d565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310619591577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106195bd576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106195db57662386f26fc10000830492506010015b6305f5e10083106195f3576305f5e100830492506008015b612710831061960757612710830492506004015b60648310619619576064830492506002015b600a83106152c05760010192915050565b60008085841161973157602084116196dd576000841561967557600161965186602061afdb565b61965c90600861b276565b61966790600261b374565b619671919061afdb565b1990505b83518116856196848989619ff7565b61968e919061afdb565b805190935082165b8181146196c8578784116196b057879450505050506171ba565b836196ba8161b3ff565b945050828451169050619696565b6196d28785619ff7565b9450505050506171ba565b8383206196ea858861afdb565b6196f49087619ff7565b91505b85821061972f5784822080820361971c576197128684619ff7565b93505050506171ba565b61972760018461afdb565b9250506196f7565b505b5092949350505050565b6000838186851161984657602085116197f5576000851561978757600161976387602061afdb565b61976e90600861b276565b61977990600261b374565b619783919061afdb565b1990505b845181166000876197988b8b619ff7565b6197a2919061afdb565b855190915083165b8281146197e7578186106197cf576197c28b8b619ff7565b96505050505050506171ba565b856197d98161b3e5565b9650508386511690506197aa565b8596505050505050506171ba565b508383206000905b619807868961afdb565b82116198445785832080820361982357839450505050506171ba565b61982e600185619ff7565b935050818061983c9061b3e5565b9250506197fd565b505b6198508787619ff7565b979650505050505050565b6040805180820190915260008082526020820152600061988d856000015186602001518660000151876020015161973b565b6020808701805191860191909152519091506198a9908261afdb565b8352845160208601516198bc9190619ff7565b81036198cb57600085526198fd565b835183516198d99190619ff7565b855186906198e890839061afdb565b90525083516198f79082619ff7565b60208601525b50909392505050565b6020811061993e578151835261991d602084619ff7565b925061992a602083619ff7565b915061993760208261afdb565b9050619906565b600019811561996d57600161995483602061afdb565b6199609061010061b374565b61996a919061afdb565b90505b9151835183169219169190911790915250565b6060600061998e8484615c8d565b80516020808301516040519394506199a89390910161b416565b60405160208183030381529060405291505092915050565b6112a68061b46f83390190565b610ec28061c71583390190565b6040518060e00160405280606081526020016060815260200160608152602001600015158152602001600015158152602001600015158152602001619a1d619a22565b905290565b60405180610100016040528060001515815260200160001515815260200160608152602001600080191681526020016060815260200160608152602001600015158152602001619a1d6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b81811015619ad45783516001600160a01b0316835260209384019390920191600101619aad565b509095945050505050565b60005b83811015619afa578181015183820152602001619ae2565b50506000910152565b60008151808452619b1b816020860160208601619adf565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015619c2b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015619c11577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352619bfb848651619b03565b6020958601959094509290920191600101619bc1565b509197505050602094850194929092019150600101619b57565b50929695505050505050565b600081518084526020840193506020830160005b82811015619c8b5781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101619c4b565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015619c2b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752619d016040880182619b03565b9050602082015191508681036020880152619d1c8183619c37565b965050506020938401939190910190600101619cbd565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015619c2b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452619d95858351619b03565b94506020938401939190910190600101619d5b565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015619c2b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152619e2b6040870182619c37565b9550506020938401939190910190600101619dd2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600181811c90821680619e8457607f821691505b602082108103617b9e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b601f821115619f0457806000526020600020601f840160051c81016020851015619ee45750805b601f840160051c820191505b818110156122675760008155600101619ef0565b505050565b815167ffffffffffffffff811115619f2357619f23619e41565b619f3781619f318454619e70565b84619ebd565b6020601f821160018114619f6b5760008315619f535750848201515b600019600385901b1c1916600184901b178455612267565b600084815260208120601f198516915b82811015619f9b5787850151825560209485019460019092019101619f7b565b5084821015619fb95786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156152c0576152c0619fc8565b6001600160a01b0381541682526001600160a01b03600182015416602083015260028101546040830152600060038201608060608501526000815461a04e81619e70565b806080880152600182166000811461a06d576001811461a0a75761a0db565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831660a089015260a082151560051b890101935061a0db565b84600052602060002060005b8381101561a0d25781548a820160a0015260019091019060200161a0b3565b890160a0019450505b50919695505050505050565b6001600160a01b038516815283602082015260a06040820152600061a10f60a0830185619b03565b600060608401528281036080840152619850818561a00a565b60006020828403121561a13a57600080fd5b5051919050565b6001600160a01b0384168152826020820152606060408201526000617b846060830184619b03565b8281526040602082015260006171ba6040830184619b03565b6001600160a01b038516815283602082015260806040820152600061a1aa6080830185619b03565b905082606083015295945050505050565b6020815260006153ce6020830184619b03565b6001600160a01b038616815284602082015260a06040820152600061a1f660a0830186619b03565b846060840152828103608084015261a20e818561a00a565b98975050505050505050565b6001600160a01b038416815282602082015260806040820152600061a2426080830184619b03565b905060006060830152949350505050565b60008261a289577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6001600160a01b03831681526040602082015260006171ba604083018461a00a565b83815260606020820152600061a2c96060830185619b03565b828103604084015261633b818561a00a565b6001600160a01b03831681526040602082015260006171ba6040830184619b03565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161a33581601a850160208801619adf565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161a37281601c840160208801619adf565b01601c01949350505050565b60006020828403121561a39057600080fd5b81516001600160a01b03811681146153ce57600080fd5b6040516060810167ffffffffffffffff8111828210171561a3ca5761a3ca619e41565b60405290565b60008067ffffffffffffffff84111561a3eb5761a3eb619e41565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561a41a5761a41a619e41565b60405283815290508082840185101561a43257600080fd5b617589846020830185619adf565b600082601f83011261a45157600080fd5b6153ce8383516020850161a3d0565b60006020828403121561a47257600080fd5b815167ffffffffffffffff81111561a48957600080fd5b6152bc8482850161a440565b6000835161a4a7818460208801619adf565b83519083019061a4bb818360208801619adf565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161a4fc81601a850160208801619adf565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161a539816033840160208801619adf565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b6001600160a01b03841681526001600160a01b0383166020820152606060408201526000617b846060830184619b03565b60408152600b60408201527f464f554e4452595f4f555400000000000000000000000000000000000000000060608201526080602082015260006153ce6080830184619b03565b60006020828403121561a5f957600080fd5b815167ffffffffffffffff81111561a61057600080fd5b8201601f8101841361a62157600080fd5b6152bc8482516020840161a3d0565b6000855161a642818460208a01619adf565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161a67c816001840160208a01619adf565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161a6ba816002840160208901619adf565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161a6fc816002840160208801619adf565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061a7476040830184619b03565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b60006020828403121561a79857600080fd5b815180151581146153ce57600080fd5b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161a7e081601f850160208701619adf565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061a84d6040830184619b03565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061a89f6040830184619b03565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161a916816014850160208701619adf565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061a95d6040830185619b03565b82810360208401526153ca8185619b03565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161a9d6816001850160208701619adf565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161aa1c818460208701619adf565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161aacf81604b850160208701619adf565b91909101604b0192915050565b600060ff821660ff810361aaf25761aaf2619fc8565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161ab59816029850160208701619adf565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f504154480000000000000000000060608201526080602082015260006153ce6080830184619b03565b60006020828403121561abbf57600080fd5b815167ffffffffffffffff81111561abd657600080fd5b82016060818503121561abe857600080fd5b61abf061a3a7565b81518060030b811461ac0157600080fd5b8152602082015167ffffffffffffffff81111561ac1d57600080fd5b61ac298682850161a440565b602083015250604082015167ffffffffffffffff81111561ac4957600080fd5b61ac558682850161a440565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161acc1816021850160208701619adf565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161aead816021850160208801619adf565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161aeea81602e840160208801619adf565b01602e01949350505050565b6000825161af08818460208701619adf565b9190910192915050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161ab59816029850160208701619adf565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161afce816022850160208701619adf565b9190910160220192915050565b818103818111156152c0576152c0619fc8565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161b02681600e850160208701619adf565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161b104816018850160208801619adf565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161b14181601c840160208801619adf565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161b247818460208701619adf565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b80820281158282048414176152c0576152c0619fc8565b6001815b600184111561b2c85780850481111561b2ac5761b2ac619fc8565b600184161561b2ba57908102905b60019390931c92800261b291565b935093915050565b60008261b2df575060016152c0565b8161b2ec575060006152c0565b816001811461b302576002811461b30c5761b328565b60019150506152c0565b60ff84111561b31d5761b31d619fc8565b50506001821b6152c0565b5060208310610133831016604e8410600b841016171561b34b575081810a6152c0565b61b358600019848461b28d565b806000190482111561b36c5761b36c619fc8565b029392505050565b60006153ce838361b2d0565b8181036000831280158383131683831282161715618c9957618c99619fc8565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161b3d881601c850160208701619adf565b91909101601c0192915050565b6000600019820361b3f85761b3f8619fc8565b5060010190565b60008161b40e5761b40e619fc8565b506000190190565b6000835161b428818460208801619adf565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161b462816001840160208801619adf565b0160010194935050505056fe608060405234801561001057600080fd5b506040516112a63803806112a683398101604081905261002f91610110565b604051806040016040528060048152602001635a65746160e01b815250604051806040016040528060048152602001635a45544160e01b815250816003908161007891906101e2565b50600461008582826101e2565b5050506001600160a01b03821615806100a557506001600160a01b038116155b156100c35760405163e6c4247b60e01b815260040160405180910390fd5b600680546001600160a01b039384166001600160a01b031991821617909155600780549290931691161790556102a0565b80516001600160a01b038116811461010b57600080fd5b919050565b6000806040838503121561012357600080fd5b61012c836100f4565b915061013a602084016100f4565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061016d57607f821691505b60208210810361018d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101dd57806000526020600020601f840160051c810160208510156101ba5750805b601f840160051c820191505b818110156101da57600081556001016101c6565b50505b505050565b81516001600160401b038111156101fb576101fb610143565b61020f816102098454610159565b84610193565b6020601f821160018114610243576000831561022b5750848201515b600019600385901b1c1916600184901b1784556101da565b600084815260208120601f198516915b828110156102735787850151825560209485019460019092019101610253565b50848210156102915786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610ff7806102af6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806342966c68116100b257806379cc679011610081578063a9059cbb11610066578063a9059cbb1461028e578063bff9662a146102a1578063dd62ed3e146102c157600080fd5b806379cc67901461027357806395d89b411461028657600080fd5b806342966c68146102025780635b1125911461021557806370a0823114610235578063779e3b631461026b57600080fd5b80631e458bee116100ee5780631e458bee1461018857806323b872dd1461019b578063313ce567146101ae578063328a01d0146101bd57600080fd5b806306fdde0314610120578063095ea7b31461013e57806315d57fd41461016157806318160ddd14610176575b600080fd5b610128610307565b6040516101359190610d97565b60405180910390f35b61015161014c366004610e2c565b610399565b6040519015158152602001610135565b61017461016f366004610e56565b6103b3565b005b6002545b604051908152602001610135565b610174610196366004610e89565b61057e565b6101516101a9366004610ebc565b610631565b60405160128152602001610135565b6007546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610135565b610174610210366004610ef9565b610655565b6006546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a610243366004610f12565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b610174610662565b610174610281366004610e2c565b610786565b610128610837565b61015161029c366004610e2c565b610846565b6005546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a6102cf366004610e56565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461031690610f34565b80601f016020809104026020016040519081016040528092919081815260200182805461034290610f34565b801561038f5780601f106103645761010080835404028352916020019161038f565b820191906000526020600020905b81548152906001019060200180831161037257829003601f168201915b5050505050905090565b6000336103a7818585610854565b60019150505b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff1633148015906103f3575060065473ffffffffffffffffffffffffffffffffffffffff163314155b15610431576040517fcdfcef970000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82161580610468575073ffffffffffffffffffffffffffffffffffffffff8116155b1561049f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006805473ffffffffffffffffffffffffffffffffffffffff8481167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316811790935560058054918516919092161790556040805133815260208101929092527fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff910160405180910390a16040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f1b9352454524a57a51f24f67dc66d898f616922cd1f7a12d73570ece12b1975c910160405180910390a15050565b60055473ffffffffffffffffffffffffffffffffffffffff1633146105d1576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6105db8383610866565b808373ffffffffffffffffffffffffffffffffffffffff167fc263b302aec62d29105026245f19e16f8e0137066ccd4a8bd941f716bd4096bb8460405161062491815260200190565b60405180910390a3505050565b60003361063f8582856108c6565b61064a858585610995565b506001949350505050565b61065f3382610a40565b50565b60075473ffffffffffffffffffffffffffffffffffffffff1633146106b5576040517fe700765e000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b60065473ffffffffffffffffffffffffffffffffffffffff16610704576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0910160405180910390a1565b60055473ffffffffffffffffffffffffffffffffffffffff1633146107d9576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6107e38282610a9c565b8173ffffffffffffffffffffffffffffffffffffffff167f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b18260405161082b91815260200190565b60405180910390a25050565b60606004805461031690610f34565b6000336103a7818585610995565b6108618383836001610ab1565b505050565b73ffffffffffffffffffffffffffffffffffffffff82166108b6576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c260008383610bf9565b5050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461098f5781811015610980576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401610428565b61098f84848484036000610ab1565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166109e5576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8216610a35576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b610861838383610bf9565b73ffffffffffffffffffffffffffffffffffffffff8216610a90576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c282600083610bf9565b610aa78233836108c6565b6108c28282610a40565b73ffffffffffffffffffffffffffffffffffffffff8416610b01576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8316610b51576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160209081526040808320938716835292905220829055801561098f578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610beb91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8316610c31578060026000828254610c269190610f87565b90915550610ce39050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610cb7576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810182905260448101839052606401610428565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff8216610d0c57600280548290039055610d38565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161062491815260200190565b602081526000825180602084015260005b81811015610dc55760208186018101516040868401015201610da8565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e2757600080fd5b919050565b60008060408385031215610e3f57600080fd5b610e4883610e03565b946020939093013593505050565b60008060408385031215610e6957600080fd5b610e7283610e03565b9150610e8060208401610e03565b90509250929050565b600080600060608486031215610e9e57600080fd5b610ea784610e03565b95602085013595506040909401359392505050565b600080600060608486031215610ed157600080fd5b610eda84610e03565b9250610ee860208501610e03565b929592945050506040919091013590565b600060208284031215610f0b57600080fd5b5035919050565b600060208284031215610f2457600080fd5b610f2d82610e03565b9392505050565b600181811c90821680610f4857607f821691505b602082108103610f81577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156103ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea264697066735822122001ec0ce060384773f3d3389fab7bed652c6b8ee389a7471cce10d00d87a75a0c64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610e9e806100246000396000f3fe60806040526004361061006e5760003560e01c8063c51316911161004b578063c5131691146100d5578063c9028a36146100f5578063e04d4f9714610115578063f05b6abf1461012857005b8063357fc5a214610077578063676cc054146100975780636ed70169146100c057005b3661007557005b005b34801561008357600080fd5b506100756100923660046106ec565b610148565b6100aa6100a5366004610728565b6101de565b6040516100b79190610823565b60405180910390f35b3480156100cc57600080fd5b50610075610222565b3480156100e157600080fd5b506100756100f03660046106ec565b610257565b34801561010157600080fd5b50610075610110366004610836565b610332565b610075610123366004610996565b61036e565b34801561013457600080fd5b50610075610143366004610a82565b6103b2565b6101506103e7565b61017273ffffffffffffffffffffffffffffffffffffffff831633838661042a565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101d96001600055565b505050565b6040516060907f3658b46bab672c7672b69c2f0feda706eabdb7d2231421c96e9049b2db5e7eee90600090a1506040805160208101909152600081525b9392505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b61025f6103e7565b600061026c600285610b6c565b9050806000036102a8576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102ca73ffffffffffffffffffffffffffffffffffffffff841633848461042a565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101d96001600055565b7f689a5a5cb55e795ffe4cd8b419cd3bb0a3373974c54d25f64e734d7388b93e9b3382604051610363929190610bf0565b60405180910390a150565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa33348585856040516103a5959493929190610ce2565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103a59493929190610d6c565b600260005403610423576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526104bf9085906104c5565b50505050565b60006104e773ffffffffffffffffffffffffffffffffffffffff841683610560565b9050805160001415801561050c57508080602001905181019061050a9190610e2f565b155b156101d9576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061021b83836000846000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105939190610e4c565b60006040518083038185875af1925050503d80600081146105d0576040519150601f19603f3d011682016040523d82523d6000602084013e6105d5565b606091505b50915091506105e58683836105ef565b9695505050505050565b606082610604576105ff8261067e565b61021b565b8151158015610628575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610677576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610557565b508061021b565b80511561068e5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106e757600080fd5b919050565b60008060006060848603121561070157600080fd5b83359250610711602085016106c3565b915061071f604085016106c3565b90509250925092565b6000806000838503604081121561073e57600080fd5b602081121561074c57600080fd5b50839250602084013567ffffffffffffffff81111561076a57600080fd5b8401601f8101861361077b57600080fd5b803567ffffffffffffffff81111561079257600080fd5b8660208284010111156107a457600080fd5b939660209190910195509293505050565b60005b838110156107d05781810151838201526020016107b8565b50506000910152565b600081518084526107f18160208601602086016107b5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061021b60208301846107d9565b60006020828403121561084857600080fd5b813567ffffffffffffffff81111561085f57600080fd5b82016080818503121561021b57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156108e7576108e7610871565b604052919050565b600082601f83011261090057600080fd5b813567ffffffffffffffff81111561091a5761091a610871565b61094b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016108a0565b81815284602083860101111561096057600080fd5b816020850160208301376000918101602001919091529392505050565b80151581146106c057600080fd5b80356106e78161097d565b6000806000606084860312156109ab57600080fd5b833567ffffffffffffffff8111156109c257600080fd5b6109ce868287016108ef565b9350506020840135915060408401356109e68161097d565b809150509250925092565b600067ffffffffffffffff821115610a0b57610a0b610871565b5060051b60200190565b600082601f830112610a2657600080fd5b8135610a39610a34826109f1565b6108a0565b8082825260208201915060208360051b860101925085831115610a5b57600080fd5b602085015b83811015610a78578035835260209283019201610a60565b5095945050505050565b600080600060608486031215610a9757600080fd5b833567ffffffffffffffff811115610aae57600080fd5b8401601f81018613610abf57600080fd5b8035610acd610a34826109f1565b8082825260208201915060208360051b850101925088831115610aef57600080fd5b602084015b83811015610b3157803567ffffffffffffffff811115610b1357600080fd5b610b228b6020838901016108ef565b84525060209283019201610af4565b509550505050602084013567ffffffffffffffff811115610b5157600080fd5b610b5d86828701610a15565b92505061071f6040850161098b565b600082610ba2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015273ffffffffffffffffffffffffffffffffffffffff610c2e836106c3565b16604082015273ffffffffffffffffffffffffffffffffffffffff610c55602084016106c3565b166060820152600080604084013590508060808401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610ca157600080fd5b830160208101903567ffffffffffffffff811115610cbe57600080fd5b803603821315610ccd57600080fd5b608060a08501526105e560c085018284610ba7565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610d1760a08301866107d9565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610d62578151865260209586019590910190600101610d44565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610dff577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610dea8583516107d9565b94506020938401939190910190600101610db0565b505050508281036040840152610e158186610d30565b915050610e26606083018415159052565b95945050505050565b600060208284031215610e4157600080fd5b815161021b8161097d565b60008251610e5e8184602087016107b5565b919091019291505056fea26469706673582212200121b4788f0b35a4b6df21db4f43708a9b20e8b16f616e6f3300230e75bbdd1364736f6c634300081a00335a657461436f6e6e6563746f724e6f6e4e617469766555706772616465546573742e736f6ca26469706673582212204a491a9e46b17d4b2cbd6d1728e5394c5357f9f5c24584e5d9dd1ba6e57f3f3d64736f6c634300081a0033", } // ZetaConnectorNonNativeTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/zetaconnectornonnativeupgradetest.sol/zetaconnectornonnativeupgradetest.go b/v2/pkg/zetaconnectornonnativeupgradetest.sol/zetaconnectornonnativeupgradetest.go index 3ff7973b8..86fe76ff1 100644 --- a/v2/pkg/zetaconnectornonnativeupgradetest.sol/zetaconnectornonnativeupgradetest.go +++ b/v2/pkg/zetaconnectornonnativeupgradetest.sol/zetaconnectornonnativeupgradetest.go @@ -40,7 +40,7 @@ type RevertContext struct { // ZetaConnectorNonNativeUpgradeTestMetaData contains all meta data concerning the ZetaConnectorNonNativeUpgradeTest contract. var ZetaConnectorNonNativeUpgradeTestMetaData = &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\":\"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\":\"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\":\"initialize\",\"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\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"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\":\"updateTSSAddress\",\"inputs\":[{\"name\":\"newTSSAddress\",\"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\":\"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\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"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\":\"UpdatedZetaConnectorTSSAddress\",\"inputs\":[{\"name\":\"oldTSSAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newTSSAddress\",\"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\":\"Withdrawn\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawnAndCalled\",\"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\":\"WithdrawnAndReverted\",\"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\"},{\"name\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawnV2\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"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\":\"ERC1967InvalidImplementation\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967NonPayable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExceedsMaxSupply\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpectedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"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\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x60a060405230608052348015601357600080fd5b5060805161251961003d6000396000818161145701528181611480015261165601526125196000f3fe6080604052600436106101ac5760003560e01c80636f8728ad116100ec578063a217fddf1161008a578063d547741f11610064578063d547741f1461057e578063d5abeb011461059e578063e63ab1e9146105b4578063f8c8765e146105e857600080fd5b8063a217fddf146104df578063a783c789146104f4578063ad3cb1cc1461052857600080fd5b80638456cb59116100c65780638456cb591461041157806385f438c11461042657806391d148541461045a578063950837aa146104bf57600080fd5b80636f8728ad146103b15780636f8b44b0146103d1578063743e0c9b146103f157600080fd5b806336568abe1161015957806352d1902d1161013357806352d1902d146103255780635b1125911461033a5780635c975abb1461035a5780635e3e9fef1461039157600080fd5b806336568abe146102dd5780633f4ba83a146102fd5780634f1ef2861461031257600080fd5b806321e093b11161018a57806321e093b114610240578063248a9ca3146102605780632f2ff15d146102bd57600080fd5b806301ffc9a7146101b1578063106e6290146101e6578063116191b614610208575b600080fd5b3480156101bd57600080fd5b506101d16101cc366004611e67565b610608565b60405190151581526020015b60405180910390f35b3480156101f257600080fd5b50610206610201366004611ec5565b6106a1565b005b34801561021457600080fd5b50600054610228906001600160a01b031681565b6040516001600160a01b0390911681526020016101dd565b34801561024c57600080fd5b50600154610228906001600160a01b031681565b34801561026c57600080fd5b506102af61027b366004611ef8565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101dd565b3480156102c957600080fd5b506102066102d8366004611f11565b610758565b3480156102e957600080fd5b506102066102f8366004611f11565b6107a2565b34801561030957600080fd5b506102066107ee565b610206610320366004611f6c565b610823565b34801561033157600080fd5b506102af610842565b34801561034657600080fd5b50600254610228906001600160a01b031681565b34801561036657600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101d1565b34801561039d57600080fd5b506102066103ac3660046120bc565b610871565b3480156103bd57600080fd5b506102066103cc36600461211e565b6109bf565b3480156103dd57600080fd5b506102066103ec366004611ef8565b610b12565b3480156103fd57600080fd5b5061020661040c366004611ef8565b610b80565b34801561041d57600080fd5b50610206610c01565b34801561043257600080fd5b506102af7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b34801561046657600080fd5b506101d1610475366004611f11565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156104cb57600080fd5b506102066104da3660046121b6565b610c33565b3480156104eb57600080fd5b506102af600081565b34801561050057600080fd5b506102af7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561053457600080fd5b506105716040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101dd91906121f5565b34801561058a57600080fd5b50610206610599366004611f11565b610dc6565b3480156105aa57600080fd5b506102af60035481565b3480156105c057600080fd5b506102af7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b3480156105f457600080fd5b50610206610603366004612246565b610e0a565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061069b57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6106a9610fb5565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46106d381611036565b6106db611040565b6106e684848461109e565b836001600160a01b03167f3e35ef4326151011878c9e8e968a0f3913fe98ca68f72a1e0c2e9be13ffb3ee98460405161072191815260200190565b60405180910390a25061075360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461079281611036565b61079c838361120b565b50505050565b6001600160a01b03811633146107e4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61075382826112f8565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61081881611036565b6108206113bc565b50565b61082b61144c565b6108348261151c565b61083e8282611527565b5050565b600061084c61164b565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610879610fb5565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46108a381611036565b6108ab611040565b6000546108c2906001600160a01b0316868461109e565b6000546001546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692635131ab5992610917929116908a908a908a908a906004016122e3565b600060405180830381600087803b15801561093157600080fd5b505af1158015610945573d6000803e3d6000fd5b50505050856001600160a01b03167f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d86868660405161098693929190612326565b60405180910390a2506109b860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6109c7610fb5565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46109f181611036565b6109f9611040565b600054610a10906001600160a01b0316878561109e565b6000546001546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526001600160a01b039283169263aa0c0fc192610a67929116908b908b908b908b908a906004016123f1565b600060405180830381600087803b158015610a8157600080fd5b505af1158015610a95573d6000803e3d6000fd5b50505050866001600160a01b03167f5272d2fee39bff41b2e763562526315906046373ce08a7bacf76c3080d731ff087878786604051610ad89493929190612448565b60405180910390a250610b0a60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610b3c81611036565b610b44611040565b60038290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610b88611040565b6001546040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018390526001600160a01b03909116906379cc679090604401600060405180830381600087803b158015610bed57600080fd5b505af11580156109b8573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610c2b81611036565b6108206116ad565b6000610c3e81611036565b6001600160a01b038216610c7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254610cb5907f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4906001600160a01b03166112f8565b50600254610ced907f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb906001600160a01b03166112f8565b50610d187f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48361120b565b50610d437f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb8361120b565b50600254604080516001600160a01b03928316815291841660208301527f33770ab682353c17917ad3e667f05905fc8dda00671ef1ed33bef9bc8db0323e910160405180910390a150600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610e0081611036565b61079c83836112f8565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610e555750825b905060008267ffffffffffffffff166001148015610e725750303b155b905081158015610e80575080155b15610eb7576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610f185784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610f2489898989611726565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6003558315610faa5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b505050505050505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611030576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6108208133611a31565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff161561109c576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600354600160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111189190612474565b611122908461248d565b111561115a576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040517f1e458bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018590526044820184905290911690631e458bee90606401600060405180830381600087803b1580156111c857600080fd5b505af11580156111dc573d6000803e3d6000fd5b50505050505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166112ee576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556112a43390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061069b565b600091505061069b565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156112ee576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061069b565b6113c4611abe565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806114e557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114d97f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b1561109c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061083e81611036565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561159f575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261159c91810190612474565b60015b6115e5576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611641576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016115dc565b6107538383611b19565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461109c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116b5611040565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361142e565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156117715750825b905060008267ffffffffffffffff16600114801561178e5750303b155b90508115801561179c575080155b156117d3576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156118345784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038916158061185157506001600160a01b038816155b8061186357506001600160a01b038716155b8061187557506001600160a01b038616155b156118ac576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118b4611b6f565b6118bc611b77565b6118c4611b6f565b6118cc611b87565b600080546001600160a01b03808c167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316178355600180548c831690841617905560028054918b1691909216179055611927908761120b565b506119527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48861120b565b5061197d7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb8861120b565b506119a87f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8761120b565b506119d37f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8861120b565b508315610faa5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001610fa1565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff1661083e576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016115dc565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1661109c576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b2282611b97565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b67576107538282611c3f565b61083e611cb5565b61109c611ced565b611b7f611ced565b61109c611d54565b611b8f611ced565b61109c611d5c565b806001600160a01b03163b600003611be6576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016115dc565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611c5c91906124c7565b600060405180830381855af49150503d8060008114611c97576040519150601f19603f3d011682016040523d82523d6000602084013e611c9c565b606091505b5091509150611cac858383611dad565b95945050505050565b341561109c576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661109c576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111e5611ced565b611d64611ced565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b606082611dc257611dbd82611e25565b611e1e565b8151158015611dd957506001600160a01b0384163b155b15611e1b576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016115dc565b50805b9392505050565b805115611e355780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215611e7957600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611e1e57600080fd5b80356001600160a01b0381168114611ec057600080fd5b919050565b600080600060608486031215611eda57600080fd5b611ee384611ea9565b95602085013595506040909401359392505050565b600060208284031215611f0a57600080fd5b5035919050565b60008060408385031215611f2457600080fd5b82359150611f3460208401611ea9565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215611f7f57600080fd5b611f8883611ea9565b9150602083013567ffffffffffffffff811115611fa457600080fd5b8301601f81018513611fb557600080fd5b803567ffffffffffffffff811115611fcf57611fcf611f3d565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561203b5761203b611f3d565b60405281815282820160200187101561205357600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008083601f84011261208557600080fd5b50813567ffffffffffffffff81111561209d57600080fd5b6020830191508360208285010111156120b557600080fd5b9250929050565b6000806000806000608086880312156120d457600080fd5b6120dd86611ea9565b945060208601359350604086013567ffffffffffffffff81111561210057600080fd5b61210c88828901612073565b96999598509660600135949350505050565b60008060008060008060a0878903121561213757600080fd5b61214087611ea9565b955060208701359450604087013567ffffffffffffffff81111561216357600080fd5b61216f89828a01612073565b90955093505060608701359150608087013567ffffffffffffffff81111561219657600080fd5b87016080818a0312156121a857600080fd5b809150509295509295509295565b6000602082840312156121c857600080fd5b611e1e82611ea9565b60005b838110156121ec5781810151838201526020016121d4565b50506000910152565b60208152600082518060208401526122148160408501602087016121d1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000806000806080858703121561225c57600080fd5b61226585611ea9565b935061227360208601611ea9565b925061228160408601611ea9565b915061228f60608601611ea9565b905092959194509250565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015260806060820152600061231b60808301848661229a565b979650505050505050565b838152604060208201526000611cac60408301848661229a565b6001600160a01b0361235182611ea9565b1682526001600160a01b0361236860208301611ea9565b1660208301526040818101359083015260006060820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe10181126123b057600080fd5b820160208101903567ffffffffffffffff8111156123cd57600080fd5b8036038213156123dc57600080fd5b60806060860152611cac60808601828461229a565b6001600160a01b03871681526001600160a01b038616602082015284604082015260a06060820152600061242960a08301858761229a565b828103608084015261243b8185612340565b9998505050505050505050565b84815260606020820152600061246260608301858761229a565b828103604084015261231b8185612340565b60006020828403121561248657600080fd5b5051919050565b8082018082111561069b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082516124d98184602087016121d1565b919091019291505056fea26469706673582212204813daad458b8c103dfebd07f6ec74ee1d40a7eec885cae6963c827c7daf36af64736f6c634300081a0033", + Bin: "0x60a060405230608052348015601357600080fd5b5060805161251961003d6000396000818161145701528181611480015261165601526125196000f3fe6080604052600436106101ac5760003560e01c80636f8728ad116100ec578063a217fddf1161008a578063d547741f11610064578063d547741f1461057e578063d5abeb011461059e578063e63ab1e9146105b4578063f8c8765e146105e857600080fd5b8063a217fddf146104df578063a783c789146104f4578063ad3cb1cc1461052857600080fd5b80638456cb59116100c65780638456cb591461041157806385f438c11461042657806391d148541461045a578063950837aa146104bf57600080fd5b80636f8728ad146103b15780636f8b44b0146103d1578063743e0c9b146103f157600080fd5b806336568abe1161015957806352d1902d1161013357806352d1902d146103255780635b1125911461033a5780635c975abb1461035a5780635e3e9fef1461039157600080fd5b806336568abe146102dd5780633f4ba83a146102fd5780634f1ef2861461031257600080fd5b806321e093b11161018a57806321e093b114610240578063248a9ca3146102605780632f2ff15d146102bd57600080fd5b806301ffc9a7146101b1578063106e6290146101e6578063116191b614610208575b600080fd5b3480156101bd57600080fd5b506101d16101cc366004611e67565b610608565b60405190151581526020015b60405180910390f35b3480156101f257600080fd5b50610206610201366004611ec5565b6106a1565b005b34801561021457600080fd5b50600054610228906001600160a01b031681565b6040516001600160a01b0390911681526020016101dd565b34801561024c57600080fd5b50600154610228906001600160a01b031681565b34801561026c57600080fd5b506102af61027b366004611ef8565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101dd565b3480156102c957600080fd5b506102066102d8366004611f11565b610758565b3480156102e957600080fd5b506102066102f8366004611f11565b6107a2565b34801561030957600080fd5b506102066107ee565b610206610320366004611f6c565b610823565b34801561033157600080fd5b506102af610842565b34801561034657600080fd5b50600254610228906001600160a01b031681565b34801561036657600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101d1565b34801561039d57600080fd5b506102066103ac3660046120bc565b610871565b3480156103bd57600080fd5b506102066103cc36600461211e565b6109bf565b3480156103dd57600080fd5b506102066103ec366004611ef8565b610b12565b3480156103fd57600080fd5b5061020661040c366004611ef8565b610b80565b34801561041d57600080fd5b50610206610c01565b34801561043257600080fd5b506102af7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b34801561046657600080fd5b506101d1610475366004611f11565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156104cb57600080fd5b506102066104da3660046121b6565b610c33565b3480156104eb57600080fd5b506102af600081565b34801561050057600080fd5b506102af7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561053457600080fd5b506105716040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101dd91906121f5565b34801561058a57600080fd5b50610206610599366004611f11565b610dc6565b3480156105aa57600080fd5b506102af60035481565b3480156105c057600080fd5b506102af7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b3480156105f457600080fd5b50610206610603366004612246565b610e0a565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061069b57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6106a9610fb5565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46106d381611036565b6106db611040565b6106e684848461109e565b836001600160a01b03167f3e35ef4326151011878c9e8e968a0f3913fe98ca68f72a1e0c2e9be13ffb3ee98460405161072191815260200190565b60405180910390a25061075360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461079281611036565b61079c838361120b565b50505050565b6001600160a01b03811633146107e4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61075382826112f8565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61081881611036565b6108206113bc565b50565b61082b61144c565b6108348261151c565b61083e8282611527565b5050565b600061084c61164b565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610879610fb5565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46108a381611036565b6108ab611040565b6000546108c2906001600160a01b0316868461109e565b6000546001546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692635131ab5992610917929116908a908a908a908a906004016122e3565b600060405180830381600087803b15801561093157600080fd5b505af1158015610945573d6000803e3d6000fd5b50505050856001600160a01b03167f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d86868660405161098693929190612326565b60405180910390a2506109b860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6109c7610fb5565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46109f181611036565b6109f9611040565b600054610a10906001600160a01b0316878561109e565b6000546001546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526001600160a01b039283169263aa0c0fc192610a67929116908b908b908b908b908a906004016123f1565b600060405180830381600087803b158015610a8157600080fd5b505af1158015610a95573d6000803e3d6000fd5b50505050866001600160a01b03167f5272d2fee39bff41b2e763562526315906046373ce08a7bacf76c3080d731ff087878786604051610ad89493929190612448565b60405180910390a250610b0a60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610b3c81611036565b610b44611040565b60038290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610b88611040565b6001546040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018390526001600160a01b03909116906379cc679090604401600060405180830381600087803b158015610bed57600080fd5b505af11580156109b8573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610c2b81611036565b6108206116ad565b6000610c3e81611036565b6001600160a01b038216610c7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254610cb5907f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4906001600160a01b03166112f8565b50600254610ced907f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb906001600160a01b03166112f8565b50610d187f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48361120b565b50610d437f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb8361120b565b50600254604080516001600160a01b03928316815291841660208301527f33770ab682353c17917ad3e667f05905fc8dda00671ef1ed33bef9bc8db0323e910160405180910390a150600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610e0081611036565b61079c83836112f8565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610e555750825b905060008267ffffffffffffffff166001148015610e725750303b155b905081158015610e80575080155b15610eb7576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610f185784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610f2489898989611726565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6003558315610faa5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b505050505050505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611030576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6108208133611a31565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff161561109c576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600354600160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111189190612474565b611122908461248d565b111561115a576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040517f1e458bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018590526044820184905290911690631e458bee90606401600060405180830381600087803b1580156111c857600080fd5b505af11580156111dc573d6000803e3d6000fd5b50505050505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166112ee576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556112a43390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061069b565b600091505061069b565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156112ee576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061069b565b6113c4611abe565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806114e557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114d97f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b1561109c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061083e81611036565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561159f575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261159c91810190612474565b60015b6115e5576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611641576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016115dc565b6107538383611b19565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461109c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116b5611040565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361142e565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156117715750825b905060008267ffffffffffffffff16600114801561178e5750303b155b90508115801561179c575080155b156117d3576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156118345784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038916158061185157506001600160a01b038816155b8061186357506001600160a01b038716155b8061187557506001600160a01b038616155b156118ac576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118b4611b6f565b6118bc611b77565b6118c4611b6f565b6118cc611b87565b600080546001600160a01b03808c167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316178355600180548c831690841617905560028054918b1691909216179055611927908761120b565b506119527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48861120b565b5061197d7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb8861120b565b506119a87f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8761120b565b506119d37f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8861120b565b508315610faa5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001610fa1565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff1661083e576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016115dc565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1661109c576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b2282611b97565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b67576107538282611c3f565b61083e611cb5565b61109c611ced565b611b7f611ced565b61109c611d54565b611b8f611ced565b61109c611d5c565b806001600160a01b03163b600003611be6576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016115dc565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611c5c91906124c7565b600060405180830381855af49150503d8060008114611c97576040519150601f19603f3d011682016040523d82523d6000602084013e611c9c565b606091505b5091509150611cac858383611dad565b95945050505050565b341561109c576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661109c576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111e5611ced565b611d64611ced565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b606082611dc257611dbd82611e25565b611e1e565b8151158015611dd957506001600160a01b0384163b155b15611e1b576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016115dc565b50805b9392505050565b805115611e355780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215611e7957600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611e1e57600080fd5b80356001600160a01b0381168114611ec057600080fd5b919050565b600080600060608486031215611eda57600080fd5b611ee384611ea9565b95602085013595506040909401359392505050565b600060208284031215611f0a57600080fd5b5035919050565b60008060408385031215611f2457600080fd5b82359150611f3460208401611ea9565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215611f7f57600080fd5b611f8883611ea9565b9150602083013567ffffffffffffffff811115611fa457600080fd5b8301601f81018513611fb557600080fd5b803567ffffffffffffffff811115611fcf57611fcf611f3d565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561203b5761203b611f3d565b60405281815282820160200187101561205357600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008083601f84011261208557600080fd5b50813567ffffffffffffffff81111561209d57600080fd5b6020830191508360208285010111156120b557600080fd5b9250929050565b6000806000806000608086880312156120d457600080fd5b6120dd86611ea9565b945060208601359350604086013567ffffffffffffffff81111561210057600080fd5b61210c88828901612073565b96999598509660600135949350505050565b60008060008060008060a0878903121561213757600080fd5b61214087611ea9565b955060208701359450604087013567ffffffffffffffff81111561216357600080fd5b61216f89828a01612073565b90955093505060608701359150608087013567ffffffffffffffff81111561219657600080fd5b87016080818a0312156121a857600080fd5b809150509295509295509295565b6000602082840312156121c857600080fd5b611e1e82611ea9565b60005b838110156121ec5781810151838201526020016121d4565b50506000910152565b60208152600082518060208401526122148160408501602087016121d1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000806000806080858703121561225c57600080fd5b61226585611ea9565b935061227360208601611ea9565b925061228160408601611ea9565b915061228f60608601611ea9565b905092959194509250565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015260806060820152600061231b60808301848661229a565b979650505050505050565b838152604060208201526000611cac60408301848661229a565b6001600160a01b0361235182611ea9565b1682526001600160a01b0361236860208301611ea9565b1660208301526040818101359083015260006060820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe10181126123b057600080fd5b820160208101903567ffffffffffffffff8111156123cd57600080fd5b8036038213156123dc57600080fd5b60806060860152611cac60808601828461229a565b6001600160a01b03871681526001600160a01b038616602082015284604082015260a06060820152600061242960a08301858761229a565b828103608084015261243b8185612340565b9998505050505050505050565b84815260606020820152600061246260608301858761229a565b828103604084015261231b8185612340565b60006020828403121561248657600080fd5b5051919050565b8082018082111561069b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082516124d98184602087016121d1565b919091019291505056fea2646970667358221220eba4c2f5dade5ff34217048d440008758a00a1202245b68fa99aa106f7b708de64736f6c634300081a0033", } // ZetaConnectorNonNativeUpgradeTestABI 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 20848dbfd..d02487af3 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\":\"GAS_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"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\":\"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\":\"setName\",\"inputs\":[{\"name\":\"newName\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setSymbol\",\"inputs\":[{\"name\":\"newSymbol\",\"type\":\"string\",\"internalType\":\"string\"}],\"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\":\"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\":\"function\",\"name\":\"withdrawGasFeeWithGasLimit\",\"inputs\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"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: "0x60c060405234801561001057600080fd5b5060405161207238038061207283398101604081905261002f916101f0565b6001600160a01b038216158061004c57506001600160a01b038116155b1561006a5760405163d92e233d60e01b815260040160405180910390fd5b60066100768982610342565b5060076100838882610342565b506008805460ff191660ff881617905560808590528360028111156100aa576100aa610400565b60a08160028111156100be576100be610400565b905250600192909255600080546001600160a01b039283166001600160a01b0319909116179055600880549190921661010002610100600160a81b0319909116179055506104169350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261013357600080fd5b81516001600160401b0381111561014c5761014c61010c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561017a5761017a61010c565b60405281815283820160200185101561019257600080fd5b60005b828110156101b157602081860181015183830182015201610195565b506000918101602001919091529392505050565b8051600381106101d457600080fd5b919050565b80516001600160a01b03811681146101d457600080fd5b600080600080600080600080610100898b03121561020d57600080fd5b88516001600160401b0381111561022357600080fd5b61022f8b828c01610122565b60208b015190995090506001600160401b0381111561024d57600080fd5b6102598b828c01610122565b975050604089015160ff8116811461027057600080fd5b60608a0151909650945061028660808a016101c5565b60a08a0151909450925061029c60c08a016101d9565b91506102aa60e08a016101d9565b90509295985092959890939650565b600181811c908216806102cd57607f821691505b6020821081036102ed57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561033d57806000526020600020601f840160051c8101602085101561031a5750805b601f840160051c820191505b8181101561033a5760008155600101610326565b50505b505050565b81516001600160401b0381111561035b5761035b61010c565b61036f8161036984546102b9565b846102f3565b6020601f8211600181146103a3576000831561038b5750848201515b600019600385901b1c1916600184901b17845561033a565b600084815260208120601f198516915b828110156103d357878501518255602094850194600190920191016103b3565b50848210156103f15786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a051611c1b61045760003960006103440152600081816102f001528181610bdc01528181610ce201528181610efe01526110040152611c1b6000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c806395d89b41116100f9578063ccc7759911610097578063eddeb12311610071578063eddeb12314610461578063f2441b3214610474578063f687d12a14610494578063fc5fecd5146104a757600080fd5b8063ccc77599146103d4578063d9eeebed146103e7578063dd62ed3e1461041b57600080fd5b8063b84c8246116100d3578063b84c824614610386578063c47f00271461039b578063c7012626146103ae578063c835d7cc146103c157600080fd5b806395d89b4114610337578063a3413d031461033f578063a9059cbb1461037357600080fd5b80633ce4a5bc116101665780634d8943bb116101405780634d8943bb146102ac57806370a08231146102b557806385e1f4d0146102eb5780638b851b951461031257600080fd5b80633ce4a5bc1461024657806342966c681461028657806347e7ef241461029957600080fd5b806318160ddd1161019757806318160ddd1461021657806323b872dd1461021e578063313ce5671461023157600080fd5b806306fdde03146101be578063091d2788146101dc578063095ea7b3146101f3575b600080fd5b6101c66104ba565b6040516101d39190611648565b60405180910390f35b6101e560015481565b6040519081526020016101d3565b610206610201366004611687565b61054c565b60405190151581526020016101d3565b6005546101e5565b61020661022c3660046116b3565b610563565b60085460405160ff90911681526020016101d3565b61026173735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d3565b6102066102943660046116f4565b6105fa565b6102066102a7366004611687565b61060e565b6101e560025481565b6101e56102c336600461170d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6101e57f000000000000000000000000000000000000000000000000000000000000000081565b60085461026190610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6101c6610767565b6103667f000000000000000000000000000000000000000000000000000000000000000081565b6040516101d3919061172a565b610206610381366004611687565b610776565b610399610394366004611832565b610783565b005b6103996103a9366004611832565b6107e0565b6102066103bc366004611883565b610839565b6103996103cf36600461170d565b610988565b6103996103e236600461170d565b610a9c565b6103ef610bb0565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101d3565b6101e56104293660046118dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205490565b61039961046f3660046116f4565b610dce565b6000546102619073ffffffffffffffffffffffffffffffffffffffff1681565b6103996104a23660046116f4565b610e50565b6103ef6104b53660046116f4565b610ed2565b6060600680546104c990611915565b80601f01602080910402602001604051908101604052809291908181526020018280546104f590611915565b80156105425780601f1061051757610100808354040283529160200191610542565b820191906000526020600020905b81548152906001019060200180831161052557829003601f168201915b5050505050905090565b60006105593384846110ee565b5060015b92915050565b60006105708484846111f7565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460209081526040808320338452909152902054828110156105db576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105ef85336105ea8685611997565b6110ee565b506001949350505050565b600061060633836113b2565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab1480159061064c575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156106755750600854610100900473ffffffffffffffffffffffffffffffffffffffff163314155b156106ac576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106b683836114f4565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526107569186906119aa565b60405180910390a250600192915050565b6060600780546104c990611915565b60006105593384846111f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab146107d0576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60076107dc8282611a1b565b5050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461082d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60066107dc8282611a1b565b6000806000610846610bb0565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156108d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fc9190611b34565b610932576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61093c33856113b2565b60025460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161097591899189918791611b56565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146109d5576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a22576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610ae9576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610b36576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c679190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610cb6576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d699190611ba2565b905080600003610da5576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060025460015483610db89190611bbb565b610dc29190611bd2565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e1b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610a91565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e9d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610f65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f899190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610fd8576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015611067573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108b9190611ba2565b9050806000036110c7576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000906110d78784611bbb565b6110e19190611bd2565b9296929550919350505050565b73ffffffffffffffffffffffffffffffffffffffff831661113b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611188576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611244576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611291576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040902054818110156112f1576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112fb8282611997565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260036020526040808220939093559085168152908120805484929061133e908490611bd2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113a491815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff82166113ff576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260409020548181101561145f576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114698282611997565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260036020526040812091909155600580548492906114a4908490611997565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016111ea565b73ffffffffffffffffffffffffffffffffffffffff8216611541576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008282546115539190611bd2565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805483929061158d908490611bd2565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561160a576020818501810151868301820152016115ee565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061165b60208301846115e4565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461168457600080fd5b50565b6000806040838503121561169a57600080fd5b82356116a581611662565b946020939093013593505050565b6000806000606084860312156116c857600080fd5b83356116d381611662565b925060208401356116e381611662565b929592945050506040919091013590565b60006020828403121561170657600080fd5b5035919050565b60006020828403121561171f57600080fd5b813561165b81611662565b6020810160038310611765577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff8411156117b5576117b561176b565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff821117156118025761180261176b565b60405283815290508082840185101561181a57600080fd5b83836020830137600060208583010152509392505050565b60006020828403121561184457600080fd5b813567ffffffffffffffff81111561185b57600080fd5b8201601f8101841361186c57600080fd5b61187b8482356020840161179a565b949350505050565b6000806040838503121561189657600080fd5b823567ffffffffffffffff8111156118ad57600080fd5b8301601f810185136118be57600080fd5b6118cd8582356020840161179a565b95602094909401359450505050565b600080604083850312156118ef57600080fd5b82356118fa81611662565b9150602083013561190a81611662565b809150509250929050565b600181811c9082168061192957607f821691505b602082108103611962577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561055d5761055d611968565b6040815260006119bd60408301856115e4565b90508260208301529392505050565b601f821115611a1657806000526020600020601f840160051c810160208510156119f35750805b601f840160051c820191505b81811015611a1357600081556001016119ff565b50505b505050565b815167ffffffffffffffff811115611a3557611a3561176b565b611a4981611a438454611915565b846119cc565b6020601f821160018114611a9b5760008315611a655750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611a13565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015611ae95787850151825560209485019460019092019101611ac9565b5084821015611b2557868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b600060208284031215611b4657600080fd5b8151801515811461165b57600080fd5b608081526000611b6960808301876115e4565b6020830195909552506040810192909252606090910152919050565b600060208284031215611b9757600080fd5b815161165b81611662565b600060208284031215611bb457600080fd5b5051919050565b808202811582820484141761055d5761055d611968565b8082018082111561055d5761055d61196856fea26469706673582212202a06c5d72036d88c206ff2bfdd016b3ce8555bc0090e8bb5487bc61ea043732b64736f6c634300081a0033", + Bin: "0x60c060405234801561001057600080fd5b5060405161207238038061207283398101604081905261002f916101f0565b6001600160a01b038216158061004c57506001600160a01b038116155b1561006a5760405163d92e233d60e01b815260040160405180910390fd5b60066100768982610342565b5060076100838882610342565b506008805460ff191660ff881617905560808590528360028111156100aa576100aa610400565b60a08160028111156100be576100be610400565b905250600192909255600080546001600160a01b039283166001600160a01b0319909116179055600880549190921661010002610100600160a81b0319909116179055506104169350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261013357600080fd5b81516001600160401b0381111561014c5761014c61010c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561017a5761017a61010c565b60405281815283820160200185101561019257600080fd5b60005b828110156101b157602081860181015183830182015201610195565b506000918101602001919091529392505050565b8051600381106101d457600080fd5b919050565b80516001600160a01b03811681146101d457600080fd5b600080600080600080600080610100898b03121561020d57600080fd5b88516001600160401b0381111561022357600080fd5b61022f8b828c01610122565b60208b015190995090506001600160401b0381111561024d57600080fd5b6102598b828c01610122565b975050604089015160ff8116811461027057600080fd5b60608a0151909650945061028660808a016101c5565b60a08a0151909450925061029c60c08a016101d9565b91506102aa60e08a016101d9565b90509295985092959890939650565b600181811c908216806102cd57607f821691505b6020821081036102ed57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561033d57806000526020600020601f840160051c8101602085101561031a5750805b601f840160051c820191505b8181101561033a5760008155600101610326565b50505b505050565b81516001600160401b0381111561035b5761035b61010c565b61036f8161036984546102b9565b846102f3565b6020601f8211600181146103a3576000831561038b5750848201515b600019600385901b1c1916600184901b17845561033a565b600084815260208120601f198516915b828110156103d357878501518255602094850194600190920191016103b3565b50848210156103f15786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a051611c1b61045760003960006103440152600081816102f001528181610bdc01528181610ce201528181610efe01526110040152611c1b6000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c806395d89b41116100f9578063ccc7759911610097578063eddeb12311610071578063eddeb12314610461578063f2441b3214610474578063f687d12a14610494578063fc5fecd5146104a757600080fd5b8063ccc77599146103d4578063d9eeebed146103e7578063dd62ed3e1461041b57600080fd5b8063b84c8246116100d3578063b84c824614610386578063c47f00271461039b578063c7012626146103ae578063c835d7cc146103c157600080fd5b806395d89b4114610337578063a3413d031461033f578063a9059cbb1461037357600080fd5b80633ce4a5bc116101665780634d8943bb116101405780634d8943bb146102ac57806370a08231146102b557806385e1f4d0146102eb5780638b851b951461031257600080fd5b80633ce4a5bc1461024657806342966c681461028657806347e7ef241461029957600080fd5b806318160ddd1161019757806318160ddd1461021657806323b872dd1461021e578063313ce5671461023157600080fd5b806306fdde03146101be578063091d2788146101dc578063095ea7b3146101f3575b600080fd5b6101c66104ba565b6040516101d39190611648565b60405180910390f35b6101e560015481565b6040519081526020016101d3565b610206610201366004611687565b61054c565b60405190151581526020016101d3565b6005546101e5565b61020661022c3660046116b3565b610563565b60085460405160ff90911681526020016101d3565b61026173735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d3565b6102066102943660046116f4565b6105fa565b6102066102a7366004611687565b61060e565b6101e560025481565b6101e56102c336600461170d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6101e57f000000000000000000000000000000000000000000000000000000000000000081565b60085461026190610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6101c6610767565b6103667f000000000000000000000000000000000000000000000000000000000000000081565b6040516101d3919061172a565b610206610381366004611687565b610776565b610399610394366004611832565b610783565b005b6103996103a9366004611832565b6107e0565b6102066103bc366004611883565b610839565b6103996103cf36600461170d565b610988565b6103996103e236600461170d565b610a9c565b6103ef610bb0565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101d3565b6101e56104293660046118dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205490565b61039961046f3660046116f4565b610dce565b6000546102619073ffffffffffffffffffffffffffffffffffffffff1681565b6103996104a23660046116f4565b610e50565b6103ef6104b53660046116f4565b610ed2565b6060600680546104c990611915565b80601f01602080910402602001604051908101604052809291908181526020018280546104f590611915565b80156105425780601f1061051757610100808354040283529160200191610542565b820191906000526020600020905b81548152906001019060200180831161052557829003601f168201915b5050505050905090565b60006105593384846110ee565b5060015b92915050565b60006105708484846111f7565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460209081526040808320338452909152902054828110156105db576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105ef85336105ea8685611997565b6110ee565b506001949350505050565b600061060633836113b2565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab1480159061064c575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156106755750600854610100900473ffffffffffffffffffffffffffffffffffffffff163314155b156106ac576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106b683836114f4565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526107569186906119aa565b60405180910390a250600192915050565b6060600780546104c990611915565b60006105593384846111f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab146107d0576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60076107dc8282611a1b565b5050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461082d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60066107dc8282611a1b565b6000806000610846610bb0565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156108d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fc9190611b34565b610932576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61093c33856113b2565b60025460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161097591899189918791611b56565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146109d5576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a22576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610ae9576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610b36576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c679190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610cb6576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d699190611ba2565b905080600003610da5576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060025460015483610db89190611bbb565b610dc29190611bd2565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e1b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610a91565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e9d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610f65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f899190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610fd8576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015611067573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108b9190611ba2565b9050806000036110c7576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000906110d78784611bbb565b6110e19190611bd2565b9296929550919350505050565b73ffffffffffffffffffffffffffffffffffffffff831661113b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611188576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611244576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611291576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040902054818110156112f1576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112fb8282611997565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260036020526040808220939093559085168152908120805484929061133e908490611bd2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113a491815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff82166113ff576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260409020548181101561145f576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114698282611997565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260036020526040812091909155600580548492906114a4908490611997565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016111ea565b73ffffffffffffffffffffffffffffffffffffffff8216611541576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008282546115539190611bd2565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805483929061158d908490611bd2565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561160a576020818501810151868301820152016115ee565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061165b60208301846115e4565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461168457600080fd5b50565b6000806040838503121561169a57600080fd5b82356116a581611662565b946020939093013593505050565b6000806000606084860312156116c857600080fd5b83356116d381611662565b925060208401356116e381611662565b929592945050506040919091013590565b60006020828403121561170657600080fd5b5035919050565b60006020828403121561171f57600080fd5b813561165b81611662565b6020810160038310611765577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff8411156117b5576117b561176b565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff821117156118025761180261176b565b60405283815290508082840185101561181a57600080fd5b83836020830137600060208583010152509392505050565b60006020828403121561184457600080fd5b813567ffffffffffffffff81111561185b57600080fd5b8201601f8101841361186c57600080fd5b61187b8482356020840161179a565b949350505050565b6000806040838503121561189657600080fd5b823567ffffffffffffffff8111156118ad57600080fd5b8301601f810185136118be57600080fd5b6118cd8582356020840161179a565b95602094909401359450505050565b600080604083850312156118ef57600080fd5b82356118fa81611662565b9150602083013561190a81611662565b809150509250929050565b600181811c9082168061192957607f821691505b602082108103611962577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561055d5761055d611968565b6040815260006119bd60408301856115e4565b90508260208301529392505050565b601f821115611a1657806000526020600020601f840160051c810160208510156119f35750805b601f840160051c820191505b81811015611a1357600081556001016119ff565b50505b505050565b815167ffffffffffffffff811115611a3557611a3561176b565b611a4981611a438454611915565b846119cc565b6020601f821160018114611a9b5760008315611a655750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611a13565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015611ae95787850151825560209485019460019092019101611ac9565b5084821015611b2557868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b600060208284031215611b4657600080fd5b8151801515811461165b57600080fd5b608081526000611b6960808301876115e4565b6020830195909552506040810192909252606090910152919050565b600060208284031215611b9757600080fd5b815161165b81611662565b600060208284031215611bb457600080fd5b5051919050565b808202811582820484141761055d5761055d611968565b8082018082111561055d5761055d61196856fea2646970667358221220d6ba834f25782689ed13bffb6ac9ff2c8d3b5342c94a515aea8197a76070ad3f64736f6c634300081a0033", } // 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 8b66583fd..75973764a 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\":\"testApproveFailsIfRecipientIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"testDepositFailsIfRecipientIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfSenderIsNotGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTransfer\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTransferFailsIfNoBalance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testTransferFailsIfRecipientIsZeroAddress\",\"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\":\"testUpdateGasLimitFailsIfSenderIsNotProtocol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateGatewayAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateGatewayAddressFailsIfSenderIsNotProtocol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateGatewayAddressFailsIfZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateNameAndSymbol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateNameAndSymbolFailsIfSenderIsNotProtocol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateProtocolFlatFee\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateProtocolFlatFeeFailsIfSenderIsNotProtocol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateSystemContractAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateSystemContractAddressFailsIfSenderIsNotProtocol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpdateSystemContractAddressFailsIfZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdraw\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawFailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawFailsIfNoBalance\",\"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: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061eb4f8061003c6000396000f3fe608060405234801561001057600080fd5b506004361061030a5760003560e01c80638ce7ef051161019c578063d1fd3291116100ee578063dfbdf60011610097578063f1f87f4011610071578063f1f87f40146104c3578063f2413096146104cb578063fa7626d4146104d357600080fd5b8063dfbdf600146104ab578063e13aba48146104b3578063e20c9f71146104bb57600080fd5b8063d591221f116100c8578063d591221f14610493578063d97136a21461049b578063dcba486a146104a357600080fd5b8063d1fd32911461047b578063d27b042714610483578063d509b16c1461048b57600080fd5b8063b0464fdc11610150578063ba414fa61161012a578063ba414fa614610453578063c35f9d1d1461046b578063d04cda981461047357600080fd5b8063b0464fdc1461043b578063b5508aa914610443578063b79cad091461044b57600080fd5b806392a68b8d1161018157806392a68b8d14610423578063a4aa6c7c1461042b578063ae9687dc1461043357600080fd5b80638ce7ef0514610406578063916a17c61461040e57600080fd5b80633f7286f4116102605780636ff45850116102095780637f924c4e116101e35780637f924c4e146103e157806380326680146103e957806385226c81146103f157600080fd5b80636ff45850146103c957806370557298146103d15780637ee68316146103d957600080fd5b80635539d92e1161023a5780635539d92e146103a45780635f01db7e146103ac57806366d9a9a0146103b457600080fd5b80633f7286f41461038c5780634cfc0aaa14610394578063513999621461039c57600080fd5b806328438826116102c2578063367e31231161029c578063367e3123146103745780633be9ec801461037c5780633e5e3c231461038457600080fd5b8063284388261461034f5780632ade3880146103575780632f6254fc1461036c57600080fd5b80630ea7e563116102f35780630ea7e563146103215780631142744e146103295780631ed7831c1461033157600080fd5b80630809dfef1461030f5780630a9254e414610319575b600080fd5b6103176104e0565b005b61031761066e565b610317610d6a565b610317610e53565b610339610f37565b604051610346919061977f565b60405180910390f35b610317610f99565b61035f6111e4565b604051610346919061981b565b610317611326565b610317611497565b610317611569565b610339611757565b6103396117b7565b610317611817565b6103176118f0565b610317611c6d565b610317611e9a565b6103bc612007565b6040516103469190619981565b610317612189565b610317612399565b6103176125e9565b610317612a7a565b610317612c9a565b6103f9612d6e565b6040516103469190619a1f565b610317612e3e565b61041661303e565b6040516103469190619a96565b610317613139565b61031761320c565b6103176133c1565b610416613699565b6103f9613794565b610317613864565b61045b613bf6565b6040519015158152602001610346565b610317613cca565b610317613d9c565b610317613ee0565b610317614023565b610317614166565b6103176147fa565b6103176148de565b610317614a64565b610317614ce7565b610317614e2a565b6103396150d4565b610317615134565b61031761527a565b601f5461045b9060ff1681565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561053957600080fd5b505af115801561054d573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156105bd57600080fd5b505af11580156105d1573d6000803e3d6000fd5b5050601f546040517f47e7ef2400000000000000000000000000000000000000000000000000000000815260006004820152620186a060248201526101009091046001600160a01b031692506347e7ef2491506044015b6020604051808303816000875af1158015610647573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066b9190619b2d565b50565b602480547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602580549091166112341790556040516106b49061969f565b604051809103906000f0801580156106d0573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600f81527f476174657761795a45564d2e736f6c0000000000000000000000000000000000602082015260248054925190810193909352921660448201526107b4919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc955000000000000000000000000000000000000000000000000000000001790526154d6565b602280546001600160a01b03929092167fffffffffffffffffffffffff00000000000000000000000000000000000000009283168117909155602180549092168117909155604080517f2722feee0000000000000000000000000000000000000000000000000000000081529051632722feee916004808201926020929091908290030181865afa15801561084d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108719190619b6b565b602680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691821790556040517f06447d560000000000000000000000000000000000000000000000000000000081526004810191909152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b15801561090f57600080fd5b505af1158015610923573d6000803e3d6000fd5b505050506000806000604051610938906196ac565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610974573d6000803e3d6000fd5b50602080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556021546040516012936001938493600093919216906109ca906196b9565b6109d996959493929190619b86565b604051809103906000f0801580156109f5573d6000803e3d6000fd5b50601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b03938416810291909117918290556020546040517fee2815ba00000000000000000000000000000000000000000000000000000000815260016004820152919092048316602482015291169063ee2815ba90604401600060405180830381600087803b158015610a9557600080fd5b505af1158015610aa9573d6000803e3d6000fd5b50506020546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b158015610b1357600080fd5b505af1158015610b27573d6000803e3d6000fd5b50506026546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610ba757600080fd5b505af1158015610bbb573d6000803e3d6000fd5b50506022546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610c3b57600080fd5b505af1158015610c4f573d6000803e3d6000fd5b5050601f54602480546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09281019290925261010090920490911692506347e7ef2491506044016020604051808303816000875af1158015610ccd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf19190619b2d565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610d5057600080fd5b505af1158015610d64573d6000803e3d6000fd5b50505050565b604051630618f58760e51b81527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015610dd657600080fd5b505af1158015610dea573d6000803e3d6000fd5b5050601f546040517fc835d7cc00000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063c835d7cc91506024015b600060405180830381600087803b158015610d5057600080fd5b604051630618f58760e51b81527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015610ebf57600080fd5b505af1158015610ed3573d6000803e3d6000fd5b5050601f54602480546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09281019290925261010090920490911692506347e7ef249150604401610628565b60606016805480602002602001604051908101604052809291908181526020018280548015610f8f57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610f71575b5050505050905090565b601f546025546040516370a0823160e01b81526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015610fee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110129190619c7b565b905061101f6000826154f5565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015611097573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110bb9190619b2d565b50604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561112857600080fd5b505af115801561113c573d6000803e3d6000fd5b5050601f546025546040517f23b872dd000000000000000000000000000000000000000000000000000000008152600060048201526001600160a01b039182166024820152604481018690526101009092041692506323b872dd91506064015b6020604051808303816000875af11580156111bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111df9190619b2d565b505050565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561131d57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561130657838290600052602060002001805461127990619c94565b80601f01602080910402602001604051908101604052809291908181526020018280546112a590619c94565b80156112f25780601f106112c7576101008083540402835291602001916112f2565b820191906000526020600020905b8154815290600101906020018083116112d557829003601f168201915b50505050508152602001906001019061125a565b505050508152505081526020019060010190611208565b50505050905090565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561137f57600080fd5b505af1158015611393573d6000803e3d6000fd5b5050601f546040517fc835d7cc00000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063c835d7cc9150602401600060405180830381600087803b1580156113fb57600080fd5b505af115801561140f573d6000803e3d6000fd5b50505050611495601f60019054906101000a90046001600160a01b03166001600160a01b031663f2441b326040518163ffffffff1660e01b8152600401602060405180830381865afa158015611469573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148d9190619b6b565b61321161557d565b565b604051630618f58760e51b81527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561150357600080fd5b505af1158015611517573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063eddeb1239150602401610e39565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156115c257600080fd5b505af11580156115d6573d6000803e3d6000fd5b50506020546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820152600060248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b15801561164057600080fd5b505af1158015611654573d6000803e3d6000fd5b5050604051630618f58760e51b81527fe661aed0000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b1580156116c557600080fd5b505af11580156116d9573d6000803e3d6000fd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa15801561172f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117539190619ce1565b5050565b60606018805480602002602001604051908101604052809291908181526020018280548015610f8f576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610f71575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610f8f576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610f71575050505050905090565b604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561188357600080fd5b505af1158015611897573d6000803e3d6000fd5b5050601f546040517f095ea7b300000000000000000000000000000000000000000000000000000000815260006004820152600a60248201526101009091046001600160a01b0316925063095ea7b39150604401610628565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152600a908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561194e57600080fd5b505af1158015611962573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600481018690526101009091046001600160a01b0316925063f687d12a9150602401600060405180830381600087803b1580156119c957600080fd5b505af11580156119dd573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015611a3a57600080fd5b505af1158015611a4e573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600481018590526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b158015611ab557600080fd5b505af1158015611ac9573d6000803e3d6000fd5b5050601f546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b03166004820181905260006024830152925063095ea7b391506044016020604051808303816000875af1158015611b3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b609190619b2d565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611bbf57600080fd5b505af1158015611bd3573d6000803e3d6000fd5b5050601f546025546040805160609290921b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208301528051601481840301815260348301918290527fc7012626000000000000000000000000000000000000000000000000000000009091526001600160a01b0361010090930492909216935063c7012626925061119c9190600190603801619d0d565b604051630618f58760e51b81527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015611cd957600080fd5b505af1158015611ced573d6000803e3d6000fd5b5050601f546040517fc47f002700000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f544f4b454e32000000000000000000000000000000000000000000000000000060448201526101009091046001600160a01b0316925063c47f00279150606401600060405180830381600087803b158015611d8157600080fd5b505af1158015611d95573d6000803e3d6000fd5b5050604051630618f58760e51b81527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015611e0557600080fd5b505af1158015611e19573d6000803e3d6000fd5b5050601f546040517fb84c8246000000000000000000000000000000000000000000000000000000008152602060048083019190915260248201527f544b4e320000000000000000000000000000000000000000000000000000000060448201526101009091046001600160a01b0316925063b84c82469150606401610e39565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611ef357600080fd5b505af1158015611f07573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063f687d12a9150602401600060405180830381600087803b158015611f6e57600080fd5b505af1158015611f82573d6000803e3d6000fd5b50505050611495600a601f60019054906101000a90046001600160a01b03166001600160a01b031663091d27886040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fde573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120029190619c7b565b6154f5565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561131d578382906000526020600020906002020160405180604001604052908160008201805461205e90619c94565b80601f016020809104026020016040519081016040528092919081815260200182805461208a90619c94565b80156120d75780601f106120ac576101008083540402835291602001916120d7565b820191906000526020600020905b8154815290600101906020018083116120ba57829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561217157602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161211e5790505b5050505050815250508152602001906001019061202b565b601f546025546040516370a0823160e01b81526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa1580156121de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122029190619c7b565b905061220f6000826154f5565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015612287573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ab9190619b2d565b50604051630618f58760e51b81527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561231857600080fd5b505af115801561232c573d6000803e3d6000fd5b5050601f54602480546025546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152908216928101929092526044820186905261010090920490911692506323b872dd915060640161119c565b601f546025546040516370a0823160e01b81526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa1580156123ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124129190619c7b565b905061241f6000826154f5565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261c35092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015612496573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ba9190619b2d565b50601f54602480546025546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169281019290925260448201849052610100909204909116906323b872dd906064015b6020604051808303816000875af115801561253f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125639190619b2d565b50601f546025546040516370a0823160e01b81526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa1580156125b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125dd9190619c7b565b90506111df82826154f5565b6126a26040518060400160405280600581526020017f544f4b454e000000000000000000000000000000000000000000000000000000815250601f60019054906101000a90046001600160a01b03166001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015612675573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261269d9190810190619df7565b6155de565b61272e6040518060400160405280600381526020017f544b4e0000000000000000000000000000000000000000000000000000000000815250601f60019054906101000a90046001600160a01b03166001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015612675573d6000803e3d6000fd5b60265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561278757600080fd5b505af115801561279b573d6000803e3d6000fd5b5050601f546040517fc47f002700000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f544f4b454e32000000000000000000000000000000000000000000000000000060448201526101009091046001600160a01b0316925063c47f00279150606401600060405180830381600087803b15801561282f57600080fd5b505af1158015612843573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156128a057600080fd5b505af11580156128b4573d6000803e3d6000fd5b5050601f546040517fb84c8246000000000000000000000000000000000000000000000000000000008152602060048083019190915260248201527f544b4e320000000000000000000000000000000000000000000000000000000060448201526101009091046001600160a01b0316925063b84c82469150606401600060405180830381600087803b15801561294a57600080fd5b505af115801561295e573d6000803e3d6000fd5b505050506129ee6040518060400160405280600681526020017f544f4b454e320000000000000000000000000000000000000000000000000000815250601f60019054906101000a90046001600160a01b03166001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015612675573d6000803e3d6000fd5b6114956040518060400160405280600481526020017f544b4e3200000000000000000000000000000000000000000000000000000000815250601f60019054906101000a90046001600160a01b03166001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015612675573d6000803e3d6000fd5b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612acf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612af39190619c7b565b9050612b02620186a0826154f5565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612b5b57600080fd5b505af1158015612b6f573d6000803e3d6000fd5b5050601f54602480546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09281019290925261010090920490911692506347e7ef2491506044016020604051808303816000875af1158015612bed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c119190619b2d565b506000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c8b9190619c7b565b905061175362030d40826154f5565b604051630618f58760e51b81527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015612d0657600080fd5b505af1158015612d1a573d6000803e3d6000fd5b5050601f546040517f42966c68000000000000000000000000000000000000000000000000000000008152620249f060048201526101009091046001600160a01b031692506342966c689150602401610628565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101561131d578382906000526020600020018054612db190619c94565b80601f0160208091040260200160405190810160405280929190818152602001828054612ddd90619c94565b8015612e2a5780601f10612dff57610100808354040283529160200191612e2a565b820191906000526020600020905b815481529060010190602001808311612e0d57829003601f168201915b505050505081526020019060010190612d92565b601f546025546040516370a0823160e01b81526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015612e93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eb79190619c7b565b9050612ec46000826154f5565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015612f3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f609190619b2d565b50604051630618f58760e51b81527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015612fcd57600080fd5b505af1158015612fe1573d6000803e3d6000fd5b5050601f546025546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810186905261010090920416925063a9059cbb915060440161119c565b6060601d805480602002602001604051908101604052809291908181526020016000905b8282101561131d5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561312157602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116130ce5790505b50505050508152505081526020019060010190613062565b604051630618f58760e51b81527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156131a557600080fd5b505af11580156131b9573d6000803e3d6000fd5b5050601f546040517fccc7759900000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063ccc775999150602401610e39565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015613284573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132a89190619b2d565b50604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561331557600080fd5b505af1158015613329573d6000803e3d6000fd5b5050601f546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815260006004820152602481018590526101009091046001600160a01b0316925063a9059cbb91506044015b6020604051808303816000875af115801561339d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117539190619b2d565b601f80546001600160a01b03610100808304821681027fffffffffffffffffffffff0000000000000000000000000000000000000000ff9093169290921792839055604080517f06fdde03000000000000000000000000000000000000000000000000000000008152905160009493909304909116916306fdde039160048082019286929091908290030181865afa158015613461573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526134899190810190619df7565b90506134ca6040518060400160405280600581526020017f544f4b454e000000000000000000000000000000000000000000000000000000815250826155de565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801561351f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135479190810190619df7565b90506135886040518060400160405280600381526020017f544b4e0000000000000000000000000000000000000000000000000000000000815250826155de565b6000601f60019054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156135dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136019190619e40565b905061361160128260ff166154f5565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613666573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061368a9190619c7b565b9050610d64620186a0826154f5565b6060601c805480602002602001604051908101604052809291908181526020016000905b8282101561131d5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561377c57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116137295790505b505050505081525050815260200190600101906136bd565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101561131d5783829060005260206000200180546137d790619c94565b80601f016020809104026020016040519081016040528092919081815260200182805461380390619c94565b80156138505780601f1061382557610100808354040283529160200191613850565b820191906000526020600020905b81548152906001019060200180831161383357829003601f168201915b5050505050815260200190600101906137b8565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152600a906305f5e10090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156138c657600080fd5b505af11580156138da573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600481018690526101009091046001600160a01b0316925063f687d12a9150602401600060405180830381600087803b15801561394157600080fd5b505af1158015613955573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156139b257600080fd5b505af11580156139c6573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600481018590526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b158015613a2d57600080fd5b505af1158015613a41573d6000803e3d6000fd5b5050601f546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b031660048201819052630bebc2006024830152925063095ea7b391506044016020604051808303816000875af1158015613ab7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613adb9190619b2d565b50604051630618f58760e51b81527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015613b4857600080fd5b505af1158015613b5c573d6000803e3d6000fd5b5050601f546025546040805160609290921b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208301528051601481840301815260348301918290527fc7012626000000000000000000000000000000000000000000000000000000009091526001600160a01b0361010090930492909216935063c7012626925061119c9190606490603801619d0d565b60085460009060ff1615613c0e575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015613c9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cc39190619c7b565b1415905090565b604051630618f58760e51b81527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015613d3657600080fd5b505af1158015613d4a573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063f687d12a9150602401610e39565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613df557600080fd5b505af1158015613e09573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b158015613e7057600080fd5b505af1158015613e84573d6000803e3d6000fd5b50505050611495600a601f60019054906101000a90046001600160a01b03166001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fde573d6000803e3d6000fd5b60265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613f3957600080fd5b505af1158015613f4d573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015613fbd57600080fd5b505af1158015613fd1573d6000803e3d6000fd5b5050601f546040517fccc77599000000000000000000000000000000000000000000000000000000008152600060048201526101009091046001600160a01b0316925063ccc775999150602401610e39565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561407c57600080fd5b505af1158015614090573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561410057600080fd5b505af1158015614114573d6000803e3d6000fd5b5050601f546040517fc835d7cc000000000000000000000000000000000000000000000000000000008152600060048201526101009091046001600160a01b0316925063c835d7cc9150602401610e39565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152600a908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156141c457600080fd5b505af11580156141d8573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600481018690526101009091046001600160a01b0316925063f687d12a9150602401600060405180830381600087803b15801561423f57600080fd5b505af1158015614253573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156142b057600080fd5b505af11580156142c4573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600481018590526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b15801561432b57600080fd5b505af115801561433f573d6000803e3d6000fd5b5050601f54602480546040516370a0823160e01b81526001600160a01b039182166004820152600095506101009093041692506370a082319101602060405180830381865afa158015614396573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143ba9190619c7b565b90506143c9620186a0826154f5565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561441e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144429190619c7b565b9050614451620186a0826154f5565b601f546026546040516370a0823160e01b81526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa1580156144a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144ca9190619c7b565b601f546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b03166004820181905261c350602483015291925063095ea7b3906044016020604051808303816000875af115801561453c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145609190619b2d565b50601f546025546040805160609290921b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208301528051601481840301815260348301918290527fc7012626000000000000000000000000000000000000000000000000000000009091526001600160a01b03610100909304929092169163c7012626916145f8919061c35090603801619d0d565b6020604051808303816000875af1158015614617573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061463b9190619b2d565b50601f546026546040516370a0823160e01b81526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015614691573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146b59190619c7b565b90506146d5856146c58885619e92565b6146cf9190619e92565b826154f5565b601f54602480546040516370a0823160e01b81526001600160a01b0391821660048201526000936101009004909116916370a082319101602060405180830381865afa158015614729573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061474d9190619c7b565b90506147698661475f8961c350619ea5565b6146cf9190619ea5565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156147be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147e29190619c7b565b90506147f061c350826154f5565b5050505050505050565b601f546025546040516370a0823160e01b81526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa15801561484f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148739190619c7b565b90506148806000826154f5565b601f546025546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261c350602482018190529261010090049091169063a9059cbb90604401612520565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015614956573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061497a9190619b2d565b50604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156149e757600080fd5b505af11580156149fb573d6000803e3d6000fd5b5050601f54602480546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000928101929092526044820186905261010090920490911692506323b872dd915060640161337e565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614abd57600080fd5b505af1158015614ad1573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a6004820181905293508392506101009091046001600160a01b03169063f687d12a90602401600060405180830381600087803b158015614b3d57600080fd5b505af1158015614b51573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015614bae57600080fd5b505af1158015614bc2573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b158015614c2957600080fd5b505af1158015614c3d573d6000803e3d6000fd5b50505050600080601f60019054906101000a90046001600160a01b03166001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015614c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614cba9190619ce1565b601f549193509150614cda9061010090046001600160a01b03168361557d565b610d646146cf8486619e92565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614d4057600080fd5b505af1158015614d54573d6000803e3d6000fd5b5050601f546040517fccc7759900000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063ccc775999150602401600060405180830381600087803b158015614dbc57600080fd5b505af1158015614dd0573d6000803e3d6000fd5b50505050611495601f60019054906101000a90046001600160a01b03166001600160a01b0316638b851b956040518163ffffffff1660e01b8152600401602060405180830381865afa158015611469573d6000803e3d6000fd5b601f54602480546040516370a0823160e01b81526001600160a01b0391821660048201526000936101009004909116916370a082319101602060405180830381865afa158015614e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614ea29190619c7b565b9050614eb1620186a0826154f5565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015614f06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614f2a9190619c7b565b9050614f39620186a0826154f5565b601f546040517f42966c6800000000000000000000000000000000000000000000000000000000815261c35060048201526101009091046001600160a01b0316906342966c68906024016020604051808303816000875af1158015614fa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614fc69190619b2d565b50601f54602480546040516370a0823160e01b81526001600160a01b0391821660048201526000936101009004909116916370a082319101602060405180830381865afa15801561501b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061503f9190619c7b565b905061504d61c350826154f5565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156150a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906150c69190619c7b565b9050610d6461c350826154f5565b60606015805480602002602001604051908101604052809291908181526020018280548015610f8f576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610f71575050505050905090565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561518d57600080fd5b505af11580156151a1573d6000803e3d6000fd5b50506020546040517fee2815ba00000000000000000000000000000000000000000000000000000000815260016004820152600060248201526001600160a01b03909116925063ee2815ba9150604401600060405180830381600087803b15801561520b57600080fd5b505af115801561521f573d6000803e3d6000fd5b5050604051630618f58760e51b81527f78fff396000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024016116ab565b601f546025546040516370a0823160e01b81526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa1580156152cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906152f39190619c7b565b90506153006000826154f5565b601f54602480546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201819052928101929092526000926101009004169063dd62ed3e90604401602060405180830381865afa158015615376573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061539a9190619c7b565b90506153a76000826154f5565b604051630618f58760e51b81527f10bad14700000000000000000000000000000000000000000000000000000000600482015261c35090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561541757600080fd5b505af115801561542b573d6000803e3d6000fd5b5050601f54602480546025546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152908216928101929092526044820186905261010090920490911692506323b872dd91506064016020604051808303816000875af11580156154b2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d649190619b2d565b60006154e06196c6565b6154eb848483615630565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c54906044015b60006040518083038186803b15801561556157600080fd5b505afa158015615575573d6000803e3d6000fd5b505050505050565b6040517f515361f60000000000000000000000000000000000000000000000000000000081526001600160a01b03808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f690604401615549565b6040517ff320d963000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f320d963906155499085908590600401619eb8565b60008061563d85846156ab565b90506156a06040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f7879000000815250828660405160200161568b929190619edd565b604051602081830303815290604052856156b7565b9150505b9392505050565b60006156a483836156e5565b60c081015151600090156156db576156d484848460c00151615700565b90506156a4565b6156d484846158a6565b60006156f18383615991565b6156a4838360200151846156b7565b60008061570b61599d565b905060006157198683615a70565b905060006157308260600151836020015185615f16565b9050600061574083838989616128565b9050600061574d82616fa5565b602081015181519192509060030b156157c057898260400151604051602001615777929190619eff565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526157b791600401619f80565b60405180910390fd5b60006158036040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001617174565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90615856908490600401619f80565b602060405180830381865afa158015615873573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906158979190619b6b565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc925906158fb908790600401619f80565b600060405180830381865afa158015615918573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526159409190810190619fb3565b9050600061596e828560405160200161595a929190619fe8565b604051602081830303815290604052617374565b90506001600160a01b0381166154eb57848460405160200161577792919061a017565b61175382826000617387565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90615a2490849060040161a0c2565b600060405180830381865afa158015615a41573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615a699190810190619df7565b9250505090565b615aa26040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050615aed6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b615af68561748a565b60208201526000615b068661786f565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015615b48573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615b709190810190619df7565b86838560200151604051602001615b8a949392919061a109565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190615be2908590600401619f80565b600060405180830381865afa158015615bff573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615c279190810190619df7565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690615c6f90849060040161a20d565b602060405180830381865afa158015615c8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615cb09190619b2d565b615cc55781604051602001615777919061a25f565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890615d0a90849060040161a2f1565b600060405180830381865afa158015615d27573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615d4f9190810190619df7565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690615d9690849060040161a343565b602060405180830381865afa158015615db3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615dd79190619b2d565b15615e6c576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890615e2190849060040161a343565b600060405180830381865afa158015615e3e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615e669190810190619df7565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001615e91919061a395565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401615ebd929190619eb8565b600060405180830381865afa158015615eda573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615f029190810190619df7565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081615f325790505090506040518060400160405280600481526020017f677265700000000000000000000000000000000000000000000000000000000081525081600081518110615f9257615f9261a401565b60200260200101819052506040518060400160405280600381526020017f2d726c000000000000000000000000000000000000000000000000000000000081525081600181518110615fe657615fe661a401565b602002602001018190525084604051602001616002919061a430565b604051602081830303815290604052816002815181106160245761602461a401565b602002602001018190525082604051602001616040919061a49c565b604051602081830303815290604052816003815181106160625761606261a401565b6020026020010181905250600061607882616fa5565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506161099060408051808201825260008082526020918201528151808301909252845182528085019082015290617af2565b61611e5785604051602001615777919061a4dd565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015616178565b511590565b6162ec57826020015115616234576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a4016157b7565b8260c00151156162ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a4016157b7565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161630557905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806163609061a56e565b935060ff16815181106163755761637561a401565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016163c6919061a58d565b6040516020818303038152906040528282806163e19061a56e565b935060ff16815181106163f6576163f661a401565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806164439061a56e565b935060ff16815181106164585761645861a401565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806164a59061a56e565b935060ff16815181106164ba576164ba61a401565b602002602001018190525087602001518282806164d69061a56e565b935060ff16815181106164eb576164eb61a401565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806165389061a56e565b935060ff168151811061654d5761654d61a401565b6020908102919091010152875182826165658161a56e565b935060ff168151811061657a5761657a61a401565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806165c79061a56e565b935060ff16815181106165dc576165dc61a401565b60200260200101819052506165f046617b53565b82826165fb8161a56e565b935060ff16815181106166105761661061a401565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c65000000000000000000000000000000000081525082828061665d9061a56e565b935060ff16815181106166725761667261a401565b60200260200101819052508682828061668a9061a56e565b935060ff168151811061669f5761669f61a401565b60209081029190910101528551156167c65760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826166f08161a56e565b935060ff16815181106167055761670561a401565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90616755908990600401619f80565b600060405180830381865afa158015616772573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261679a9190810190619df7565b82826167a58161a56e565b935060ff16815181106167ba576167ba61a401565b60200260200101819052505b8460200151156168965760408051808201909152601281527f2d2d766572696679536f75726365436f646500000000000000000000000000006020820152828261680f8161a56e565b935060ff16815181106168245761682461a401565b60200260200101819052506040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152508282806168719061a56e565b935060ff16815181106168865761688661a401565b6020026020010181905250616a5d565b6168ce6161738660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6169615760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826169118161a56e565b935060ff16815181106169265761692661a401565b60200260200101819052508460a00151604051602001616946919061a430565b6040516020818303038152906040528282806168719061a56e565b8460c001511580156169a45750604080890151815180830183526000808252602091820152825180840190935281518352908101908201526169a290511590565b155b15616a5d5760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826169e88161a56e565b935060ff16815181106169fd576169fd61a401565b6020026020010181905250616a1188617bf3565b604051602001616a21919061a430565b604051602081830303815290604052828280616a3c9061a56e565b935060ff1681518110616a5157616a5161a401565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152616a9190511590565b616b265760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282616ad48161a56e565b935060ff1681518110616ae957616ae961a401565b60200260200101819052508460400151828280616b059061a56e565b935060ff1681518110616b1a57616b1a61a401565b60200260200101819052505b606085015115616c475760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282616b6f8161a56e565b935060ff1681518110616b8457616b8461a401565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015616bf3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616c1b9190810190619df7565b8282616c268161a56e565b935060ff1681518110616c3b57616c3b61a401565b60200260200101819052505b60e08501515115616cee5760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282616c918161a56e565b935060ff1681518110616ca657616ca661a401565b6020026020010181905250616cc28560e0015160000151617b53565b8282616ccd8161a56e565b935060ff1681518110616ce257616ce261a401565b60200260200101819052505b60e08501516020015115616d985760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282616d3b8161a56e565b935060ff1681518110616d5057616d5061a401565b6020026020010181905250616d6c8560e0015160200151617b53565b8282616d778161a56e565b935060ff1681518110616d8c57616d8c61a401565b60200260200101819052505b60e08501516040015115616e425760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282616de58161a56e565b935060ff1681518110616dfa57616dfa61a401565b6020026020010181905250616e168560e0015160400151617b53565b8282616e218161a56e565b935060ff1681518110616e3657616e3661a401565b60200260200101819052505b60e08501516060015115616eec5760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282616e8f8161a56e565b935060ff1681518110616ea457616ea461a401565b6020026020010181905250616ec08560e0015160600151617b53565b8282616ecb8161a56e565b935060ff1681518110616ee057616ee061a401565b60200260200101819052505b60008160ff1667ffffffffffffffff811115616f0a57616f0a619d2f565b604051908082528060200260200182016040528015616f3d57816020015b6060815260200190600190039081616f285790505b50905060005b8260ff168160ff161015616f9657838160ff1681518110616f6657616f6661a401565b6020026020010151828260ff1681518110616f8357616f8361a401565b6020908102919091010152600101616f43565b5093505050505b949350505050565b616fcc6040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916170529186910161a5f8565b600060405180830381865afa15801561706f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526170979190810190619df7565b905060006170a586836186e2565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b81526004016170d59190619a1f565b6000604051808303816000875af11580156170f4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261711c919081019061a63f565b805190915060030b158015906171355750602081015151155b80156171445750604081015151155b1561611e578160008151811061715c5761715c61a401565b6020026020010151604051602001615777919061a6f5565b606060006171a98560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506171e09082905b90618837565b1561733d57600061725d82617257846172516172238a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b9061885e565b906188c0565b604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506172c1908290618837565b1561732b57604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617328905b8290618945565b90505b6173348161896b565b925050506156a4565b821561735657848460405160200161577792919061a8e1565b50506040805160208101909152600081526156a4565b509392505050565b6000808251602084016000f09392505050565b8160a001511561739657505050565b60006173a38484846189d4565b905060006173b082616fa5565b602081015181519192509060030b15801561744c5750604080518082018252600781527f53554343455353000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261744c906040805180820182526000808252602091820152815180830190925284518252808501908201526171da565b1561745957505050505050565b60408201515115617479578160400151604051602001615777919061a988565b80604051602001615777919061a9e6565b606060006174bf8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150617524905b8290617af2565b1561759357604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526156a49061758e908390618f6f565b61896b565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526175f5905b8290618ff9565b6001036176c257604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261765b90617321565b50604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526156a49061758e905b8390618945565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526177219061751d565b1561785857604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290617789908390619093565b90506000816001835161779c9190619ea5565b815181106177ac576177ac61a401565b6020026020010151905061784f61758e6178226040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290618f6f565b95945050505050565b82604051602001615777919061aa51565b50919050565b606060006178a48360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506179069061751d565b15617914576156a48161896b565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617973906175ee565b6001036179dd57604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526156a49061758e906176bb565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617a3c9061751d565b1561785857604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290617aa4908390619093565b9050600181511115617ae0578060028251617abf9190619ea5565b81518110617acf57617acf61a401565b602002602001015192505050919050565b5082604051602001615777919061aa51565b805182516000911115617b07575060006154ef565b81518351602085015160009291617b1d91619e92565b617b279190619ea5565b905082602001518103617b3e5760019150506154ef565b82516020840151819020912014905092915050565b60606000617b6083619138565b600101905060008167ffffffffffffffff811115617b8057617b80619d2f565b6040519080825280601f01601f191660200182016040528015617baa576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084617bb457509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091617c7f905b829061921a565b15617cbf57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617d1e90617c78565b15617d5e57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617dbd90617c78565b15617dfd57505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617e5c90617c78565b80617ec15750604080518082018252601081527f47504c2d322e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617ec190617c78565b15617f0157505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617f6090617c78565b80617fc55750604080518082018252601081527f47504c2d332e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617fc590617c78565b1561800557505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261806490617c78565b806180c95750604080518082018252601181527f4c47504c2d322e312d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526180c990617c78565b1561810957505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261816890617c78565b806181cd5750604080518082018252601181527f4c47504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526181cd90617c78565b1561820d57505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261826c90617c78565b156182ac57505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261830b90617c78565b1561834b57505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526183aa90617c78565b156183ea57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261844990617c78565b1561848957505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e3000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526184e890617c78565b1561852857505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261858790617c78565b806185ec5750604080518082018252601181527f4147504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526185ec90617c78565b1561862c57505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261868b90617c78565b156186cb57505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151615777929060200161ab2f565b60608060005b845181101561876d57818582815181106187045761870461a401565b602002602001015160405160200161871d929190619fe8565b60405160208183030381529060405291506001855161873c9190619ea5565b81146187655781604051602001618753919061ac98565b60405160208183030381529060405291505b6001016186e8565b5060408051600380825260808201909252600091816020015b606081526020019060019003908161878657905050905083816000815181106187b1576187b161a401565b60200260200101819052506040518060400160405280600281526020017f2d63000000000000000000000000000000000000000000000000000000000000815250816001815181106188055761880561a401565b602002602001018190525081816002815181106188245761882461a401565b6020908102919091010152949350505050565b6020808301518351835192840151600093618855929184919061922e565b14159392505050565b60408051808201909152600080825260208201526000618890846000015185602001518560000151866020015161933f565b90508360200151816188a29190619ea5565b845185906188b1908390619ea5565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156188e55750816154ef565b602080830151908401516001911461890c5750815160208481015190840151829020919020145b801561893d57825184518590618923908390619ea5565b9052508251602085018051618939908390619e92565b9052505b509192915050565b604080518082019091526000808252602082015261896483838361945f565b5092915050565b60606000826000015167ffffffffffffffff81111561898c5761898c619d2f565b6040519080825280601f01601f1916602001820160405280156189b6576020820181803683370190505b5090506000602082019050618964818560200151866000015161950a565b606060006189e061599d565b6040805160ff808252612000820190925291925060009190816020015b60608152602001906001900390816189fd57905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280618a589061a56e565b935060ff1681518110618a6d57618a6d61a401565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001618abe919061acd9565b604051602081830303815290604052828280618ad99061a56e565b935060ff1681518110618aee57618aee61a401565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280618b3b9061a56e565b935060ff1681518110618b5057618b5061a401565b602002602001018190525082604051602001618b6c919061a49c565b604051602081830303815290604052828280618b879061a56e565b935060ff1681518110618b9c57618b9c61a401565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280618be99061a56e565b935060ff1681518110618bfe57618bfe61a401565b6020026020010181905250618c138784619584565b8282618c1e8161a56e565b935060ff1681518110618c3357618c3361a401565b602090810291909101015285515115618cdf5760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282618c858161a56e565b935060ff1681518110618c9a57618c9a61a401565b6020026020010181905250618cb3866000015184619584565b8282618cbe8161a56e565b935060ff1681518110618cd357618cd361a401565b60200260200101819052505b856080015115618d4d5760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282618d288161a56e565b935060ff1681518110618d3d57618d3d61a401565b6020026020010181905250618db3565b8415618db35760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282618d928161a56e565b935060ff1681518110618da757618da761a401565b60200260200101819052505b60408601515115618e4f5760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282618dfd8161a56e565b935060ff1681518110618e1257618e1261a401565b60200260200101819052508560400151828280618e2e9061a56e565b935060ff1681518110618e4357618e4361a401565b60200260200101819052505b856060015115618eb95760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282618e988161a56e565b935060ff1681518110618ead57618ead61a401565b60200260200101819052505b60008160ff1667ffffffffffffffff811115618ed757618ed7619d2f565b604051908082528060200260200182016040528015618f0a57816020015b6060815260200190600190039081618ef55790505b50905060005b8260ff168160ff161015618f6357838160ff1681518110618f3357618f3361a401565b6020026020010151828260ff1681518110618f5057618f5061a401565b6020908102919091010152600101618f10565b50979650505050505050565b6040805180820190915260008082526020820152815183511015618f945750816154ef565b81518351602085015160009291618faa91619e92565b618fb49190619ea5565b60208401519091506001908214618fd5575082516020840151819020908220145b8015618ff057835185518690618fec908390619ea5565b9052505b50929392505050565b600080826000015161901d856000015186602001518660000151876020015161933f565b6190279190619e92565b90505b8351602085015161903b9190619e92565b8111618964578161904b8161ad1e565b92505082600001516190828560200151836190669190619ea5565b86516190729190619ea5565b838660000151876020015161933f565b61908c9190619e92565b905061902a565b606060006190a18484618ff9565b6190ac906001619e92565b67ffffffffffffffff8111156190c4576190c4619d2f565b6040519080825280602002602001820160405280156190f757816020015b60608152602001906001900390816190e25790505b50905060005b815181101561736c5761911361758e8686618945565b8282815181106191255761912561a401565b60209081029190910101526001016190fd565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310619181577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106191ad576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106191cb57662386f26fc10000830492506010015b6305f5e10083106191e3576305f5e100830492506008015b61271083106191f757612710830492506004015b60648310619209576064830492506002015b600a83106154ef5760010192915050565b600061922683836195c4565b159392505050565b60008085841161933557602084116192e15760008415619279576001619255866020619ea5565b61926090600861ad38565b61926b90600261ae36565b6192759190619ea5565b1990505b83518116856192888989619e92565b6192929190619ea5565b805190935082165b8181146192cc578784116192b45787945050505050616f9d565b836192be8161ae42565b94505082845116905061929a565b6192d68785619e92565b945050505050616f9d565b8383206192ee8588619ea5565b6192f89087619e92565b91505b85821061933357848220808203619320576193168684619e92565b9350505050616f9d565b61932b600184619ea5565b9250506192fb565b505b5092949350505050565b6000838186851161944a57602085116193f9576000851561938b576001619367876020619ea5565b61937290600861ad38565b61937d90600261ae36565b6193879190619ea5565b1990505b8451811660008761939c8b8b619e92565b6193a69190619ea5565b855190915083165b8281146193eb578186106193d3576193c68b8b619e92565b9650505050505050616f9d565b856193dd8161ad1e565b9650508386511690506193ae565b859650505050505050616f9d565b508383206000905b61940b8689619ea5565b8211619448578583208082036194275783945050505050616f9d565b619432600185619e92565b93505081806194409061ad1e565b925050619401565b505b6194548787619e92565b979650505050505050565b60408051808201909152600080825260208201526000619491856000015186602001518660000151876020015161933f565b6020808701805191860191909152519091506194ad9082619ea5565b8352845160208601516194c09190619e92565b81036194cf5760008552619501565b835183516194dd9190619e92565b855186906194ec908390619ea5565b90525083516194fb9082619e92565b60208601525b50909392505050565b602081106195425781518352619521602084619e92565b925061952e602083619e92565b915061953b602082619ea5565b905061950a565b6000198115619571576001619558836020619ea5565b6195649061010061ae36565b61956e9190619ea5565b90505b9151835183169219169190911790915250565b606060006195928484615a70565b80516020808301516040519394506195ac9390910161ae59565b60405160208183030381529060405291505092915050565b81518151600091908111156195d7575081515b6020808501519084015160005b83811015619690578251825180821461966057600019602087101561963f57600184619611896020619ea5565b61961b9190619e92565b61962690600861ad38565b61963190600261ae36565b61963b9190619ea5565b1990505b818116838216818103911461965d5797506154ef9650505050505050565b50505b61966b602086619e92565b9450619678602085619e92565b935050506020816196899190619e92565b90506195e4565b508451865161611e919061aeb1565b610b678061aed283390190565b61106f8061ba3983390190565b6120728061caa883390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161970961970e565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016197096040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156197c05783516001600160a01b0316835260209384019390920191600101619799565b509095945050505050565b60005b838110156197e65781810151838201526020016197ce565b50506000910152565b600081518084526198078160208601602086016197cb565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015619917577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b818110156198fd577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a85030183526198e78486516197ef565b60209586019590945092909201916001016198ad565b509197505050602094850194929092019150600101619843565b50929695505050505050565b600081518084526020840193506020830160005b828110156199775781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101619937565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015619917577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281518051604087526199ed60408801826197ef565b9050602082015191508681036020880152619a088183619923565b9650505060209384019391909101906001016199a9565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015619917577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452619a818583516197ef565b94506020938401939190910190600101619a47565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015619917577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152619b176040870182619923565b9550506020938401939190910190600101619abe565b600060208284031215619b3f57600080fd5b815180151581146156a457600080fd5b80516001600160a01b0381168114619b6657600080fd5b919050565b600060208284031215619b7d57600080fd5b6156a482619b4f565b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff8816604083015286606083015260038610619c40577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a0830152619c6160c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b600060208284031215619c8d57600080fd5b5051919050565b600181811c90821680619ca857607f821691505b602082108103617869577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60008060408385031215619cf457600080fd5b619cfd83619b4f565b6020939093015192949293505050565b604081526000619d2060408301856197ef565b90508260208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715619d8157619d81619d2f565b60405290565b60008067ffffffffffffffff841115619da257619da2619d2f565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715619dd157619dd1619d2f565b604052838152905080828401851015619de957600080fd5b61736c8460208301856197cb565b600060208284031215619e0957600080fd5b815167ffffffffffffffff811115619e2057600080fd5b8201601f81018413619e3157600080fd5b6154eb84825160208401619d87565b600060208284031215619e5257600080fd5b815160ff811681146156a457600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156154ef576154ef619e63565b818103818111156154ef576154ef619e63565b604081526000619ecb60408301856197ef565b82810360208401526156a081856197ef565b6001600160a01b0383168152604060208201526000616f9d60408301846197ef565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351619f3781601a8501602088016197cb565b7f3a20000000000000000000000000000000000000000000000000000000000000601a918401918201528351619f7481601c8401602088016197cb565b01601c01949350505050565b6020815260006156a460208301846197ef565b600082601f830112619fa457600080fd5b6156a483835160208501619d87565b600060208284031215619fc557600080fd5b815167ffffffffffffffff811115619fdc57600080fd5b6154eb84828501619f93565b60008351619ffa8184602088016197cb565b83519083019061a00e8183602088016197cb565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161a04f81601a8501602088016197cb565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161a08c8160338401602088016197cb565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f555400000000000000000000000000000000000000000060608201526080602082015260006156a460808301846197ef565b6000855161a11b818460208a016197cb565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161a155816001840160208a016197cb565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161a1938160028401602089016197cb565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161a1d58160028401602088016197cb565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061a22060408301846197ef565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161a29781601f8501602087016197cb565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061a30460408301846197ef565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061a35660408301846197ef565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161a3cd8160148501602087016197cb565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161a4688160018501602087016197cb565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161a4ae8184602087016197cb565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161a56181604b8501602087016197cb565b91909101604b0192915050565b600060ff821660ff810361a5845761a584619e63565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161a5eb8160298501602087016197cb565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f504154480000000000000000000060608201526080602082015260006156a460808301846197ef565b60006020828403121561a65157600080fd5b815167ffffffffffffffff81111561a66857600080fd5b82016060818503121561a67a57600080fd5b61a682619d5e565b81518060030b811461a69357600080fd5b8152602082015167ffffffffffffffff81111561a6af57600080fd5b61a6bb86828501619f93565b602083015250604082015167ffffffffffffffff81111561a6db57600080fd5b61a6e786828501619f93565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161a7538160218501602087016197cb565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161a93f8160218501602088016197cb565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161a97c81602e8401602088016197cb565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161a5eb8160298501602087016197cb565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161aa448160228501602087016197cb565b9190910160220192915050565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161aa8981600e8501602087016197cb565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161ab678160188501602088016197cb565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161aba481601c8401602088016197cb565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161acaa8184602087016197cb565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161ad1181601c8501602087016197cb565b91909101601c0192915050565b6000600019820361ad315761ad31619e63565b5060010190565b80820281158282048414176154ef576154ef619e63565b6001815b600184111561ad8a5780850481111561ad6e5761ad6e619e63565b600184161561ad7c57908102905b60019390931c92800261ad53565b935093915050565b60008261ada1575060016154ef565b8161adae575060006154ef565b816001811461adc4576002811461adce5761adea565b60019150506154ef565b60ff84111561addf5761addf619e63565b50506001821b6154ef565b5060208310610133831016604e8410600b841016171561ae0d575081810a6154ef565b61ae1a600019848461ad4f565b806000190482111561ae2e5761ae2e619e63565b029392505050565b60006156a4838361ad92565b60008161ae515761ae51619e63565b506000190190565b6000835161ae6b8184602088016197cb565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161aea58160018401602088016197cb565b01600101949350505050565b818103600083128015838313168383128216171561896457618964619e6356fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea2646970667358221220c069e4cb3e16bcddc5b07d6ba4019a062fbae92d695877ad19f66fc9ac6047fd64736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea2646970667358221220eaa287ea22d82335c1d97ef661cb17f1296902daa41cca34de107966248e954364736f6c634300081a003360c060405234801561001057600080fd5b5060405161207238038061207283398101604081905261002f916101f0565b6001600160a01b038216158061004c57506001600160a01b038116155b1561006a5760405163d92e233d60e01b815260040160405180910390fd5b60066100768982610342565b5060076100838882610342565b506008805460ff191660ff881617905560808590528360028111156100aa576100aa610400565b60a08160028111156100be576100be610400565b905250600192909255600080546001600160a01b039283166001600160a01b0319909116179055600880549190921661010002610100600160a81b0319909116179055506104169350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261013357600080fd5b81516001600160401b0381111561014c5761014c61010c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561017a5761017a61010c565b60405281815283820160200185101561019257600080fd5b60005b828110156101b157602081860181015183830182015201610195565b506000918101602001919091529392505050565b8051600381106101d457600080fd5b919050565b80516001600160a01b03811681146101d457600080fd5b600080600080600080600080610100898b03121561020d57600080fd5b88516001600160401b0381111561022357600080fd5b61022f8b828c01610122565b60208b015190995090506001600160401b0381111561024d57600080fd5b6102598b828c01610122565b975050604089015160ff8116811461027057600080fd5b60608a0151909650945061028660808a016101c5565b60a08a0151909450925061029c60c08a016101d9565b91506102aa60e08a016101d9565b90509295985092959890939650565b600181811c908216806102cd57607f821691505b6020821081036102ed57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561033d57806000526020600020601f840160051c8101602085101561031a5750805b601f840160051c820191505b8181101561033a5760008155600101610326565b50505b505050565b81516001600160401b0381111561035b5761035b61010c565b61036f8161036984546102b9565b846102f3565b6020601f8211600181146103a3576000831561038b5750848201515b600019600385901b1c1916600184901b17845561033a565b600084815260208120601f198516915b828110156103d357878501518255602094850194600190920191016103b3565b50848210156103f15786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a051611c1b61045760003960006103440152600081816102f001528181610bdc01528181610ce201528181610efe01526110040152611c1b6000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c806395d89b41116100f9578063ccc7759911610097578063eddeb12311610071578063eddeb12314610461578063f2441b3214610474578063f687d12a14610494578063fc5fecd5146104a757600080fd5b8063ccc77599146103d4578063d9eeebed146103e7578063dd62ed3e1461041b57600080fd5b8063b84c8246116100d3578063b84c824614610386578063c47f00271461039b578063c7012626146103ae578063c835d7cc146103c157600080fd5b806395d89b4114610337578063a3413d031461033f578063a9059cbb1461037357600080fd5b80633ce4a5bc116101665780634d8943bb116101405780634d8943bb146102ac57806370a08231146102b557806385e1f4d0146102eb5780638b851b951461031257600080fd5b80633ce4a5bc1461024657806342966c681461028657806347e7ef241461029957600080fd5b806318160ddd1161019757806318160ddd1461021657806323b872dd1461021e578063313ce5671461023157600080fd5b806306fdde03146101be578063091d2788146101dc578063095ea7b3146101f3575b600080fd5b6101c66104ba565b6040516101d39190611648565b60405180910390f35b6101e560015481565b6040519081526020016101d3565b610206610201366004611687565b61054c565b60405190151581526020016101d3565b6005546101e5565b61020661022c3660046116b3565b610563565b60085460405160ff90911681526020016101d3565b61026173735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d3565b6102066102943660046116f4565b6105fa565b6102066102a7366004611687565b61060e565b6101e560025481565b6101e56102c336600461170d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6101e57f000000000000000000000000000000000000000000000000000000000000000081565b60085461026190610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6101c6610767565b6103667f000000000000000000000000000000000000000000000000000000000000000081565b6040516101d3919061172a565b610206610381366004611687565b610776565b610399610394366004611832565b610783565b005b6103996103a9366004611832565b6107e0565b6102066103bc366004611883565b610839565b6103996103cf36600461170d565b610988565b6103996103e236600461170d565b610a9c565b6103ef610bb0565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101d3565b6101e56104293660046118dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205490565b61039961046f3660046116f4565b610dce565b6000546102619073ffffffffffffffffffffffffffffffffffffffff1681565b6103996104a23660046116f4565b610e50565b6103ef6104b53660046116f4565b610ed2565b6060600680546104c990611915565b80601f01602080910402602001604051908101604052809291908181526020018280546104f590611915565b80156105425780601f1061051757610100808354040283529160200191610542565b820191906000526020600020905b81548152906001019060200180831161052557829003601f168201915b5050505050905090565b60006105593384846110ee565b5060015b92915050565b60006105708484846111f7565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460209081526040808320338452909152902054828110156105db576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105ef85336105ea8685611997565b6110ee565b506001949350505050565b600061060633836113b2565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab1480159061064c575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156106755750600854610100900473ffffffffffffffffffffffffffffffffffffffff163314155b156106ac576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106b683836114f4565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526107569186906119aa565b60405180910390a250600192915050565b6060600780546104c990611915565b60006105593384846111f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab146107d0576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60076107dc8282611a1b565b5050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461082d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60066107dc8282611a1b565b6000806000610846610bb0565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156108d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fc9190611b34565b610932576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61093c33856113b2565b60025460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161097591899189918791611b56565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146109d5576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a22576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610ae9576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610b36576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c679190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610cb6576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d699190611ba2565b905080600003610da5576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060025460015483610db89190611bbb565b610dc29190611bd2565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e1b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610a91565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e9d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610f65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f899190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610fd8576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015611067573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108b9190611ba2565b9050806000036110c7576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000906110d78784611bbb565b6110e19190611bd2565b9296929550919350505050565b73ffffffffffffffffffffffffffffffffffffffff831661113b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611188576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611244576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611291576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040902054818110156112f1576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112fb8282611997565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260036020526040808220939093559085168152908120805484929061133e908490611bd2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113a491815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff82166113ff576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260409020548181101561145f576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114698282611997565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260036020526040812091909155600580548492906114a4908490611997565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016111ea565b73ffffffffffffffffffffffffffffffffffffffff8216611541576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008282546115539190611bd2565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805483929061158d908490611bd2565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561160a576020818501810151868301820152016115ee565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061165b60208301846115e4565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461168457600080fd5b50565b6000806040838503121561169a57600080fd5b82356116a581611662565b946020939093013593505050565b6000806000606084860312156116c857600080fd5b83356116d381611662565b925060208401356116e381611662565b929592945050506040919091013590565b60006020828403121561170657600080fd5b5035919050565b60006020828403121561171f57600080fd5b813561165b81611662565b6020810160038310611765577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff8411156117b5576117b561176b565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff821117156118025761180261176b565b60405283815290508082840185101561181a57600080fd5b83836020830137600060208583010152509392505050565b60006020828403121561184457600080fd5b813567ffffffffffffffff81111561185b57600080fd5b8201601f8101841361186c57600080fd5b61187b8482356020840161179a565b949350505050565b6000806040838503121561189657600080fd5b823567ffffffffffffffff8111156118ad57600080fd5b8301601f810185136118be57600080fd5b6118cd8582356020840161179a565b95602094909401359450505050565b600080604083850312156118ef57600080fd5b82356118fa81611662565b9150602083013561190a81611662565b809150509250929050565b600181811c9082168061192957607f821691505b602082108103611962577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561055d5761055d611968565b6040815260006119bd60408301856115e4565b90508260208301529392505050565b601f821115611a1657806000526020600020601f840160051c810160208510156119f35750805b601f840160051c820191505b81811015611a1357600081556001016119ff565b50505b505050565b815167ffffffffffffffff811115611a3557611a3561176b565b611a4981611a438454611915565b846119cc565b6020601f821160018114611a9b5760008315611a655750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611a13565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015611ae95787850151825560209485019460019092019101611ac9565b5084821015611b2557868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b600060208284031215611b4657600080fd5b8151801515811461165b57600080fd5b608081526000611b6960808301876115e4565b6020830195909552506040810192909252606090910152919050565b600060208284031215611b9757600080fd5b815161165b81611662565b600060208284031215611bb457600080fd5b5051919050565b808202811582820484141761055d5761055d611968565b8082018082111561055d5761055d61196856fea26469706673582212202a06c5d72036d88c206ff2bfdd016b3ce8555bc0090e8bb5487bc61ea043732b64736f6c634300081a0033a2646970667358221220704359a62a5f686f535c4868182f7dc4e66a3cf6722208b88c2e44453ea8eb7e64736f6c634300081a0033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061eb4f8061003c6000396000f3fe608060405234801561001057600080fd5b506004361061030a5760003560e01c80638ce7ef051161019c578063d1fd3291116100ee578063dfbdf60011610097578063f1f87f4011610071578063f1f87f40146104c3578063f2413096146104cb578063fa7626d4146104d357600080fd5b8063dfbdf600146104ab578063e13aba48146104b3578063e20c9f71146104bb57600080fd5b8063d591221f116100c8578063d591221f14610493578063d97136a21461049b578063dcba486a146104a357600080fd5b8063d1fd32911461047b578063d27b042714610483578063d509b16c1461048b57600080fd5b8063b0464fdc11610150578063ba414fa61161012a578063ba414fa614610453578063c35f9d1d1461046b578063d04cda981461047357600080fd5b8063b0464fdc1461043b578063b5508aa914610443578063b79cad091461044b57600080fd5b806392a68b8d1161018157806392a68b8d14610423578063a4aa6c7c1461042b578063ae9687dc1461043357600080fd5b80638ce7ef0514610406578063916a17c61461040e57600080fd5b80633f7286f4116102605780636ff45850116102095780637f924c4e116101e35780637f924c4e146103e157806380326680146103e957806385226c81146103f157600080fd5b80636ff45850146103c957806370557298146103d15780637ee68316146103d957600080fd5b80635539d92e1161023a5780635539d92e146103a45780635f01db7e146103ac57806366d9a9a0146103b457600080fd5b80633f7286f41461038c5780634cfc0aaa14610394578063513999621461039c57600080fd5b806328438826116102c2578063367e31231161029c578063367e3123146103745780633be9ec801461037c5780633e5e3c231461038457600080fd5b8063284388261461034f5780632ade3880146103575780632f6254fc1461036c57600080fd5b80630ea7e563116102f35780630ea7e563146103215780631142744e146103295780631ed7831c1461033157600080fd5b80630809dfef1461030f5780630a9254e414610319575b600080fd5b6103176104e0565b005b61031761066e565b610317610d6a565b610317610e53565b610339610f37565b604051610346919061977f565b60405180910390f35b610317610f99565b61035f6111e4565b604051610346919061981b565b610317611326565b610317611497565b610317611569565b610339611757565b6103396117b7565b610317611817565b6103176118f0565b610317611c6d565b610317611e9a565b6103bc612007565b6040516103469190619981565b610317612189565b610317612399565b6103176125e9565b610317612a7a565b610317612c9a565b6103f9612d6e565b6040516103469190619a1f565b610317612e3e565b61041661303e565b6040516103469190619a96565b610317613139565b61031761320c565b6103176133c1565b610416613699565b6103f9613794565b610317613864565b61045b613bf6565b6040519015158152602001610346565b610317613cca565b610317613d9c565b610317613ee0565b610317614023565b610317614166565b6103176147fa565b6103176148de565b610317614a64565b610317614ce7565b610317614e2a565b6103396150d4565b610317615134565b61031761527a565b601f5461045b9060ff1681565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561053957600080fd5b505af115801561054d573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156105bd57600080fd5b505af11580156105d1573d6000803e3d6000fd5b5050601f546040517f47e7ef2400000000000000000000000000000000000000000000000000000000815260006004820152620186a060248201526101009091046001600160a01b031692506347e7ef2491506044015b6020604051808303816000875af1158015610647573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066b9190619b2d565b50565b602480547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602580549091166112341790556040516106b49061969f565b604051809103906000f0801580156106d0573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600f81527f476174657761795a45564d2e736f6c0000000000000000000000000000000000602082015260248054925190810193909352921660448201526107b4919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc955000000000000000000000000000000000000000000000000000000001790526154d6565b602280546001600160a01b03929092167fffffffffffffffffffffffff00000000000000000000000000000000000000009283168117909155602180549092168117909155604080517f2722feee0000000000000000000000000000000000000000000000000000000081529051632722feee916004808201926020929091908290030181865afa15801561084d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108719190619b6b565b602680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691821790556040517f06447d560000000000000000000000000000000000000000000000000000000081526004810191909152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b15801561090f57600080fd5b505af1158015610923573d6000803e3d6000fd5b505050506000806000604051610938906196ac565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610974573d6000803e3d6000fd5b50602080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556021546040516012936001938493600093919216906109ca906196b9565b6109d996959493929190619b86565b604051809103906000f0801580156109f5573d6000803e3d6000fd5b50601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b03938416810291909117918290556020546040517fee2815ba00000000000000000000000000000000000000000000000000000000815260016004820152919092048316602482015291169063ee2815ba90604401600060405180830381600087803b158015610a9557600080fd5b505af1158015610aa9573d6000803e3d6000fd5b50506020546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b158015610b1357600080fd5b505af1158015610b27573d6000803e3d6000fd5b50506026546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610ba757600080fd5b505af1158015610bbb573d6000803e3d6000fd5b50506022546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610c3b57600080fd5b505af1158015610c4f573d6000803e3d6000fd5b5050601f54602480546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09281019290925261010090920490911692506347e7ef2491506044016020604051808303816000875af1158015610ccd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf19190619b2d565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610d5057600080fd5b505af1158015610d64573d6000803e3d6000fd5b50505050565b604051630618f58760e51b81527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015610dd657600080fd5b505af1158015610dea573d6000803e3d6000fd5b5050601f546040517fc835d7cc00000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063c835d7cc91506024015b600060405180830381600087803b158015610d5057600080fd5b604051630618f58760e51b81527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015610ebf57600080fd5b505af1158015610ed3573d6000803e3d6000fd5b5050601f54602480546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09281019290925261010090920490911692506347e7ef249150604401610628565b60606016805480602002602001604051908101604052809291908181526020018280548015610f8f57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610f71575b5050505050905090565b601f546025546040516370a0823160e01b81526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015610fee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110129190619c7b565b905061101f6000826154f5565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015611097573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110bb9190619b2d565b50604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561112857600080fd5b505af115801561113c573d6000803e3d6000fd5b5050601f546025546040517f23b872dd000000000000000000000000000000000000000000000000000000008152600060048201526001600160a01b039182166024820152604481018690526101009092041692506323b872dd91506064015b6020604051808303816000875af11580156111bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111df9190619b2d565b505050565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561131d57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561130657838290600052602060002001805461127990619c94565b80601f01602080910402602001604051908101604052809291908181526020018280546112a590619c94565b80156112f25780601f106112c7576101008083540402835291602001916112f2565b820191906000526020600020905b8154815290600101906020018083116112d557829003601f168201915b50505050508152602001906001019061125a565b505050508152505081526020019060010190611208565b50505050905090565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561137f57600080fd5b505af1158015611393573d6000803e3d6000fd5b5050601f546040517fc835d7cc00000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063c835d7cc9150602401600060405180830381600087803b1580156113fb57600080fd5b505af115801561140f573d6000803e3d6000fd5b50505050611495601f60019054906101000a90046001600160a01b03166001600160a01b031663f2441b326040518163ffffffff1660e01b8152600401602060405180830381865afa158015611469573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148d9190619b6b565b61321161557d565b565b604051630618f58760e51b81527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561150357600080fd5b505af1158015611517573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063eddeb1239150602401610e39565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156115c257600080fd5b505af11580156115d6573d6000803e3d6000fd5b50506020546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820152600060248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b15801561164057600080fd5b505af1158015611654573d6000803e3d6000fd5b5050604051630618f58760e51b81527fe661aed0000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b1580156116c557600080fd5b505af11580156116d9573d6000803e3d6000fd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa15801561172f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117539190619ce1565b5050565b60606018805480602002602001604051908101604052809291908181526020018280548015610f8f576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610f71575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610f8f576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610f71575050505050905090565b604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561188357600080fd5b505af1158015611897573d6000803e3d6000fd5b5050601f546040517f095ea7b300000000000000000000000000000000000000000000000000000000815260006004820152600a60248201526101009091046001600160a01b0316925063095ea7b39150604401610628565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152600a908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561194e57600080fd5b505af1158015611962573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600481018690526101009091046001600160a01b0316925063f687d12a9150602401600060405180830381600087803b1580156119c957600080fd5b505af11580156119dd573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015611a3a57600080fd5b505af1158015611a4e573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600481018590526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b158015611ab557600080fd5b505af1158015611ac9573d6000803e3d6000fd5b5050601f546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b03166004820181905260006024830152925063095ea7b391506044016020604051808303816000875af1158015611b3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b609190619b2d565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611bbf57600080fd5b505af1158015611bd3573d6000803e3d6000fd5b5050601f546025546040805160609290921b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208301528051601481840301815260348301918290527fc7012626000000000000000000000000000000000000000000000000000000009091526001600160a01b0361010090930492909216935063c7012626925061119c9190600190603801619d0d565b604051630618f58760e51b81527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015611cd957600080fd5b505af1158015611ced573d6000803e3d6000fd5b5050601f546040517fc47f002700000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f544f4b454e32000000000000000000000000000000000000000000000000000060448201526101009091046001600160a01b0316925063c47f00279150606401600060405180830381600087803b158015611d8157600080fd5b505af1158015611d95573d6000803e3d6000fd5b5050604051630618f58760e51b81527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015611e0557600080fd5b505af1158015611e19573d6000803e3d6000fd5b5050601f546040517fb84c8246000000000000000000000000000000000000000000000000000000008152602060048083019190915260248201527f544b4e320000000000000000000000000000000000000000000000000000000060448201526101009091046001600160a01b0316925063b84c82469150606401610e39565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611ef357600080fd5b505af1158015611f07573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063f687d12a9150602401600060405180830381600087803b158015611f6e57600080fd5b505af1158015611f82573d6000803e3d6000fd5b50505050611495600a601f60019054906101000a90046001600160a01b03166001600160a01b031663091d27886040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fde573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120029190619c7b565b6154f5565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561131d578382906000526020600020906002020160405180604001604052908160008201805461205e90619c94565b80601f016020809104026020016040519081016040528092919081815260200182805461208a90619c94565b80156120d75780601f106120ac576101008083540402835291602001916120d7565b820191906000526020600020905b8154815290600101906020018083116120ba57829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561217157602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161211e5790505b5050505050815250508152602001906001019061202b565b601f546025546040516370a0823160e01b81526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa1580156121de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122029190619c7b565b905061220f6000826154f5565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015612287573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ab9190619b2d565b50604051630618f58760e51b81527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561231857600080fd5b505af115801561232c573d6000803e3d6000fd5b5050601f54602480546025546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152908216928101929092526044820186905261010090920490911692506323b872dd915060640161119c565b601f546025546040516370a0823160e01b81526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa1580156123ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124129190619c7b565b905061241f6000826154f5565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261c35092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015612496573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ba9190619b2d565b50601f54602480546025546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169281019290925260448201849052610100909204909116906323b872dd906064015b6020604051808303816000875af115801561253f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125639190619b2d565b50601f546025546040516370a0823160e01b81526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa1580156125b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125dd9190619c7b565b90506111df82826154f5565b6126a26040518060400160405280600581526020017f544f4b454e000000000000000000000000000000000000000000000000000000815250601f60019054906101000a90046001600160a01b03166001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015612675573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261269d9190810190619df7565b6155de565b61272e6040518060400160405280600381526020017f544b4e0000000000000000000000000000000000000000000000000000000000815250601f60019054906101000a90046001600160a01b03166001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015612675573d6000803e3d6000fd5b60265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561278757600080fd5b505af115801561279b573d6000803e3d6000fd5b5050601f546040517fc47f002700000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f544f4b454e32000000000000000000000000000000000000000000000000000060448201526101009091046001600160a01b0316925063c47f00279150606401600060405180830381600087803b15801561282f57600080fd5b505af1158015612843573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156128a057600080fd5b505af11580156128b4573d6000803e3d6000fd5b5050601f546040517fb84c8246000000000000000000000000000000000000000000000000000000008152602060048083019190915260248201527f544b4e320000000000000000000000000000000000000000000000000000000060448201526101009091046001600160a01b0316925063b84c82469150606401600060405180830381600087803b15801561294a57600080fd5b505af115801561295e573d6000803e3d6000fd5b505050506129ee6040518060400160405280600681526020017f544f4b454e320000000000000000000000000000000000000000000000000000815250601f60019054906101000a90046001600160a01b03166001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015612675573d6000803e3d6000fd5b6114956040518060400160405280600481526020017f544b4e3200000000000000000000000000000000000000000000000000000000815250601f60019054906101000a90046001600160a01b03166001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015612675573d6000803e3d6000fd5b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612acf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612af39190619c7b565b9050612b02620186a0826154f5565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612b5b57600080fd5b505af1158015612b6f573d6000803e3d6000fd5b5050601f54602480546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09281019290925261010090920490911692506347e7ef2491506044016020604051808303816000875af1158015612bed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c119190619b2d565b506000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c8b9190619c7b565b905061175362030d40826154f5565b604051630618f58760e51b81527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015612d0657600080fd5b505af1158015612d1a573d6000803e3d6000fd5b5050601f546040517f42966c68000000000000000000000000000000000000000000000000000000008152620249f060048201526101009091046001600160a01b031692506342966c689150602401610628565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101561131d578382906000526020600020018054612db190619c94565b80601f0160208091040260200160405190810160405280929190818152602001828054612ddd90619c94565b8015612e2a5780601f10612dff57610100808354040283529160200191612e2a565b820191906000526020600020905b815481529060010190602001808311612e0d57829003601f168201915b505050505081526020019060010190612d92565b601f546025546040516370a0823160e01b81526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015612e93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eb79190619c7b565b9050612ec46000826154f5565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015612f3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f609190619b2d565b50604051630618f58760e51b81527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015612fcd57600080fd5b505af1158015612fe1573d6000803e3d6000fd5b5050601f546025546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810186905261010090920416925063a9059cbb915060440161119c565b6060601d805480602002602001604051908101604052809291908181526020016000905b8282101561131d5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561312157602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116130ce5790505b50505050508152505081526020019060010190613062565b604051630618f58760e51b81527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156131a557600080fd5b505af11580156131b9573d6000803e3d6000fd5b5050601f546040517fccc7759900000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063ccc775999150602401610e39565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015613284573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132a89190619b2d565b50604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561331557600080fd5b505af1158015613329573d6000803e3d6000fd5b5050601f546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815260006004820152602481018590526101009091046001600160a01b0316925063a9059cbb91506044015b6020604051808303816000875af115801561339d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117539190619b2d565b601f80546001600160a01b03610100808304821681027fffffffffffffffffffffff0000000000000000000000000000000000000000ff9093169290921792839055604080517f06fdde03000000000000000000000000000000000000000000000000000000008152905160009493909304909116916306fdde039160048082019286929091908290030181865afa158015613461573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526134899190810190619df7565b90506134ca6040518060400160405280600581526020017f544f4b454e000000000000000000000000000000000000000000000000000000815250826155de565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801561351f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135479190810190619df7565b90506135886040518060400160405280600381526020017f544b4e0000000000000000000000000000000000000000000000000000000000815250826155de565b6000601f60019054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156135dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136019190619e40565b905061361160128260ff166154f5565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613666573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061368a9190619c7b565b9050610d64620186a0826154f5565b6060601c805480602002602001604051908101604052809291908181526020016000905b8282101561131d5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561377c57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116137295790505b505050505081525050815260200190600101906136bd565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101561131d5783829060005260206000200180546137d790619c94565b80601f016020809104026020016040519081016040528092919081815260200182805461380390619c94565b80156138505780601f1061382557610100808354040283529160200191613850565b820191906000526020600020905b81548152906001019060200180831161383357829003601f168201915b5050505050815260200190600101906137b8565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152600a906305f5e10090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156138c657600080fd5b505af11580156138da573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600481018690526101009091046001600160a01b0316925063f687d12a9150602401600060405180830381600087803b15801561394157600080fd5b505af1158015613955573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156139b257600080fd5b505af11580156139c6573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600481018590526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b158015613a2d57600080fd5b505af1158015613a41573d6000803e3d6000fd5b5050601f546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b031660048201819052630bebc2006024830152925063095ea7b391506044016020604051808303816000875af1158015613ab7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613adb9190619b2d565b50604051630618f58760e51b81527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015613b4857600080fd5b505af1158015613b5c573d6000803e3d6000fd5b5050601f546025546040805160609290921b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208301528051601481840301815260348301918290527fc7012626000000000000000000000000000000000000000000000000000000009091526001600160a01b0361010090930492909216935063c7012626925061119c9190606490603801619d0d565b60085460009060ff1615613c0e575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015613c9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cc39190619c7b565b1415905090565b604051630618f58760e51b81527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015613d3657600080fd5b505af1158015613d4a573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063f687d12a9150602401610e39565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613df557600080fd5b505af1158015613e09573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b158015613e7057600080fd5b505af1158015613e84573d6000803e3d6000fd5b50505050611495600a601f60019054906101000a90046001600160a01b03166001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fde573d6000803e3d6000fd5b60265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613f3957600080fd5b505af1158015613f4d573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015613fbd57600080fd5b505af1158015613fd1573d6000803e3d6000fd5b5050601f546040517fccc77599000000000000000000000000000000000000000000000000000000008152600060048201526101009091046001600160a01b0316925063ccc775999150602401610e39565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561407c57600080fd5b505af1158015614090573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561410057600080fd5b505af1158015614114573d6000803e3d6000fd5b5050601f546040517fc835d7cc000000000000000000000000000000000000000000000000000000008152600060048201526101009091046001600160a01b0316925063c835d7cc9150602401610e39565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152600a908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156141c457600080fd5b505af11580156141d8573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600481018690526101009091046001600160a01b0316925063f687d12a9150602401600060405180830381600087803b15801561423f57600080fd5b505af1158015614253573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156142b057600080fd5b505af11580156142c4573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600481018590526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b15801561432b57600080fd5b505af115801561433f573d6000803e3d6000fd5b5050601f54602480546040516370a0823160e01b81526001600160a01b039182166004820152600095506101009093041692506370a082319101602060405180830381865afa158015614396573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143ba9190619c7b565b90506143c9620186a0826154f5565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561441e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144429190619c7b565b9050614451620186a0826154f5565b601f546026546040516370a0823160e01b81526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa1580156144a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144ca9190619c7b565b601f546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b03166004820181905261c350602483015291925063095ea7b3906044016020604051808303816000875af115801561453c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145609190619b2d565b50601f546025546040805160609290921b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208301528051601481840301815260348301918290527fc7012626000000000000000000000000000000000000000000000000000000009091526001600160a01b03610100909304929092169163c7012626916145f8919061c35090603801619d0d565b6020604051808303816000875af1158015614617573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061463b9190619b2d565b50601f546026546040516370a0823160e01b81526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa158015614691573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146b59190619c7b565b90506146d5856146c58885619e92565b6146cf9190619e92565b826154f5565b601f54602480546040516370a0823160e01b81526001600160a01b0391821660048201526000936101009004909116916370a082319101602060405180830381865afa158015614729573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061474d9190619c7b565b90506147698661475f8961c350619ea5565b6146cf9190619ea5565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156147be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147e29190619c7b565b90506147f061c350826154f5565b5050505050505050565b601f546025546040516370a0823160e01b81526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa15801561484f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148739190619c7b565b90506148806000826154f5565b601f546025546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261c350602482018190529261010090049091169063a9059cbb90604401612520565b601f54602480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12092810183905291926101009004169063095ea7b3906044016020604051808303816000875af1158015614956573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061497a9190619b2d565b50604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156149e757600080fd5b505af11580156149fb573d6000803e3d6000fd5b5050601f54602480546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000928101929092526044820186905261010090920490911692506323b872dd915060640161337e565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614abd57600080fd5b505af1158015614ad1573d6000803e3d6000fd5b5050601f546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a6004820181905293508392506101009091046001600160a01b03169063f687d12a90602401600060405180830381600087803b158015614b3d57600080fd5b505af1158015614b51573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015614bae57600080fd5b505af1158015614bc2573d6000803e3d6000fd5b5050601f546040517feddeb123000000000000000000000000000000000000000000000000000000008152600a60048201526101009091046001600160a01b0316925063eddeb1239150602401600060405180830381600087803b158015614c2957600080fd5b505af1158015614c3d573d6000803e3d6000fd5b50505050600080601f60019054906101000a90046001600160a01b03166001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015614c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614cba9190619ce1565b601f549193509150614cda9061010090046001600160a01b03168361557d565b610d646146cf8486619e92565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614d4057600080fd5b505af1158015614d54573d6000803e3d6000fd5b5050601f546040517fccc7759900000000000000000000000000000000000000000000000000000000815261321160048201526101009091046001600160a01b0316925063ccc775999150602401600060405180830381600087803b158015614dbc57600080fd5b505af1158015614dd0573d6000803e3d6000fd5b50505050611495601f60019054906101000a90046001600160a01b03166001600160a01b0316638b851b956040518163ffffffff1660e01b8152600401602060405180830381865afa158015611469573d6000803e3d6000fd5b601f54602480546040516370a0823160e01b81526001600160a01b0391821660048201526000936101009004909116916370a082319101602060405180830381865afa158015614e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614ea29190619c7b565b9050614eb1620186a0826154f5565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015614f06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614f2a9190619c7b565b9050614f39620186a0826154f5565b601f546040517f42966c6800000000000000000000000000000000000000000000000000000000815261c35060048201526101009091046001600160a01b0316906342966c68906024016020604051808303816000875af1158015614fa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614fc69190619b2d565b50601f54602480546040516370a0823160e01b81526001600160a01b0391821660048201526000936101009004909116916370a082319101602060405180830381865afa15801561501b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061503f9190619c7b565b905061504d61c350826154f5565b6000601f60019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156150a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906150c69190619c7b565b9050610d6461c350826154f5565b60606015805480602002602001604051908101604052809291908181526020018280548015610f8f576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610f71575050505050905090565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561518d57600080fd5b505af11580156151a1573d6000803e3d6000fd5b50506020546040517fee2815ba00000000000000000000000000000000000000000000000000000000815260016004820152600060248201526001600160a01b03909116925063ee2815ba9150604401600060405180830381600087803b15801561520b57600080fd5b505af115801561521f573d6000803e3d6000fd5b5050604051630618f58760e51b81527f78fff396000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024016116ab565b601f546025546040516370a0823160e01b81526001600160a01b0391821660048201526000926101009004909116906370a0823190602401602060405180830381865afa1580156152cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906152f39190619c7b565b90506153006000826154f5565b601f54602480546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201819052928101929092526000926101009004169063dd62ed3e90604401602060405180830381865afa158015615376573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061539a9190619c7b565b90506153a76000826154f5565b604051630618f58760e51b81527f10bad14700000000000000000000000000000000000000000000000000000000600482015261c35090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561541757600080fd5b505af115801561542b573d6000803e3d6000fd5b5050601f54602480546025546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152908216928101929092526044820186905261010090920490911692506323b872dd91506064016020604051808303816000875af11580156154b2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d649190619b2d565b60006154e06196c6565b6154eb848483615630565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c54906044015b60006040518083038186803b15801561556157600080fd5b505afa158015615575573d6000803e3d6000fd5b505050505050565b6040517f515361f60000000000000000000000000000000000000000000000000000000081526001600160a01b03808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f690604401615549565b6040517ff320d963000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f320d963906155499085908590600401619eb8565b60008061563d85846156ab565b90506156a06040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f7879000000815250828660405160200161568b929190619edd565b604051602081830303815290604052856156b7565b9150505b9392505050565b60006156a483836156e5565b60c081015151600090156156db576156d484848460c00151615700565b90506156a4565b6156d484846158a6565b60006156f18383615991565b6156a4838360200151846156b7565b60008061570b61599d565b905060006157198683615a70565b905060006157308260600151836020015185615f16565b9050600061574083838989616128565b9050600061574d82616fa5565b602081015181519192509060030b156157c057898260400151604051602001615777929190619eff565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526157b791600401619f80565b60405180910390fd5b60006158036040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001617174565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90615856908490600401619f80565b602060405180830381865afa158015615873573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906158979190619b6b565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc925906158fb908790600401619f80565b600060405180830381865afa158015615918573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526159409190810190619fb3565b9050600061596e828560405160200161595a929190619fe8565b604051602081830303815290604052617374565b90506001600160a01b0381166154eb57848460405160200161577792919061a017565b61175382826000617387565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90615a2490849060040161a0c2565b600060405180830381865afa158015615a41573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615a699190810190619df7565b9250505090565b615aa26040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050615aed6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b615af68561748a565b60208201526000615b068661786f565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015615b48573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615b709190810190619df7565b86838560200151604051602001615b8a949392919061a109565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190615be2908590600401619f80565b600060405180830381865afa158015615bff573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615c279190810190619df7565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690615c6f90849060040161a20d565b602060405180830381865afa158015615c8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615cb09190619b2d565b615cc55781604051602001615777919061a25f565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890615d0a90849060040161a2f1565b600060405180830381865afa158015615d27573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615d4f9190810190619df7565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690615d9690849060040161a343565b602060405180830381865afa158015615db3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615dd79190619b2d565b15615e6c576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890615e2190849060040161a343565b600060405180830381865afa158015615e3e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615e669190810190619df7565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001615e91919061a395565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401615ebd929190619eb8565b600060405180830381865afa158015615eda573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615f029190810190619df7565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081615f325790505090506040518060400160405280600481526020017f677265700000000000000000000000000000000000000000000000000000000081525081600081518110615f9257615f9261a401565b60200260200101819052506040518060400160405280600381526020017f2d726c000000000000000000000000000000000000000000000000000000000081525081600181518110615fe657615fe661a401565b602002602001018190525084604051602001616002919061a430565b604051602081830303815290604052816002815181106160245761602461a401565b602002602001018190525082604051602001616040919061a49c565b604051602081830303815290604052816003815181106160625761606261a401565b6020026020010181905250600061607882616fa5565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506161099060408051808201825260008082526020918201528151808301909252845182528085019082015290617af2565b61611e5785604051602001615777919061a4dd565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015616178565b511590565b6162ec57826020015115616234576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a4016157b7565b8260c00151156162ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a4016157b7565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161630557905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806163609061a56e565b935060ff16815181106163755761637561a401565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016163c6919061a58d565b6040516020818303038152906040528282806163e19061a56e565b935060ff16815181106163f6576163f661a401565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806164439061a56e565b935060ff16815181106164585761645861a401565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806164a59061a56e565b935060ff16815181106164ba576164ba61a401565b602002602001018190525087602001518282806164d69061a56e565b935060ff16815181106164eb576164eb61a401565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806165389061a56e565b935060ff168151811061654d5761654d61a401565b6020908102919091010152875182826165658161a56e565b935060ff168151811061657a5761657a61a401565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806165c79061a56e565b935060ff16815181106165dc576165dc61a401565b60200260200101819052506165f046617b53565b82826165fb8161a56e565b935060ff16815181106166105761661061a401565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c65000000000000000000000000000000000081525082828061665d9061a56e565b935060ff16815181106166725761667261a401565b60200260200101819052508682828061668a9061a56e565b935060ff168151811061669f5761669f61a401565b60209081029190910101528551156167c65760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826166f08161a56e565b935060ff16815181106167055761670561a401565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90616755908990600401619f80565b600060405180830381865afa158015616772573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261679a9190810190619df7565b82826167a58161a56e565b935060ff16815181106167ba576167ba61a401565b60200260200101819052505b8460200151156168965760408051808201909152601281527f2d2d766572696679536f75726365436f646500000000000000000000000000006020820152828261680f8161a56e565b935060ff16815181106168245761682461a401565b60200260200101819052506040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152508282806168719061a56e565b935060ff16815181106168865761688661a401565b6020026020010181905250616a5d565b6168ce6161738660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6169615760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826169118161a56e565b935060ff16815181106169265761692661a401565b60200260200101819052508460a00151604051602001616946919061a430565b6040516020818303038152906040528282806168719061a56e565b8460c001511580156169a45750604080890151815180830183526000808252602091820152825180840190935281518352908101908201526169a290511590565b155b15616a5d5760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826169e88161a56e565b935060ff16815181106169fd576169fd61a401565b6020026020010181905250616a1188617bf3565b604051602001616a21919061a430565b604051602081830303815290604052828280616a3c9061a56e565b935060ff1681518110616a5157616a5161a401565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152616a9190511590565b616b265760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282616ad48161a56e565b935060ff1681518110616ae957616ae961a401565b60200260200101819052508460400151828280616b059061a56e565b935060ff1681518110616b1a57616b1a61a401565b60200260200101819052505b606085015115616c475760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282616b6f8161a56e565b935060ff1681518110616b8457616b8461a401565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015616bf3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616c1b9190810190619df7565b8282616c268161a56e565b935060ff1681518110616c3b57616c3b61a401565b60200260200101819052505b60e08501515115616cee5760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282616c918161a56e565b935060ff1681518110616ca657616ca661a401565b6020026020010181905250616cc28560e0015160000151617b53565b8282616ccd8161a56e565b935060ff1681518110616ce257616ce261a401565b60200260200101819052505b60e08501516020015115616d985760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282616d3b8161a56e565b935060ff1681518110616d5057616d5061a401565b6020026020010181905250616d6c8560e0015160200151617b53565b8282616d778161a56e565b935060ff1681518110616d8c57616d8c61a401565b60200260200101819052505b60e08501516040015115616e425760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282616de58161a56e565b935060ff1681518110616dfa57616dfa61a401565b6020026020010181905250616e168560e0015160400151617b53565b8282616e218161a56e565b935060ff1681518110616e3657616e3661a401565b60200260200101819052505b60e08501516060015115616eec5760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282616e8f8161a56e565b935060ff1681518110616ea457616ea461a401565b6020026020010181905250616ec08560e0015160600151617b53565b8282616ecb8161a56e565b935060ff1681518110616ee057616ee061a401565b60200260200101819052505b60008160ff1667ffffffffffffffff811115616f0a57616f0a619d2f565b604051908082528060200260200182016040528015616f3d57816020015b6060815260200190600190039081616f285790505b50905060005b8260ff168160ff161015616f9657838160ff1681518110616f6657616f6661a401565b6020026020010151828260ff1681518110616f8357616f8361a401565b6020908102919091010152600101616f43565b5093505050505b949350505050565b616fcc6040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916170529186910161a5f8565b600060405180830381865afa15801561706f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526170979190810190619df7565b905060006170a586836186e2565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b81526004016170d59190619a1f565b6000604051808303816000875af11580156170f4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261711c919081019061a63f565b805190915060030b158015906171355750602081015151155b80156171445750604081015151155b1561611e578160008151811061715c5761715c61a401565b6020026020010151604051602001615777919061a6f5565b606060006171a98560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506171e09082905b90618837565b1561733d57600061725d82617257846172516172238a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b9061885e565b906188c0565b604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506172c1908290618837565b1561732b57604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617328905b8290618945565b90505b6173348161896b565b925050506156a4565b821561735657848460405160200161577792919061a8e1565b50506040805160208101909152600081526156a4565b509392505050565b6000808251602084016000f09392505050565b8160a001511561739657505050565b60006173a38484846189d4565b905060006173b082616fa5565b602081015181519192509060030b15801561744c5750604080518082018252600781527f53554343455353000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261744c906040805180820182526000808252602091820152815180830190925284518252808501908201526171da565b1561745957505050505050565b60408201515115617479578160400151604051602001615777919061a988565b80604051602001615777919061a9e6565b606060006174bf8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150617524905b8290617af2565b1561759357604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526156a49061758e908390618f6f565b61896b565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526175f5905b8290618ff9565b6001036176c257604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261765b90617321565b50604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526156a49061758e905b8390618945565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526177219061751d565b1561785857604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290617789908390619093565b90506000816001835161779c9190619ea5565b815181106177ac576177ac61a401565b6020026020010151905061784f61758e6178226040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290618f6f565b95945050505050565b82604051602001615777919061aa51565b50919050565b606060006178a48360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506179069061751d565b15617914576156a48161896b565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617973906175ee565b6001036179dd57604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526156a49061758e906176bb565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617a3c9061751d565b1561785857604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290617aa4908390619093565b9050600181511115617ae0578060028251617abf9190619ea5565b81518110617acf57617acf61a401565b602002602001015192505050919050565b5082604051602001615777919061aa51565b805182516000911115617b07575060006154ef565b81518351602085015160009291617b1d91619e92565b617b279190619ea5565b905082602001518103617b3e5760019150506154ef565b82516020840151819020912014905092915050565b60606000617b6083619138565b600101905060008167ffffffffffffffff811115617b8057617b80619d2f565b6040519080825280601f01601f191660200182016040528015617baa576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084617bb457509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091617c7f905b829061921a565b15617cbf57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617d1e90617c78565b15617d5e57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617dbd90617c78565b15617dfd57505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617e5c90617c78565b80617ec15750604080518082018252601081527f47504c2d322e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617ec190617c78565b15617f0157505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617f6090617c78565b80617fc55750604080518082018252601081527f47504c2d332e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617fc590617c78565b1561800557505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261806490617c78565b806180c95750604080518082018252601181527f4c47504c2d322e312d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526180c990617c78565b1561810957505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261816890617c78565b806181cd5750604080518082018252601181527f4c47504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526181cd90617c78565b1561820d57505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261826c90617c78565b156182ac57505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261830b90617c78565b1561834b57505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526183aa90617c78565b156183ea57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261844990617c78565b1561848957505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e3000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526184e890617c78565b1561852857505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261858790617c78565b806185ec5750604080518082018252601181527f4147504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526185ec90617c78565b1561862c57505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261868b90617c78565b156186cb57505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151615777929060200161ab2f565b60608060005b845181101561876d57818582815181106187045761870461a401565b602002602001015160405160200161871d929190619fe8565b60405160208183030381529060405291506001855161873c9190619ea5565b81146187655781604051602001618753919061ac98565b60405160208183030381529060405291505b6001016186e8565b5060408051600380825260808201909252600091816020015b606081526020019060019003908161878657905050905083816000815181106187b1576187b161a401565b60200260200101819052506040518060400160405280600281526020017f2d63000000000000000000000000000000000000000000000000000000000000815250816001815181106188055761880561a401565b602002602001018190525081816002815181106188245761882461a401565b6020908102919091010152949350505050565b6020808301518351835192840151600093618855929184919061922e565b14159392505050565b60408051808201909152600080825260208201526000618890846000015185602001518560000151866020015161933f565b90508360200151816188a29190619ea5565b845185906188b1908390619ea5565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156188e55750816154ef565b602080830151908401516001911461890c5750815160208481015190840151829020919020145b801561893d57825184518590618923908390619ea5565b9052508251602085018051618939908390619e92565b9052505b509192915050565b604080518082019091526000808252602082015261896483838361945f565b5092915050565b60606000826000015167ffffffffffffffff81111561898c5761898c619d2f565b6040519080825280601f01601f1916602001820160405280156189b6576020820181803683370190505b5090506000602082019050618964818560200151866000015161950a565b606060006189e061599d565b6040805160ff808252612000820190925291925060009190816020015b60608152602001906001900390816189fd57905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280618a589061a56e565b935060ff1681518110618a6d57618a6d61a401565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001618abe919061acd9565b604051602081830303815290604052828280618ad99061a56e565b935060ff1681518110618aee57618aee61a401565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280618b3b9061a56e565b935060ff1681518110618b5057618b5061a401565b602002602001018190525082604051602001618b6c919061a49c565b604051602081830303815290604052828280618b879061a56e565b935060ff1681518110618b9c57618b9c61a401565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280618be99061a56e565b935060ff1681518110618bfe57618bfe61a401565b6020026020010181905250618c138784619584565b8282618c1e8161a56e565b935060ff1681518110618c3357618c3361a401565b602090810291909101015285515115618cdf5760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282618c858161a56e565b935060ff1681518110618c9a57618c9a61a401565b6020026020010181905250618cb3866000015184619584565b8282618cbe8161a56e565b935060ff1681518110618cd357618cd361a401565b60200260200101819052505b856080015115618d4d5760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282618d288161a56e565b935060ff1681518110618d3d57618d3d61a401565b6020026020010181905250618db3565b8415618db35760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282618d928161a56e565b935060ff1681518110618da757618da761a401565b60200260200101819052505b60408601515115618e4f5760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282618dfd8161a56e565b935060ff1681518110618e1257618e1261a401565b60200260200101819052508560400151828280618e2e9061a56e565b935060ff1681518110618e4357618e4361a401565b60200260200101819052505b856060015115618eb95760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282618e988161a56e565b935060ff1681518110618ead57618ead61a401565b60200260200101819052505b60008160ff1667ffffffffffffffff811115618ed757618ed7619d2f565b604051908082528060200260200182016040528015618f0a57816020015b6060815260200190600190039081618ef55790505b50905060005b8260ff168160ff161015618f6357838160ff1681518110618f3357618f3361a401565b6020026020010151828260ff1681518110618f5057618f5061a401565b6020908102919091010152600101618f10565b50979650505050505050565b6040805180820190915260008082526020820152815183511015618f945750816154ef565b81518351602085015160009291618faa91619e92565b618fb49190619ea5565b60208401519091506001908214618fd5575082516020840151819020908220145b8015618ff057835185518690618fec908390619ea5565b9052505b50929392505050565b600080826000015161901d856000015186602001518660000151876020015161933f565b6190279190619e92565b90505b8351602085015161903b9190619e92565b8111618964578161904b8161ad1e565b92505082600001516190828560200151836190669190619ea5565b86516190729190619ea5565b838660000151876020015161933f565b61908c9190619e92565b905061902a565b606060006190a18484618ff9565b6190ac906001619e92565b67ffffffffffffffff8111156190c4576190c4619d2f565b6040519080825280602002602001820160405280156190f757816020015b60608152602001906001900390816190e25790505b50905060005b815181101561736c5761911361758e8686618945565b8282815181106191255761912561a401565b60209081029190910101526001016190fd565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310619181577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106191ad576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106191cb57662386f26fc10000830492506010015b6305f5e10083106191e3576305f5e100830492506008015b61271083106191f757612710830492506004015b60648310619209576064830492506002015b600a83106154ef5760010192915050565b600061922683836195c4565b159392505050565b60008085841161933557602084116192e15760008415619279576001619255866020619ea5565b61926090600861ad38565b61926b90600261ae36565b6192759190619ea5565b1990505b83518116856192888989619e92565b6192929190619ea5565b805190935082165b8181146192cc578784116192b45787945050505050616f9d565b836192be8161ae42565b94505082845116905061929a565b6192d68785619e92565b945050505050616f9d565b8383206192ee8588619ea5565b6192f89087619e92565b91505b85821061933357848220808203619320576193168684619e92565b9350505050616f9d565b61932b600184619ea5565b9250506192fb565b505b5092949350505050565b6000838186851161944a57602085116193f9576000851561938b576001619367876020619ea5565b61937290600861ad38565b61937d90600261ae36565b6193879190619ea5565b1990505b8451811660008761939c8b8b619e92565b6193a69190619ea5565b855190915083165b8281146193eb578186106193d3576193c68b8b619e92565b9650505050505050616f9d565b856193dd8161ad1e565b9650508386511690506193ae565b859650505050505050616f9d565b508383206000905b61940b8689619ea5565b8211619448578583208082036194275783945050505050616f9d565b619432600185619e92565b93505081806194409061ad1e565b925050619401565b505b6194548787619e92565b979650505050505050565b60408051808201909152600080825260208201526000619491856000015186602001518660000151876020015161933f565b6020808701805191860191909152519091506194ad9082619ea5565b8352845160208601516194c09190619e92565b81036194cf5760008552619501565b835183516194dd9190619e92565b855186906194ec908390619ea5565b90525083516194fb9082619e92565b60208601525b50909392505050565b602081106195425781518352619521602084619e92565b925061952e602083619e92565b915061953b602082619ea5565b905061950a565b6000198115619571576001619558836020619ea5565b6195649061010061ae36565b61956e9190619ea5565b90505b9151835183169219169190911790915250565b606060006195928484615a70565b80516020808301516040519394506195ac9390910161ae59565b60405160208183030381529060405291505092915050565b81518151600091908111156195d7575081515b6020808501519084015160005b83811015619690578251825180821461966057600019602087101561963f57600184619611896020619ea5565b61961b9190619e92565b61962690600861ad38565b61963190600261ae36565b61963b9190619ea5565b1990505b818116838216818103911461965d5797506154ef9650505050505050565b50505b61966b602086619e92565b9450619678602085619e92565b935050506020816196899190619e92565b90506195e4565b508451865161611e919061aeb1565b610b678061aed283390190565b61106f8061ba3983390190565b6120728061caa883390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161970961970e565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016197096040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156197c05783516001600160a01b0316835260209384019390920191600101619799565b509095945050505050565b60005b838110156197e65781810151838201526020016197ce565b50506000910152565b600081518084526198078160208601602086016197cb565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015619917577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b818110156198fd577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a85030183526198e78486516197ef565b60209586019590945092909201916001016198ad565b509197505050602094850194929092019150600101619843565b50929695505050505050565b600081518084526020840193506020830160005b828110156199775781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101619937565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015619917577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281518051604087526199ed60408801826197ef565b9050602082015191508681036020880152619a088183619923565b9650505060209384019391909101906001016199a9565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015619917577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452619a818583516197ef565b94506020938401939190910190600101619a47565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015619917577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152619b176040870182619923565b9550506020938401939190910190600101619abe565b600060208284031215619b3f57600080fd5b815180151581146156a457600080fd5b80516001600160a01b0381168114619b6657600080fd5b919050565b600060208284031215619b7d57600080fd5b6156a482619b4f565b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff8816604083015286606083015260038610619c40577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a0830152619c6160c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b600060208284031215619c8d57600080fd5b5051919050565b600181811c90821680619ca857607f821691505b602082108103617869577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60008060408385031215619cf457600080fd5b619cfd83619b4f565b6020939093015192949293505050565b604081526000619d2060408301856197ef565b90508260208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715619d8157619d81619d2f565b60405290565b60008067ffffffffffffffff841115619da257619da2619d2f565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715619dd157619dd1619d2f565b604052838152905080828401851015619de957600080fd5b61736c8460208301856197cb565b600060208284031215619e0957600080fd5b815167ffffffffffffffff811115619e2057600080fd5b8201601f81018413619e3157600080fd5b6154eb84825160208401619d87565b600060208284031215619e5257600080fd5b815160ff811681146156a457600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156154ef576154ef619e63565b818103818111156154ef576154ef619e63565b604081526000619ecb60408301856197ef565b82810360208401526156a081856197ef565b6001600160a01b0383168152604060208201526000616f9d60408301846197ef565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351619f3781601a8501602088016197cb565b7f3a20000000000000000000000000000000000000000000000000000000000000601a918401918201528351619f7481601c8401602088016197cb565b01601c01949350505050565b6020815260006156a460208301846197ef565b600082601f830112619fa457600080fd5b6156a483835160208501619d87565b600060208284031215619fc557600080fd5b815167ffffffffffffffff811115619fdc57600080fd5b6154eb84828501619f93565b60008351619ffa8184602088016197cb565b83519083019061a00e8183602088016197cb565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161a04f81601a8501602088016197cb565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161a08c8160338401602088016197cb565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f555400000000000000000000000000000000000000000060608201526080602082015260006156a460808301846197ef565b6000855161a11b818460208a016197cb565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161a155816001840160208a016197cb565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161a1938160028401602089016197cb565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161a1d58160028401602088016197cb565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061a22060408301846197ef565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161a29781601f8501602087016197cb565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061a30460408301846197ef565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061a35660408301846197ef565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161a3cd8160148501602087016197cb565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161a4688160018501602087016197cb565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161a4ae8184602087016197cb565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161a56181604b8501602087016197cb565b91909101604b0192915050565b600060ff821660ff810361a5845761a584619e63565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161a5eb8160298501602087016197cb565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f504154480000000000000000000060608201526080602082015260006156a460808301846197ef565b60006020828403121561a65157600080fd5b815167ffffffffffffffff81111561a66857600080fd5b82016060818503121561a67a57600080fd5b61a682619d5e565b81518060030b811461a69357600080fd5b8152602082015167ffffffffffffffff81111561a6af57600080fd5b61a6bb86828501619f93565b602083015250604082015167ffffffffffffffff81111561a6db57600080fd5b61a6e786828501619f93565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161a7538160218501602087016197cb565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161a93f8160218501602088016197cb565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161a97c81602e8401602088016197cb565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161a5eb8160298501602087016197cb565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161aa448160228501602087016197cb565b9190910160220192915050565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161aa8981600e8501602087016197cb565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161ab678160188501602088016197cb565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161aba481601c8401602088016197cb565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161acaa8184602087016197cb565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161ad1181601c8501602087016197cb565b91909101601c0192915050565b6000600019820361ad315761ad31619e63565b5060010190565b80820281158282048414176154ef576154ef619e63565b6001815b600184111561ad8a5780850481111561ad6e5761ad6e619e63565b600184161561ad7c57908102905b60019390931c92800261ad53565b935093915050565b60008261ada1575060016154ef565b8161adae575060006154ef565b816001811461adc4576002811461adce5761adea565b60019150506154ef565b60ff84111561addf5761addf619e63565b50506001821b6154ef565b5060208310610133831016604e8410600b841016171561ae0d575081810a6154ef565b61ae1a600019848461ad4f565b806000190482111561ae2e5761ae2e619e63565b029392505050565b60006156a4838361ad92565b60008161ae515761ae51619e63565b506000190190565b6000835161ae6b8184602088016197cb565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161aea58160018401602088016197cb565b01600101949350505050565b818103600083128015838313168383128216171561896457618964619e6356fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea2646970667358221220b09c98b42d894b1b92a74ecc691587bcc17012fff7ef3bcfa6fe755f9b6255a564736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea2646970667358221220b13ccf97234dc9b7f658234f9bf37a57d08f465bb99c431b865174e7a399a30764736f6c634300081a003360c060405234801561001057600080fd5b5060405161207238038061207283398101604081905261002f916101f0565b6001600160a01b038216158061004c57506001600160a01b038116155b1561006a5760405163d92e233d60e01b815260040160405180910390fd5b60066100768982610342565b5060076100838882610342565b506008805460ff191660ff881617905560808590528360028111156100aa576100aa610400565b60a08160028111156100be576100be610400565b905250600192909255600080546001600160a01b039283166001600160a01b0319909116179055600880549190921661010002610100600160a81b0319909116179055506104169350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261013357600080fd5b81516001600160401b0381111561014c5761014c61010c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561017a5761017a61010c565b60405281815283820160200185101561019257600080fd5b60005b828110156101b157602081860181015183830182015201610195565b506000918101602001919091529392505050565b8051600381106101d457600080fd5b919050565b80516001600160a01b03811681146101d457600080fd5b600080600080600080600080610100898b03121561020d57600080fd5b88516001600160401b0381111561022357600080fd5b61022f8b828c01610122565b60208b015190995090506001600160401b0381111561024d57600080fd5b6102598b828c01610122565b975050604089015160ff8116811461027057600080fd5b60608a0151909650945061028660808a016101c5565b60a08a0151909450925061029c60c08a016101d9565b91506102aa60e08a016101d9565b90509295985092959890939650565b600181811c908216806102cd57607f821691505b6020821081036102ed57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561033d57806000526020600020601f840160051c8101602085101561031a5750805b601f840160051c820191505b8181101561033a5760008155600101610326565b50505b505050565b81516001600160401b0381111561035b5761035b61010c565b61036f8161036984546102b9565b846102f3565b6020601f8211600181146103a3576000831561038b5750848201515b600019600385901b1c1916600184901b17845561033a565b600084815260208120601f198516915b828110156103d357878501518255602094850194600190920191016103b3565b50848210156103f15786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a051611c1b61045760003960006103440152600081816102f001528181610bdc01528181610ce201528181610efe01526110040152611c1b6000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c806395d89b41116100f9578063ccc7759911610097578063eddeb12311610071578063eddeb12314610461578063f2441b3214610474578063f687d12a14610494578063fc5fecd5146104a757600080fd5b8063ccc77599146103d4578063d9eeebed146103e7578063dd62ed3e1461041b57600080fd5b8063b84c8246116100d3578063b84c824614610386578063c47f00271461039b578063c7012626146103ae578063c835d7cc146103c157600080fd5b806395d89b4114610337578063a3413d031461033f578063a9059cbb1461037357600080fd5b80633ce4a5bc116101665780634d8943bb116101405780634d8943bb146102ac57806370a08231146102b557806385e1f4d0146102eb5780638b851b951461031257600080fd5b80633ce4a5bc1461024657806342966c681461028657806347e7ef241461029957600080fd5b806318160ddd1161019757806318160ddd1461021657806323b872dd1461021e578063313ce5671461023157600080fd5b806306fdde03146101be578063091d2788146101dc578063095ea7b3146101f3575b600080fd5b6101c66104ba565b6040516101d39190611648565b60405180910390f35b6101e560015481565b6040519081526020016101d3565b610206610201366004611687565b61054c565b60405190151581526020016101d3565b6005546101e5565b61020661022c3660046116b3565b610563565b60085460405160ff90911681526020016101d3565b61026173735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d3565b6102066102943660046116f4565b6105fa565b6102066102a7366004611687565b61060e565b6101e560025481565b6101e56102c336600461170d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6101e57f000000000000000000000000000000000000000000000000000000000000000081565b60085461026190610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6101c6610767565b6103667f000000000000000000000000000000000000000000000000000000000000000081565b6040516101d3919061172a565b610206610381366004611687565b610776565b610399610394366004611832565b610783565b005b6103996103a9366004611832565b6107e0565b6102066103bc366004611883565b610839565b6103996103cf36600461170d565b610988565b6103996103e236600461170d565b610a9c565b6103ef610bb0565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101d3565b6101e56104293660046118dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205490565b61039961046f3660046116f4565b610dce565b6000546102619073ffffffffffffffffffffffffffffffffffffffff1681565b6103996104a23660046116f4565b610e50565b6103ef6104b53660046116f4565b610ed2565b6060600680546104c990611915565b80601f01602080910402602001604051908101604052809291908181526020018280546104f590611915565b80156105425780601f1061051757610100808354040283529160200191610542565b820191906000526020600020905b81548152906001019060200180831161052557829003601f168201915b5050505050905090565b60006105593384846110ee565b5060015b92915050565b60006105708484846111f7565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460209081526040808320338452909152902054828110156105db576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105ef85336105ea8685611997565b6110ee565b506001949350505050565b600061060633836113b2565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab1480159061064c575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156106755750600854610100900473ffffffffffffffffffffffffffffffffffffffff163314155b156106ac576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106b683836114f4565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526107569186906119aa565b60405180910390a250600192915050565b6060600780546104c990611915565b60006105593384846111f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab146107d0576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60076107dc8282611a1b565b5050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461082d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60066107dc8282611a1b565b6000806000610846610bb0565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156108d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fc9190611b34565b610932576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61093c33856113b2565b60025460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161097591899189918791611b56565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146109d5576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a22576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610ae9576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610b36576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c679190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610cb6576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d699190611ba2565b905080600003610da5576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060025460015483610db89190611bbb565b610dc29190611bd2565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e1b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610a91565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e9d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610f65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f899190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610fd8576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015611067573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108b9190611ba2565b9050806000036110c7576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000906110d78784611bbb565b6110e19190611bd2565b9296929550919350505050565b73ffffffffffffffffffffffffffffffffffffffff831661113b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611188576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611244576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611291576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040902054818110156112f1576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112fb8282611997565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260036020526040808220939093559085168152908120805484929061133e908490611bd2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113a491815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff82166113ff576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260409020548181101561145f576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114698282611997565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260036020526040812091909155600580548492906114a4908490611997565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016111ea565b73ffffffffffffffffffffffffffffffffffffffff8216611541576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008282546115539190611bd2565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805483929061158d908490611bd2565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561160a576020818501810151868301820152016115ee565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061165b60208301846115e4565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461168457600080fd5b50565b6000806040838503121561169a57600080fd5b82356116a581611662565b946020939093013593505050565b6000806000606084860312156116c857600080fd5b83356116d381611662565b925060208401356116e381611662565b929592945050506040919091013590565b60006020828403121561170657600080fd5b5035919050565b60006020828403121561171f57600080fd5b813561165b81611662565b6020810160038310611765577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff8411156117b5576117b561176b565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff821117156118025761180261176b565b60405283815290508082840185101561181a57600080fd5b83836020830137600060208583010152509392505050565b60006020828403121561184457600080fd5b813567ffffffffffffffff81111561185b57600080fd5b8201601f8101841361186c57600080fd5b61187b8482356020840161179a565b949350505050565b6000806040838503121561189657600080fd5b823567ffffffffffffffff8111156118ad57600080fd5b8301601f810185136118be57600080fd5b6118cd8582356020840161179a565b95602094909401359450505050565b600080604083850312156118ef57600080fd5b82356118fa81611662565b9150602083013561190a81611662565b809150509250929050565b600181811c9082168061192957607f821691505b602082108103611962577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561055d5761055d611968565b6040815260006119bd60408301856115e4565b90508260208301529392505050565b601f821115611a1657806000526020600020601f840160051c810160208510156119f35750805b601f840160051c820191505b81811015611a1357600081556001016119ff565b50505b505050565b815167ffffffffffffffff811115611a3557611a3561176b565b611a4981611a438454611915565b846119cc565b6020601f821160018114611a9b5760008315611a655750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611a13565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015611ae95787850151825560209485019460019092019101611ac9565b5084821015611b2557868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b600060208284031215611b4657600080fd5b8151801515811461165b57600080fd5b608081526000611b6960808301876115e4565b6020830195909552506040810192909252606090910152919050565b600060208284031215611b9757600080fd5b815161165b81611662565b600060208284031215611bb457600080fd5b5051919050565b808202811582820484141761055d5761055d611968565b8082018082111561055d5761055d61196856fea2646970667358221220d6ba834f25782689ed13bffb6ac9ff2c8d3b5342c94a515aea8197a76070ad3f64736f6c634300081a0033a2646970667358221220d9398cd15379958f5d13f6af905667b166184367d999992760d0eb7394ef3e4e64736f6c634300081a0033", } // ZRC20TestABI is the input ABI used to generate the binding from. diff --git a/v2/types/factories/Address__factory.ts b/v2/types/factories/Address__factory.ts index 8e4f2460b..f409d3d34 100644 --- a/v2/types/factories/Address__factory.ts +++ b/v2/types/factories/Address__factory.ts @@ -42,7 +42,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122092e7aecc4d2ccb1e367abefe25d03e613e1b1d9f823e0dffcbae8c231c191fbf64736f6c634300081a0033"; + "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220525f69d25bb56f3e15d69270d52349856b0d9c92f346a3233a662178749fd33264736f6c634300081a0033"; type AddressConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/BeaconProxy__factory.ts b/v2/types/factories/BeaconProxy__factory.ts index a918ea36a..f2d549740 100644 --- a/v2/types/factories/BeaconProxy__factory.ts +++ b/v2/types/factories/BeaconProxy__factory.ts @@ -97,7 +97,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a06040526040516105eb3803806105eb83398101604081905261002291610387565b61002c828261003e565b506001600160a01b0316608052610484565b610047826100fe565b6040516001600160a01b038316907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a28051156100f2576100ed826001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e7919061044d565b82610211565b505050565b6100fa610288565b5050565b806001600160a01b03163b60000361013957604051631933b43b60e21b81526001600160a01b03821660048201526024015b60405180910390fd5b807fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392831617905560408051635c60da1b60e01b81529051600092841691635c60da1b9160048083019260209291908290030181865afa1580156101b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d9919061044d565b9050806001600160a01b03163b6000036100fa57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610130565b6060600080846001600160a01b03168460405161022e9190610468565b600060405180830381855af49150503d8060008114610269576040519150601f19603f3d011682016040523d82523d6000602084013e61026e565b606091505b50909250905061027f8583836102a9565b95945050505050565b34156102a75760405163b398979f60e01b815260040160405180910390fd5b565b6060826102be576102b982610308565b610301565b81511580156102d557506001600160a01b0384163b155b156102fe57604051639996b31560e01b81526001600160a01b0385166004820152602401610130565b50805b9392505050565b8051156103185780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80516001600160a01b038116811461034857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561037e578181015183820152602001610366565b50506000910152565b6000806040838503121561039a57600080fd5b6103a383610331565b60208401519092506001600160401b038111156103bf57600080fd5b8301601f810185136103d057600080fd5b80516001600160401b038111156103e9576103e961034d565b604051601f8201601f19908116603f011681016001600160401b03811182821017156104175761041761034d565b60405281815282820160200187101561042f57600080fd5b610440826020830160208601610363565b8093505050509250929050565b60006020828403121561045f57600080fd5b61030182610331565b6000825161047a818460208701610363565b9190910192915050565b60805161014d61049e60003960006024015261014d6000f3fe608060405261000c61000e565b005b61001e610019610020565b6100b6565b565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561008d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100b191906100da565b905090565b3660008037600080366000845af43d6000803e8080156100d5573d6000f35b3d6000fd5b6000602082840312156100ec57600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461011057600080fd5b939250505056fea2646970667358221220f057f84db33183a0d3a6c76e9622f96eee9a0aa593cc3a6a4209d5809c1fe2fd64736f6c634300081a0033"; + "0x60a06040526040516105eb3803806105eb83398101604081905261002291610387565b61002c828261003e565b506001600160a01b0316608052610484565b610047826100fe565b6040516001600160a01b038316907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a28051156100f2576100ed826001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e7919061044d565b82610211565b505050565b6100fa610288565b5050565b806001600160a01b03163b60000361013957604051631933b43b60e21b81526001600160a01b03821660048201526024015b60405180910390fd5b807fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392831617905560408051635c60da1b60e01b81529051600092841691635c60da1b9160048083019260209291908290030181865afa1580156101b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d9919061044d565b9050806001600160a01b03163b6000036100fa57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610130565b6060600080846001600160a01b03168460405161022e9190610468565b600060405180830381855af49150503d8060008114610269576040519150601f19603f3d011682016040523d82523d6000602084013e61026e565b606091505b50909250905061027f8583836102a9565b95945050505050565b34156102a75760405163b398979f60e01b815260040160405180910390fd5b565b6060826102be576102b982610308565b610301565b81511580156102d557506001600160a01b0384163b155b156102fe57604051639996b31560e01b81526001600160a01b0385166004820152602401610130565b50805b9392505050565b8051156103185780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80516001600160a01b038116811461034857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561037e578181015183820152602001610366565b50506000910152565b6000806040838503121561039a57600080fd5b6103a383610331565b60208401519092506001600160401b038111156103bf57600080fd5b8301601f810185136103d057600080fd5b80516001600160401b038111156103e9576103e961034d565b604051601f8201601f19908116603f011681016001600160401b03811182821017156104175761041761034d565b60405281815282820160200187101561042f57600080fd5b610440826020830160208601610363565b8093505050509250929050565b60006020828403121561045f57600080fd5b61030182610331565b6000825161047a818460208701610363565b9190910192915050565b60805161014d61049e60003960006024015261014d6000f3fe608060405261000c61000e565b005b61001e610019610020565b6100b6565b565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561008d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100b191906100da565b905090565b3660008037600080366000845af43d6000803e8080156100d5573d6000f35b3d6000fd5b6000602082840312156100ec57600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461011057600080fd5b939250505056fea2646970667358221220361a0dc2b1da1d9258f68e8b1f1c9708b2cd315a53fe53be9f849efbd82649d964736f6c634300081a0033"; type BeaconProxyConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/ERC1967Proxy__factory.ts b/v2/types/factories/ERC1967Proxy__factory.ts index 4db9eef86..f6bae4bc5 100644 --- a/v2/types/factories/ERC1967Proxy__factory.ts +++ b/v2/types/factories/ERC1967Proxy__factory.ts @@ -86,7 +86,7 @@ const _abi = [ ] as const; const _bytecode = - "0x608060405260405161041d38038061041d83398101604081905261002291610268565b61002c8282610033565b5050610358565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b919061033c565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b038111156102ae57600080fd5b8301601f810185136102bf57600080fd5b80516001600160401b038111156102d8576102d861022e565b604051601f8201601f19908116603f011681016001600160401b03811182821017156103065761030661022e565b60405281815282820160200187101561031e57600080fd5b61032f826020830160208601610244565b8093505050509250929050565b6000825161034e818460208701610244565b9190910192915050565b60b7806103666000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea264697066735822122068bfc28cb2d118b34036260d2fe0b28765c5c90aab15cf90c1fb21f7a4b1fb6d64736f6c634300081a0033"; + "0x608060405260405161041d38038061041d83398101604081905261002291610268565b61002c8282610033565b5050610358565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b919061033c565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b038111156102ae57600080fd5b8301601f810185136102bf57600080fd5b80516001600160401b038111156102d8576102d861022e565b604051601f8201601f19908116603f011681016001600160401b03811182821017156103065761030661022e565b60405281815282820160200187101561031e57600080fd5b61032f826020830160208601610244565b8093505050509250929050565b6000825161034e818460208701610244565b9190910192915050565b60b7806103666000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220c882f735e5f8d521dae58bd08ba62d17508690600f26f161a5901184c092b5d964736f6c634300081a0033"; type ERC1967ProxyConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/ERC1967Utils__factory.ts b/v2/types/factories/ERC1967Utils__factory.ts index 329e33fc5..54d95849b 100644 --- a/v2/types/factories/ERC1967Utils__factory.ts +++ b/v2/types/factories/ERC1967Utils__factory.ts @@ -98,7 +98,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206d1d9a34e41300a1f4abe728c05aea568c8b941becc75807d526810fe900e81464736f6c634300081a0033"; + "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122091156d60084c9fce5d95d631aade7a5afdd10bcc0a25ba43333a535126264e7264736f6c634300081a0033"; type ERC1967UtilsConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/ERC20CustodyUpgradeTest__factory.ts b/v2/types/factories/ERC20CustodyUpgradeTest__factory.ts index 4ba106f4e..a8b7d7464 100644 --- a/v2/types/factories/ERC20CustodyUpgradeTest__factory.ts +++ b/v2/types/factories/ERC20CustodyUpgradeTest__factory.ts @@ -998,7 +998,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a060405230608052348015601357600080fd5b5060805161295861003d60003960008181611928015281816119510152611b2701526129586000f3fe6080604052600436106101c25760003560e01c806385f438c1116100f7578063ad3cb1cc11610095578063d9caed1211610064578063d9caed12146105f6578063e609055e14610616578063e63ab1e914610636578063eab103df1461066a57600080fd5b8063ad3cb1cc14610530578063c0c53b8b14610586578063d547741f146105a6578063d936547e146105c657600080fd5b806399a3c356116100d157806399a3c356146104bb5780639a590427146104db5780639b19251a146104fb578063a217fddf1461051b57600080fd5b806385f438c11461040257806391d1485414610436578063950837aa1461049b57600080fd5b80633f4ba83a11610164578063570618e11161013e578063570618e1146103625780635b112591146103965780635c975abb146103b65780638456cb59146103ed57600080fd5b80633f4ba83a146103255780634f1ef2861461033a57806352d1902d1461034d57600080fd5b8063248a9ca3116101a0578063248a9ca314610256578063252f07bf146102b35780632f2ff15d146102e557806336568abe1461030557600080fd5b806301ffc9a7146101c7578063116191b6146101fc57806321fc65f214610234575b600080fd5b3480156101d357600080fd5b506101e76101e236600461216e565b61068a565b60405190151581526020015b60405180910390f35b34801561020857600080fd5b5060005461021c906001600160a01b031681565b6040516001600160a01b0390911681526020016101f3565b34801561024057600080fd5b5061025461024f36600461220e565b610723565b005b34801561026257600080fd5b506102a5610271366004612281565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101f3565b3480156102bf57600080fd5b506002546101e79074010000000000000000000000000000000000000000900460ff1681565b3480156102f157600080fd5b5061025461030036600461229a565b6108cc565b34801561031157600080fd5b5061025461032036600461229a565b610916565b34801561033157600080fd5b50610254610967565b6102546103483660046122f9565b61099c565b34801561035957600080fd5b506102a56109bb565b34801561036e57600080fd5b506102a57f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a81565b3480156103a257600080fd5b5060025461021c906001600160a01b031681565b3480156103c257600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101e7565b3480156103f957600080fd5b506102546109ea565b34801561040e57600080fd5b506102a57f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b34801561044257600080fd5b506101e761045136600461229a565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156104a757600080fd5b506102546104b6366004612402565b610a1c565b3480156104c757600080fd5b506102546104d636600461241f565b610ba1565b3480156104e757600080fd5b506102546104f6366004612402565b610d4f565b34801561050757600080fd5b50610254610516366004612402565b610e03565b34801561052757600080fd5b506102a5600081565b34801561053c57600080fd5b506105796040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101f391906124e6565b34801561059257600080fd5b506102546105a1366004612537565b610ebd565b3480156105b257600080fd5b506102546105c136600461229a565b6111b7565b3480156105d257600080fd5b506101e76105e1366004612402565b60016020526000908152604090205460ff1681565b34801561060257600080fd5b50610254610611366004612582565b6111fb565b34801561062257600080fd5b506102546106313660046125c3565b611312565b34801561064257600080fd5b506102a57f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b34801561067657600080fd5b50610254610685366004612662565b61155d565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061071d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61072b6115b3565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461075581611634565b61075d61163e565b6001600160a01b03851660009081526001602052604090205460ff166107af576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546107c9906001600160a01b0387811691168661169c565b6000546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690635131ab599061081a9088908a908990899089906004016126c8565b600060405180830381600087803b15801561083457600080fd5b505af1158015610848573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167f6478cbb6e28c0823c691dfd74c01c985634faddd4c401b990fe4ec26277ea8d58686866040516108939392919061270b565b60405180910390a3506108c560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461090681611634565b6109108383611736565b50505050565b6001600160a01b0381163314610958576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109628282611805565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61099181611634565b6109996118ab565b50565b6109a461191d565b6109ad826119ed565b6109b782826119f8565b5050565b60006109c5611b1c565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a1481611634565b610999611b7e565b6000610a2781611634565b6001600160a01b038216610a67576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254610a9e907f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4906001600160a01b0316611805565b50600254610ad6907f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a906001600160a01b0316611805565b50610b017f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483611736565b50610b2c7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a83611736565b50600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0384169081179091556040805182815260208101929092527f4d3470c839d3c4dd664eec934b920c12fe0966e3185103dd40149496815df2b6910160405180910390a15050565b610ba96115b3565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610bd381611634565b610bdb61163e565b6001600160a01b03861660009081526001602052604090205460ff16610c2d576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610c47906001600160a01b0388811691168761169c565b6000546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063aa0c0fc190610c9a9089908b908a908a908a908a906004016127da565b600060405180830381600087803b158015610cb457600080fd5b505af1158015610cc8573d6000803e3d6000fd5b50505050856001600160a01b0316876001600160a01b03167f7b53ec10a80164e60591c43d9c222e9354886981b880a3fba19c9ceb77fb972187878787604051610d159493929190612831565b60405180910390a350610d4760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a610d7981611634565b6001600160a01b038216610db9576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216600081815260016020526040808220805460ff19169055517f51085ddf9ebdded84b76e829eb58c4078e4b5bdf97d9a94723f336039da467919190a25050565b7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a610e2d81611634565b6001600160a01b038216610e6d576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166000818152600160208190526040808320805460ff1916909217909155517faab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a549190a25050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f085750825b905060008267ffffffffffffffff166001148015610f255750303b155b905081158015610f33575080155b15610f6a576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fcb5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0388161580610fe857506001600160a01b038716155b80610ffa57506001600160a01b038616155b15611031576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611039611bd9565b611041611be1565b611049611bd9565b611051611bf1565b600080546001600160a01b03808b167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617835560028054918b169190921617905561109f9087611736565b506110ca7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611736565b506110f57f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e488611736565b506111207f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a87611736565b5061114b7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a88611736565b5083156111ad5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546111f181611634565b6109108383611805565b6112036115b3565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461122d81611634565b61123561163e565b6001600160a01b03831660009081526001602052604090205460ff16611287576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61129b6001600160a01b038416858461169c565b826001600160a01b0316846001600160a01b03167fd4dabfe72081670cc78f2ebda8e2eddaf3feebde6288dcb8fe673b3dc201b5a4846040516112e091815260200190565b60405180910390a35061096260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b61131a6115b3565b61132261163e565b60025474010000000000000000000000000000000000000000900460ff16611376576040517f73cba66300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03841660009081526001602052604090205460ff166113c8576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015611428573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144c919061285d565b90506114636001600160a01b038616333087611c01565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038616907f1dafa057cc5c3bccb5ad974129a2bccd3c74002d9dfd7062404ba9523b18d6ae9089908990859085906370a0823190602401602060405180830381865afa1580156114ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150e919061285d565b6115189190612876565b878760405161152b9594939291906128b0565b60405180910390a250610d4760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b600061156881611634565b506002805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0161162e576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6109998133611c3a565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff161561169a576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040516001600160a01b0383811660248301526044820183905261096291859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611cc7565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166117fb576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556117b13390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061071d565b600091505061071d565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156117fb576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061071d565b6118b3611d43565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806119b657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166119aa7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b1561169a576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006109b781611634565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611a70575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611a6d9181019061285d565b60015b611ab6576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611b12576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611aad565b6109628383611d9e565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461169a576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b8661163e565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258336118ff565b61169a611df4565b611be9611df4565b61169a611e5b565b611bf9611df4565b61169a611e63565b6040516001600160a01b0384811660248301528381166044830152606482018390526109109186918216906323b872dd906084016116c9565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166109b7576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611aad565b6000611cdc6001600160a01b03841683611e96565b90508051600014158015611d01575080806020019051810190611cff91906128e9565b155b15610962576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401611aad565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1661169a576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611da782611eab565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611dec576109628282611f53565b6109b7611fc9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661169a576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611710611df4565b611e6b611df4565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff19169055565b6060611ea483836000612001565b9392505050565b806001600160a01b03163b600003611efa576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611aad565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611f709190612906565b600060405180830381855af49150503d8060008114611fab576040519150601f19603f3d011682016040523d82523d6000602084013e611fb0565b606091505b5091509150611fc08583836120b7565b95945050505050565b341561169a576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608147101561203f576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401611aad565b600080856001600160a01b0316848660405161205b9190612906565b60006040518083038185875af1925050503d8060008114612098576040519150601f19603f3d011682016040523d82523d6000602084013e61209d565b606091505b50915091506120ad8683836120b7565b9695505050505050565b6060826120cc576120c78261212c565b611ea4565b81511580156120e357506001600160a01b0384163b155b15612125576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611aad565b5080611ea4565b80511561213c5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561218057600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611ea457600080fd5b6001600160a01b038116811461099957600080fd5b60008083601f8401126121d757600080fd5b50813567ffffffffffffffff8111156121ef57600080fd5b60208301915083602082850101111561220757600080fd5b9250929050565b60008060008060006080868803121561222657600080fd5b8535612231816121b0565b94506020860135612241816121b0565b935060408601359250606086013567ffffffffffffffff81111561226457600080fd5b612270888289016121c5565b969995985093965092949392505050565b60006020828403121561229357600080fd5b5035919050565b600080604083850312156122ad57600080fd5b8235915060208301356122bf816121b0565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561230c57600080fd5b8235612317816121b0565b9150602083013567ffffffffffffffff81111561233357600080fd5b8301601f8101851361234457600080fd5b803567ffffffffffffffff81111561235e5761235e6122ca565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156123ca576123ca6122ca565b6040528181528282016020018710156123e257600080fd5b816020840160208301376000602083830101528093505050509250929050565b60006020828403121561241457600080fd5b8135611ea4816121b0565b60008060008060008060a0878903121561243857600080fd5b8635612443816121b0565b95506020870135612453816121b0565b945060408701359350606087013567ffffffffffffffff81111561247657600080fd5b61248289828a016121c5565b909450925050608087013567ffffffffffffffff8111156124a257600080fd5b87016080818a0312156124b457600080fd5b809150509295509295509295565b60005b838110156124dd5781810151838201526020016124c5565b50506000910152565b60208152600082518060208401526125058160408501602087016124c2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008060006060848603121561254c57600080fd5b8335612557816121b0565b92506020840135612567816121b0565b91506040840135612577816121b0565b809150509250925092565b60008060006060848603121561259757600080fd5b83356125a2816121b0565b925060208401356125b2816121b0565b929592945050506040919091013590565b600080600080600080608087890312156125dc57600080fd5b863567ffffffffffffffff8111156125f357600080fd5b6125ff89828a016121c5565b9097509550506020870135612613816121b0565b935060408701359250606087013567ffffffffffffffff81111561263657600080fd5b61264289828a016121c5565b979a9699509497509295939492505050565b801515811461099957600080fd5b60006020828403121561267457600080fd5b8135611ea481612654565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015260806060820152600061270060808301848661267f565b979650505050505050565b838152604060208201526000611fc060408301848661267f565b60008135612732816121b0565b6001600160a01b03168352602082013561274b816121b0565b6001600160a01b03166020840152604082810135908401526060820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe101811261279957600080fd5b820160208101903567ffffffffffffffff8111156127b657600080fd5b8036038213156127c557600080fd5b60806060860152611fc060808601828461267f565b6001600160a01b03871681526001600160a01b038616602082015284604082015260a06060820152600061281260a08301858761267f565b82810360808401526128248185612725565b9998505050505050505050565b84815260606020820152600061284b60608301858761267f565b82810360408401526127008185612725565b60006020828403121561286f57600080fd5b5051919050565b8181038181111561071d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6060815260006128c460608301878961267f565b85602084015282810360408401526128dd81858761267f565b98975050505050505050565b6000602082840312156128fb57600080fd5b8151611ea481612654565b600082516129188184602087016124c2565b919091019291505056fea2646970667358221220fbb55424e7ee194b89ec113d95e0692cfe9170bbcc6967609a29f30f15ae2be764736f6c634300081a0033"; + "0x60a060405230608052348015601357600080fd5b5060805161295861003d60003960008181611928015281816119510152611b2701526129586000f3fe6080604052600436106101c25760003560e01c806385f438c1116100f7578063ad3cb1cc11610095578063d9caed1211610064578063d9caed12146105f6578063e609055e14610616578063e63ab1e914610636578063eab103df1461066a57600080fd5b8063ad3cb1cc14610530578063c0c53b8b14610586578063d547741f146105a6578063d936547e146105c657600080fd5b806399a3c356116100d157806399a3c356146104bb5780639a590427146104db5780639b19251a146104fb578063a217fddf1461051b57600080fd5b806385f438c11461040257806391d1485414610436578063950837aa1461049b57600080fd5b80633f4ba83a11610164578063570618e11161013e578063570618e1146103625780635b112591146103965780635c975abb146103b65780638456cb59146103ed57600080fd5b80633f4ba83a146103255780634f1ef2861461033a57806352d1902d1461034d57600080fd5b8063248a9ca3116101a0578063248a9ca314610256578063252f07bf146102b35780632f2ff15d146102e557806336568abe1461030557600080fd5b806301ffc9a7146101c7578063116191b6146101fc57806321fc65f214610234575b600080fd5b3480156101d357600080fd5b506101e76101e236600461216e565b61068a565b60405190151581526020015b60405180910390f35b34801561020857600080fd5b5060005461021c906001600160a01b031681565b6040516001600160a01b0390911681526020016101f3565b34801561024057600080fd5b5061025461024f36600461220e565b610723565b005b34801561026257600080fd5b506102a5610271366004612281565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101f3565b3480156102bf57600080fd5b506002546101e79074010000000000000000000000000000000000000000900460ff1681565b3480156102f157600080fd5b5061025461030036600461229a565b6108cc565b34801561031157600080fd5b5061025461032036600461229a565b610916565b34801561033157600080fd5b50610254610967565b6102546103483660046122f9565b61099c565b34801561035957600080fd5b506102a56109bb565b34801561036e57600080fd5b506102a57f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a81565b3480156103a257600080fd5b5060025461021c906001600160a01b031681565b3480156103c257600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101e7565b3480156103f957600080fd5b506102546109ea565b34801561040e57600080fd5b506102a57f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b34801561044257600080fd5b506101e761045136600461229a565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156104a757600080fd5b506102546104b6366004612402565b610a1c565b3480156104c757600080fd5b506102546104d636600461241f565b610ba1565b3480156104e757600080fd5b506102546104f6366004612402565b610d4f565b34801561050757600080fd5b50610254610516366004612402565b610e03565b34801561052757600080fd5b506102a5600081565b34801561053c57600080fd5b506105796040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101f391906124e6565b34801561059257600080fd5b506102546105a1366004612537565b610ebd565b3480156105b257600080fd5b506102546105c136600461229a565b6111b7565b3480156105d257600080fd5b506101e76105e1366004612402565b60016020526000908152604090205460ff1681565b34801561060257600080fd5b50610254610611366004612582565b6111fb565b34801561062257600080fd5b506102546106313660046125c3565b611312565b34801561064257600080fd5b506102a57f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b34801561067657600080fd5b50610254610685366004612662565b61155d565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061071d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61072b6115b3565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461075581611634565b61075d61163e565b6001600160a01b03851660009081526001602052604090205460ff166107af576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546107c9906001600160a01b0387811691168661169c565b6000546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690635131ab599061081a9088908a908990899089906004016126c8565b600060405180830381600087803b15801561083457600080fd5b505af1158015610848573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167f6478cbb6e28c0823c691dfd74c01c985634faddd4c401b990fe4ec26277ea8d58686866040516108939392919061270b565b60405180910390a3506108c560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461090681611634565b6109108383611736565b50505050565b6001600160a01b0381163314610958576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109628282611805565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61099181611634565b6109996118ab565b50565b6109a461191d565b6109ad826119ed565b6109b782826119f8565b5050565b60006109c5611b1c565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a1481611634565b610999611b7e565b6000610a2781611634565b6001600160a01b038216610a67576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254610a9e907f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4906001600160a01b0316611805565b50600254610ad6907f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a906001600160a01b0316611805565b50610b017f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483611736565b50610b2c7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a83611736565b50600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0384169081179091556040805182815260208101929092527f4d3470c839d3c4dd664eec934b920c12fe0966e3185103dd40149496815df2b6910160405180910390a15050565b610ba96115b3565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610bd381611634565b610bdb61163e565b6001600160a01b03861660009081526001602052604090205460ff16610c2d576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610c47906001600160a01b0388811691168761169c565b6000546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063aa0c0fc190610c9a9089908b908a908a908a908a906004016127da565b600060405180830381600087803b158015610cb457600080fd5b505af1158015610cc8573d6000803e3d6000fd5b50505050856001600160a01b0316876001600160a01b03167f7b53ec10a80164e60591c43d9c222e9354886981b880a3fba19c9ceb77fb972187878787604051610d159493929190612831565b60405180910390a350610d4760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a610d7981611634565b6001600160a01b038216610db9576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216600081815260016020526040808220805460ff19169055517f51085ddf9ebdded84b76e829eb58c4078e4b5bdf97d9a94723f336039da467919190a25050565b7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a610e2d81611634565b6001600160a01b038216610e6d576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166000818152600160208190526040808320805460ff1916909217909155517faab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a549190a25050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f085750825b905060008267ffffffffffffffff166001148015610f255750303b155b905081158015610f33575080155b15610f6a576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fcb5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0388161580610fe857506001600160a01b038716155b80610ffa57506001600160a01b038616155b15611031576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611039611bd9565b611041611be1565b611049611bd9565b611051611bf1565b600080546001600160a01b03808b167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617835560028054918b169190921617905561109f9087611736565b506110ca7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611736565b506110f57f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e488611736565b506111207f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a87611736565b5061114b7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a88611736565b5083156111ad5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546111f181611634565b6109108383611805565b6112036115b3565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461122d81611634565b61123561163e565b6001600160a01b03831660009081526001602052604090205460ff16611287576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61129b6001600160a01b038416858461169c565b826001600160a01b0316846001600160a01b03167fd4dabfe72081670cc78f2ebda8e2eddaf3feebde6288dcb8fe673b3dc201b5a4846040516112e091815260200190565b60405180910390a35061096260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b61131a6115b3565b61132261163e565b60025474010000000000000000000000000000000000000000900460ff16611376576040517f73cba66300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03841660009081526001602052604090205460ff166113c8576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015611428573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144c919061285d565b90506114636001600160a01b038616333087611c01565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038616907f1dafa057cc5c3bccb5ad974129a2bccd3c74002d9dfd7062404ba9523b18d6ae9089908990859085906370a0823190602401602060405180830381865afa1580156114ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150e919061285d565b6115189190612876565b878760405161152b9594939291906128b0565b60405180910390a250610d4760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b600061156881611634565b506002805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0161162e576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6109998133611c3a565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff161561169a576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040516001600160a01b0383811660248301526044820183905261096291859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611cc7565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166117fb576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556117b13390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061071d565b600091505061071d565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156117fb576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061071d565b6118b3611d43565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806119b657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166119aa7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b1561169a576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006109b781611634565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611a70575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611a6d9181019061285d565b60015b611ab6576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611b12576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611aad565b6109628383611d9e565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461169a576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b8661163e565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258336118ff565b61169a611df4565b611be9611df4565b61169a611e5b565b611bf9611df4565b61169a611e63565b6040516001600160a01b0384811660248301528381166044830152606482018390526109109186918216906323b872dd906084016116c9565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166109b7576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611aad565b6000611cdc6001600160a01b03841683611e96565b90508051600014158015611d01575080806020019051810190611cff91906128e9565b155b15610962576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401611aad565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1661169a576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611da782611eab565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611dec576109628282611f53565b6109b7611fc9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661169a576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611710611df4565b611e6b611df4565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff19169055565b6060611ea483836000612001565b9392505050565b806001600160a01b03163b600003611efa576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611aad565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611f709190612906565b600060405180830381855af49150503d8060008114611fab576040519150601f19603f3d011682016040523d82523d6000602084013e611fb0565b606091505b5091509150611fc08583836120b7565b95945050505050565b341561169a576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608147101561203f576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401611aad565b600080856001600160a01b0316848660405161205b9190612906565b60006040518083038185875af1925050503d8060008114612098576040519150601f19603f3d011682016040523d82523d6000602084013e61209d565b606091505b50915091506120ad8683836120b7565b9695505050505050565b6060826120cc576120c78261212c565b611ea4565b81511580156120e357506001600160a01b0384163b155b15612125576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611aad565b5080611ea4565b80511561213c5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561218057600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611ea457600080fd5b6001600160a01b038116811461099957600080fd5b60008083601f8401126121d757600080fd5b50813567ffffffffffffffff8111156121ef57600080fd5b60208301915083602082850101111561220757600080fd5b9250929050565b60008060008060006080868803121561222657600080fd5b8535612231816121b0565b94506020860135612241816121b0565b935060408601359250606086013567ffffffffffffffff81111561226457600080fd5b612270888289016121c5565b969995985093965092949392505050565b60006020828403121561229357600080fd5b5035919050565b600080604083850312156122ad57600080fd5b8235915060208301356122bf816121b0565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561230c57600080fd5b8235612317816121b0565b9150602083013567ffffffffffffffff81111561233357600080fd5b8301601f8101851361234457600080fd5b803567ffffffffffffffff81111561235e5761235e6122ca565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156123ca576123ca6122ca565b6040528181528282016020018710156123e257600080fd5b816020840160208301376000602083830101528093505050509250929050565b60006020828403121561241457600080fd5b8135611ea4816121b0565b60008060008060008060a0878903121561243857600080fd5b8635612443816121b0565b95506020870135612453816121b0565b945060408701359350606087013567ffffffffffffffff81111561247657600080fd5b61248289828a016121c5565b909450925050608087013567ffffffffffffffff8111156124a257600080fd5b87016080818a0312156124b457600080fd5b809150509295509295509295565b60005b838110156124dd5781810151838201526020016124c5565b50506000910152565b60208152600082518060208401526125058160408501602087016124c2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008060006060848603121561254c57600080fd5b8335612557816121b0565b92506020840135612567816121b0565b91506040840135612577816121b0565b809150509250925092565b60008060006060848603121561259757600080fd5b83356125a2816121b0565b925060208401356125b2816121b0565b929592945050506040919091013590565b600080600080600080608087890312156125dc57600080fd5b863567ffffffffffffffff8111156125f357600080fd5b6125ff89828a016121c5565b9097509550506020870135612613816121b0565b935060408701359250606087013567ffffffffffffffff81111561263657600080fd5b61264289828a016121c5565b979a9699509497509295939492505050565b801515811461099957600080fd5b60006020828403121561267457600080fd5b8135611ea481612654565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015260806060820152600061270060808301848661267f565b979650505050505050565b838152604060208201526000611fc060408301848661267f565b60008135612732816121b0565b6001600160a01b03168352602082013561274b816121b0565b6001600160a01b03166020840152604082810135908401526060820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe101811261279957600080fd5b820160208101903567ffffffffffffffff8111156127b657600080fd5b8036038213156127c557600080fd5b60806060860152611fc060808601828461267f565b6001600160a01b03871681526001600160a01b038616602082015284604082015260a06060820152600061281260a08301858761267f565b82810360808401526128248185612725565b9998505050505050505050565b84815260606020820152600061284b60608301858761267f565b82810360408401526127008185612725565b60006020828403121561286f57600080fd5b5051919050565b8181038181111561071d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6060815260006128c460608301878961267f565b85602084015282810360408401526128dd81858761267f565b98975050505050505050565b6000602082840312156128fb57600080fd5b8151611ea481612654565b600082516129188184602087016124c2565b919091019291505056fea26469706673582212209677fb20584c2da2d9821bbbc7955ade138c175013e15534e533f173d0e2389c64736f6c634300081a0033"; type ERC20CustodyUpgradeTestConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/ERC20Custody__factory.ts b/v2/types/factories/ERC20Custody__factory.ts index a01db0df1..8048c93fe 100644 --- a/v2/types/factories/ERC20Custody__factory.ts +++ b/v2/types/factories/ERC20Custody__factory.ts @@ -970,7 +970,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a060405230608052348015601357600080fd5b5060805161299161003d600039600081816119610152818161198a0152611b6001526129916000f3fe6080604052600436106101c25760003560e01c806385f438c1116100f7578063ad3cb1cc11610095578063d9caed1211610064578063d9caed12146105f6578063e609055e14610616578063e63ab1e914610636578063eab103df1461066a57600080fd5b8063ad3cb1cc14610530578063c0c53b8b14610586578063d547741f146105a6578063d936547e146105c657600080fd5b806399a3c356116100d157806399a3c356146104bb5780639a590427146104db5780639b19251a146104fb578063a217fddf1461051b57600080fd5b806385f438c11461040257806391d1485414610436578063950837aa1461049b57600080fd5b80633f4ba83a11610164578063570618e11161013e578063570618e1146103625780635b112591146103965780635c975abb146103b65780638456cb59146103ed57600080fd5b80633f4ba83a146103255780634f1ef2861461033a57806352d1902d1461034d57600080fd5b8063248a9ca3116101a0578063248a9ca314610256578063252f07bf146102b35780632f2ff15d146102e557806336568abe1461030557600080fd5b806301ffc9a7146101c7578063116191b6146101fc57806321fc65f214610234575b600080fd5b3480156101d357600080fd5b506101e76101e23660046121a7565b61068a565b60405190151581526020015b60405180910390f35b34801561020857600080fd5b5060005461021c906001600160a01b031681565b6040516001600160a01b0390911681526020016101f3565b34801561024057600080fd5b5061025461024f366004612247565b610723565b005b34801561026257600080fd5b506102a56102713660046122ba565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101f3565b3480156102bf57600080fd5b506002546101e79074010000000000000000000000000000000000000000900460ff1681565b3480156102f157600080fd5b506102546103003660046122d3565b6108cc565b34801561031157600080fd5b506102546103203660046122d3565b610916565b34801561033157600080fd5b50610254610967565b610254610348366004612332565b61099c565b34801561035957600080fd5b506102a56109bb565b34801561036e57600080fd5b506102a57f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a81565b3480156103a257600080fd5b5060025461021c906001600160a01b031681565b3480156103c257600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101e7565b3480156103f957600080fd5b506102546109ea565b34801561040e57600080fd5b506102a57f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b34801561044257600080fd5b506101e76104513660046122d3565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156104a757600080fd5b506102546104b636600461243b565b610a1c565b3480156104c757600080fd5b506102546104d6366004612458565b610baf565b3480156104e757600080fd5b506102546104f636600461243b565b610d5d565b34801561050757600080fd5b5061025461051636600461243b565b610e11565b34801561052757600080fd5b506102a5600081565b34801561053c57600080fd5b506105796040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101f3919061251f565b34801561059257600080fd5b506102546105a1366004612570565b610ecb565b3480156105b257600080fd5b506102546105c13660046122d3565b6111f0565b3480156105d257600080fd5b506101e76105e136600461243b565b60016020526000908152604090205460ff1681565b34801561060257600080fd5b506102546106113660046125bb565b611234565b34801561062257600080fd5b506102546106313660046125fc565b61134b565b34801561064257600080fd5b506102a57f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b34801561067657600080fd5b5061025461068536600461269b565b611596565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061071d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61072b6115ec565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107558161166d565b61075d611677565b6001600160a01b03851660009081526001602052604090205460ff166107af576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546107c9906001600160a01b038781169116866116d5565b6000546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690635131ab599061081a9088908a90899089908990600401612701565b600060405180830381600087803b15801561083457600080fd5b505af1158015610848573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167f6478cbb6e28c0823c691dfd74c01c985634faddd4c401b990fe4ec26277ea8d586868660405161089393929190612744565b60405180910390a3506108c560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546109068161166d565b610910838361176f565b50505050565b6001600160a01b0381163314610958576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610962828261183e565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6109918161166d565b6109996118e4565b50565b6109a4611956565b6109ad82611a26565b6109b78282611a31565b5050565b60006109c5611b55565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a148161166d565b610999611bb7565b6000610a278161166d565b6001600160a01b038216610a67576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254610a9e907f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4906001600160a01b031661183e565b50600254610ad6907f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a906001600160a01b031661183e565b50610b017f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48361176f565b50610b2c7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a8361176f565b50600254604080516001600160a01b03928316815291841660208301527f4d3470c839d3c4dd664eec934b920c12fe0966e3185103dd40149496815df2b6910160405180910390a150600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b610bb76115ec565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610be18161166d565b610be9611677565b6001600160a01b03861660009081526001602052604090205460ff16610c3b576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610c55906001600160a01b038881169116876116d5565b6000546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063aa0c0fc190610ca89089908b908a908a908a908a90600401612813565b600060405180830381600087803b158015610cc257600080fd5b505af1158015610cd6573d6000803e3d6000fd5b50505050856001600160a01b0316876001600160a01b03167f7b53ec10a80164e60591c43d9c222e9354886981b880a3fba19c9ceb77fb972187878787604051610d23949392919061286a565b60405180910390a350610d5560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a610d878161166d565b6001600160a01b038216610dc7576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216600081815260016020526040808220805460ff19169055517f51085ddf9ebdded84b76e829eb58c4078e4b5bdf97d9a94723f336039da467919190a25050565b7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a610e3b8161166d565b6001600160a01b038216610e7b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166000818152600160208190526040808320805460ff1916909217909155517faab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a549190a25050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f165750825b905060008267ffffffffffffffff166001148015610f335750303b155b905081158015610f41575080155b15610f78576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fd95784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0388161580610ff657506001600160a01b038716155b8061100857506001600160a01b038616155b1561103f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611047611c12565b61104f611c1a565b611057611c12565b61105f611c2a565b600080546001600160a01b03808b167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617835560028054918b16919092161790556110ad908761176f565b506110d87f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8761176f565b506111037f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8861176f565b5061112e7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48861176f565b506111597f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a8761176f565b506111847f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a8861176f565b5083156111e65784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461122a8161166d565b610910838361183e565b61123c6115ec565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46112668161166d565b61126e611677565b6001600160a01b03831660009081526001602052604090205460ff166112c0576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112d46001600160a01b03841685846116d5565b826001600160a01b0316846001600160a01b03167fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb8460405161131991815260200190565b60405180910390a35061096260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6113536115ec565b61135b611677565b60025474010000000000000000000000000000000000000000900460ff166113af576040517f73cba66300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03841660009081526001602052604090205460ff16611401576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015611461573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114859190612896565b905061149c6001600160a01b038616333087611c3a565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038616907f1dafa057cc5c3bccb5ad974129a2bccd3c74002d9dfd7062404ba9523b18d6ae9089908990859085906370a0823190602401602060405180830381865afa158015611523573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115479190612896565b61155191906128af565b87876040516115649594939291906128e9565b60405180910390a250610d5560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60006115a18161166d565b506002805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611667576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6109998133611c73565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16156116d3576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040516001600160a01b0383811660248301526044820183905261096291859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d00565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611834576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556117ea3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061071d565b600091505061071d565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611834576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061071d565b6118ec611d7c565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806119ef57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166119e37f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b156116d3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006109b78161166d565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611aa9575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611aa691810190612896565b60015b611aef576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611b4b576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611ae6565b6109628383611dd7565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146116d3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611bbf611677565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611938565b6116d3611e2d565b611c22611e2d565b6116d3611e94565b611c32611e2d565b6116d3611e9c565b6040516001600160a01b0384811660248301528381166044830152606482018390526109109186918216906323b872dd90608401611702565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166109b7576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611ae6565b6000611d156001600160a01b03841683611ecf565b90508051600014158015611d3a575080806020019051810190611d389190612922565b155b15610962576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401611ae6565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166116d3576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611de082611ee4565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611e25576109628282611f8c565b6109b7612002565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166116d3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611749611e2d565b611ea4611e2d565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff19169055565b6060611edd8383600061203a565b9392505050565b806001600160a01b03163b600003611f33576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611ae6565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611fa9919061293f565b600060405180830381855af49150503d8060008114611fe4576040519150601f19603f3d011682016040523d82523d6000602084013e611fe9565b606091505b5091509150611ff98583836120f0565b95945050505050565b34156116d3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081471015612078576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401611ae6565b600080856001600160a01b03168486604051612094919061293f565b60006040518083038185875af1925050503d80600081146120d1576040519150601f19603f3d011682016040523d82523d6000602084013e6120d6565b606091505b50915091506120e68683836120f0565b9695505050505050565b6060826121055761210082612165565b611edd565b815115801561211c57506001600160a01b0384163b155b1561215e576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611ae6565b5080611edd565b8051156121755780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602082840312156121b957600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611edd57600080fd5b6001600160a01b038116811461099957600080fd5b60008083601f84011261221057600080fd5b50813567ffffffffffffffff81111561222857600080fd5b60208301915083602082850101111561224057600080fd5b9250929050565b60008060008060006080868803121561225f57600080fd5b853561226a816121e9565b9450602086013561227a816121e9565b935060408601359250606086013567ffffffffffffffff81111561229d57600080fd5b6122a9888289016121fe565b969995985093965092949392505050565b6000602082840312156122cc57600080fd5b5035919050565b600080604083850312156122e657600080fd5b8235915060208301356122f8816121e9565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561234557600080fd5b8235612350816121e9565b9150602083013567ffffffffffffffff81111561236c57600080fd5b8301601f8101851361237d57600080fd5b803567ffffffffffffffff81111561239757612397612303565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561240357612403612303565b60405281815282820160200187101561241b57600080fd5b816020840160208301376000602083830101528093505050509250929050565b60006020828403121561244d57600080fd5b8135611edd816121e9565b60008060008060008060a0878903121561247157600080fd5b863561247c816121e9565b9550602087013561248c816121e9565b945060408701359350606087013567ffffffffffffffff8111156124af57600080fd5b6124bb89828a016121fe565b909450925050608087013567ffffffffffffffff8111156124db57600080fd5b87016080818a0312156124ed57600080fd5b809150509295509295509295565b60005b838110156125165781810151838201526020016124fe565b50506000910152565b602081526000825180602084015261253e8160408501602087016124fb565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008060006060848603121561258557600080fd5b8335612590816121e9565b925060208401356125a0816121e9565b915060408401356125b0816121e9565b809150509250925092565b6000806000606084860312156125d057600080fd5b83356125db816121e9565b925060208401356125eb816121e9565b929592945050506040919091013590565b6000806000806000806080878903121561261557600080fd5b863567ffffffffffffffff81111561262c57600080fd5b61263889828a016121fe565b909750955050602087013561264c816121e9565b935060408701359250606087013567ffffffffffffffff81111561266f57600080fd5b61267b89828a016121fe565b979a9699509497509295939492505050565b801515811461099957600080fd5b6000602082840312156126ad57600080fd5b8135611edd8161268d565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b03861681526001600160a01b03851660208201528360408201526080606082015260006127396080830184866126b8565b979650505050505050565b838152604060208201526000611ff96040830184866126b8565b6000813561276b816121e9565b6001600160a01b031683526020820135612784816121e9565b6001600160a01b03166020840152604082810135908401526060820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe10181126127d257600080fd5b820160208101903567ffffffffffffffff8111156127ef57600080fd5b8036038213156127fe57600080fd5b60806060860152611ff96080860182846126b8565b6001600160a01b03871681526001600160a01b038616602082015284604082015260a06060820152600061284b60a0830185876126b8565b828103608084015261285d818561275e565b9998505050505050505050565b8481526060602082015260006128846060830185876126b8565b8281036040840152612739818561275e565b6000602082840312156128a857600080fd5b5051919050565b8181038181111561071d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6060815260006128fd6060830187896126b8565b85602084015282810360408401526129168185876126b8565b98975050505050505050565b60006020828403121561293457600080fd5b8151611edd8161268d565b600082516129518184602087016124fb565b919091019291505056fea26469706673582212207a20ae6f4de44d8614b3f15643f6f6aea60080c2e642775549b18270202b098464736f6c634300081a0033"; + "0x60a060405230608052348015601357600080fd5b5060805161299161003d600039600081816119610152818161198a0152611b6001526129916000f3fe6080604052600436106101c25760003560e01c806385f438c1116100f7578063ad3cb1cc11610095578063d9caed1211610064578063d9caed12146105f6578063e609055e14610616578063e63ab1e914610636578063eab103df1461066a57600080fd5b8063ad3cb1cc14610530578063c0c53b8b14610586578063d547741f146105a6578063d936547e146105c657600080fd5b806399a3c356116100d157806399a3c356146104bb5780639a590427146104db5780639b19251a146104fb578063a217fddf1461051b57600080fd5b806385f438c11461040257806391d1485414610436578063950837aa1461049b57600080fd5b80633f4ba83a11610164578063570618e11161013e578063570618e1146103625780635b112591146103965780635c975abb146103b65780638456cb59146103ed57600080fd5b80633f4ba83a146103255780634f1ef2861461033a57806352d1902d1461034d57600080fd5b8063248a9ca3116101a0578063248a9ca314610256578063252f07bf146102b35780632f2ff15d146102e557806336568abe1461030557600080fd5b806301ffc9a7146101c7578063116191b6146101fc57806321fc65f214610234575b600080fd5b3480156101d357600080fd5b506101e76101e23660046121a7565b61068a565b60405190151581526020015b60405180910390f35b34801561020857600080fd5b5060005461021c906001600160a01b031681565b6040516001600160a01b0390911681526020016101f3565b34801561024057600080fd5b5061025461024f366004612247565b610723565b005b34801561026257600080fd5b506102a56102713660046122ba565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101f3565b3480156102bf57600080fd5b506002546101e79074010000000000000000000000000000000000000000900460ff1681565b3480156102f157600080fd5b506102546103003660046122d3565b6108cc565b34801561031157600080fd5b506102546103203660046122d3565b610916565b34801561033157600080fd5b50610254610967565b610254610348366004612332565b61099c565b34801561035957600080fd5b506102a56109bb565b34801561036e57600080fd5b506102a57f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a81565b3480156103a257600080fd5b5060025461021c906001600160a01b031681565b3480156103c257600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101e7565b3480156103f957600080fd5b506102546109ea565b34801561040e57600080fd5b506102a57f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b34801561044257600080fd5b506101e76104513660046122d3565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156104a757600080fd5b506102546104b636600461243b565b610a1c565b3480156104c757600080fd5b506102546104d6366004612458565b610baf565b3480156104e757600080fd5b506102546104f636600461243b565b610d5d565b34801561050757600080fd5b5061025461051636600461243b565b610e11565b34801561052757600080fd5b506102a5600081565b34801561053c57600080fd5b506105796040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101f3919061251f565b34801561059257600080fd5b506102546105a1366004612570565b610ecb565b3480156105b257600080fd5b506102546105c13660046122d3565b6111f0565b3480156105d257600080fd5b506101e76105e136600461243b565b60016020526000908152604090205460ff1681565b34801561060257600080fd5b506102546106113660046125bb565b611234565b34801561062257600080fd5b506102546106313660046125fc565b61134b565b34801561064257600080fd5b506102a57f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b34801561067657600080fd5b5061025461068536600461269b565b611596565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061071d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61072b6115ec565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46107558161166d565b61075d611677565b6001600160a01b03851660009081526001602052604090205460ff166107af576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546107c9906001600160a01b038781169116866116d5565b6000546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690635131ab599061081a9088908a90899089908990600401612701565b600060405180830381600087803b15801561083457600080fd5b505af1158015610848573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167f6478cbb6e28c0823c691dfd74c01c985634faddd4c401b990fe4ec26277ea8d586868660405161089393929190612744565b60405180910390a3506108c560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546109068161166d565b610910838361176f565b50505050565b6001600160a01b0381163314610958576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610962828261183e565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6109918161166d565b6109996118e4565b50565b6109a4611956565b6109ad82611a26565b6109b78282611a31565b5050565b60006109c5611b55565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a148161166d565b610999611bb7565b6000610a278161166d565b6001600160a01b038216610a67576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254610a9e907f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4906001600160a01b031661183e565b50600254610ad6907f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a906001600160a01b031661183e565b50610b017f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48361176f565b50610b2c7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a8361176f565b50600254604080516001600160a01b03928316815291841660208301527f4d3470c839d3c4dd664eec934b920c12fe0966e3185103dd40149496815df2b6910160405180910390a150600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b610bb76115ec565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610be18161166d565b610be9611677565b6001600160a01b03861660009081526001602052604090205460ff16610c3b576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610c55906001600160a01b038881169116876116d5565b6000546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063aa0c0fc190610ca89089908b908a908a908a908a90600401612813565b600060405180830381600087803b158015610cc257600080fd5b505af1158015610cd6573d6000803e3d6000fd5b50505050856001600160a01b0316876001600160a01b03167f7b53ec10a80164e60591c43d9c222e9354886981b880a3fba19c9ceb77fb972187878787604051610d23949392919061286a565b60405180910390a350610d5560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a610d878161166d565b6001600160a01b038216610dc7576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216600081815260016020526040808220805460ff19169055517f51085ddf9ebdded84b76e829eb58c4078e4b5bdf97d9a94723f336039da467919190a25050565b7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a610e3b8161166d565b6001600160a01b038216610e7b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166000818152600160208190526040808320805460ff1916909217909155517faab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a549190a25050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f165750825b905060008267ffffffffffffffff166001148015610f335750303b155b905081158015610f41575080155b15610f78576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fd95784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0388161580610ff657506001600160a01b038716155b8061100857506001600160a01b038616155b1561103f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611047611c12565b61104f611c1a565b611057611c12565b61105f611c2a565b600080546001600160a01b03808b167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617835560028054918b16919092161790556110ad908761176f565b506110d87f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8761176f565b506111037f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8861176f565b5061112e7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48861176f565b506111597f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a8761176f565b506111847f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a8861176f565b5083156111e65784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461122a8161166d565b610910838361183e565b61123c6115ec565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46112668161166d565b61126e611677565b6001600160a01b03831660009081526001602052604090205460ff166112c0576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112d46001600160a01b03841685846116d5565b826001600160a01b0316846001600160a01b03167fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb8460405161131991815260200190565b60405180910390a35061096260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6113536115ec565b61135b611677565b60025474010000000000000000000000000000000000000000900460ff166113af576040517f73cba66300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03841660009081526001602052604090205460ff16611401576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015611461573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114859190612896565b905061149c6001600160a01b038616333087611c3a565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038616907f1dafa057cc5c3bccb5ad974129a2bccd3c74002d9dfd7062404ba9523b18d6ae9089908990859085906370a0823190602401602060405180830381865afa158015611523573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115479190612896565b61155191906128af565b87876040516115649594939291906128e9565b60405180910390a250610d5560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60006115a18161166d565b506002805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611667576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6109998133611c73565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16156116d3576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040516001600160a01b0383811660248301526044820183905261096291859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d00565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611834576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556117ea3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061071d565b600091505061071d565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611834576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061071d565b6118ec611d7c565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806119ef57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166119e37f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b156116d3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006109b78161166d565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611aa9575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611aa691810190612896565b60015b611aef576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611b4b576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401611ae6565b6109628383611dd7565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146116d3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611bbf611677565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611938565b6116d3611e2d565b611c22611e2d565b6116d3611e94565b611c32611e2d565b6116d3611e9c565b6040516001600160a01b0384811660248301528381166044830152606482018390526109109186918216906323b872dd90608401611702565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166109b7576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611ae6565b6000611d156001600160a01b03841683611ecf565b90508051600014158015611d3a575080806020019051810190611d389190612922565b155b15610962576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401611ae6565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166116d3576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611de082611ee4565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611e25576109628282611f8c565b6109b7612002565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166116d3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611749611e2d565b611ea4611e2d565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff19169055565b6060611edd8383600061203a565b9392505050565b806001600160a01b03163b600003611f33576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611ae6565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611fa9919061293f565b600060405180830381855af49150503d8060008114611fe4576040519150601f19603f3d011682016040523d82523d6000602084013e611fe9565b606091505b5091509150611ff98583836120f0565b95945050505050565b34156116d3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081471015612078576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401611ae6565b600080856001600160a01b03168486604051612094919061293f565b60006040518083038185875af1925050503d80600081146120d1576040519150601f19603f3d011682016040523d82523d6000602084013e6120d6565b606091505b50915091506120e68683836120f0565b9695505050505050565b6060826121055761210082612165565b611edd565b815115801561211c57506001600160a01b0384163b155b1561215e576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611ae6565b5080611edd565b8051156121755780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602082840312156121b957600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611edd57600080fd5b6001600160a01b038116811461099957600080fd5b60008083601f84011261221057600080fd5b50813567ffffffffffffffff81111561222857600080fd5b60208301915083602082850101111561224057600080fd5b9250929050565b60008060008060006080868803121561225f57600080fd5b853561226a816121e9565b9450602086013561227a816121e9565b935060408601359250606086013567ffffffffffffffff81111561229d57600080fd5b6122a9888289016121fe565b969995985093965092949392505050565b6000602082840312156122cc57600080fd5b5035919050565b600080604083850312156122e657600080fd5b8235915060208301356122f8816121e9565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561234557600080fd5b8235612350816121e9565b9150602083013567ffffffffffffffff81111561236c57600080fd5b8301601f8101851361237d57600080fd5b803567ffffffffffffffff81111561239757612397612303565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561240357612403612303565b60405281815282820160200187101561241b57600080fd5b816020840160208301376000602083830101528093505050509250929050565b60006020828403121561244d57600080fd5b8135611edd816121e9565b60008060008060008060a0878903121561247157600080fd5b863561247c816121e9565b9550602087013561248c816121e9565b945060408701359350606087013567ffffffffffffffff8111156124af57600080fd5b6124bb89828a016121fe565b909450925050608087013567ffffffffffffffff8111156124db57600080fd5b87016080818a0312156124ed57600080fd5b809150509295509295509295565b60005b838110156125165781810151838201526020016124fe565b50506000910152565b602081526000825180602084015261253e8160408501602087016124fb565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008060006060848603121561258557600080fd5b8335612590816121e9565b925060208401356125a0816121e9565b915060408401356125b0816121e9565b809150509250925092565b6000806000606084860312156125d057600080fd5b83356125db816121e9565b925060208401356125eb816121e9565b929592945050506040919091013590565b6000806000806000806080878903121561261557600080fd5b863567ffffffffffffffff81111561262c57600080fd5b61263889828a016121fe565b909750955050602087013561264c816121e9565b935060408701359250606087013567ffffffffffffffff81111561266f57600080fd5b61267b89828a016121fe565b979a9699509497509295939492505050565b801515811461099957600080fd5b6000602082840312156126ad57600080fd5b8135611edd8161268d565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b03861681526001600160a01b03851660208201528360408201526080606082015260006127396080830184866126b8565b979650505050505050565b838152604060208201526000611ff96040830184866126b8565b6000813561276b816121e9565b6001600160a01b031683526020820135612784816121e9565b6001600160a01b03166020840152604082810135908401526060820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe10181126127d257600080fd5b820160208101903567ffffffffffffffff8111156127ef57600080fd5b8036038213156127fe57600080fd5b60806060860152611ff96080860182846126b8565b6001600160a01b03871681526001600160a01b038616602082015284604082015260a06060820152600061284b60a0830185876126b8565b828103608084015261285d818561275e565b9998505050505050505050565b8481526060602082015260006128846060830185876126b8565b8281036040840152612739818561275e565b6000602082840312156128a857600080fd5b5051919050565b8181038181111561071d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6060815260006128fd6060830187896126b8565b85602084015282810360408401526129168185876126b8565b98975050505050505050565b60006020828403121561293457600080fd5b8151611edd8161268d565b600082516129518184602087016124fb565b919091019291505056fea264697066735822122032725bd2b7dce3e2ae6a3b0195af5832fc237f7d832025eeb8bb10b9c42be63964736f6c634300081a0033"; type ERC20CustodyConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/GatewayEVMUpgradeTest__factory.ts b/v2/types/factories/GatewayEVMUpgradeTest__factory.ts index fd1b7a001..2d75df66e 100644 --- a/v2/types/factories/GatewayEVMUpgradeTest__factory.ts +++ b/v2/types/factories/GatewayEVMUpgradeTest__factory.ts @@ -1401,7 +1401,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161386d6100fd600039600081816121ee015281816122170152612685015261386d6000f3fe6080604052600436106101fe5760003560e01c80635c975abb1161011d578063aa0c0fc1116100b0578063cb7ba8e51161007f578063d547741f11610064578063d547741f1461066f578063dda79b751461068f578063e63ab1e9146106af57600080fd5b8063cb7ba8e51461063c578063d09e3b781461064f57600080fd5b8063aa0c0fc114610593578063ad3cb1cc146105b3578063ae7a3a6f146105fc578063c0c53b8b1461061c57600080fd5b80638456cb59116100ec5780638456cb59146104d057806391d14854146104e5578063a217fddf1461054a578063a783c7891461055f57600080fd5b80635c975abb1461043f5780635d62c86014610476578063726ac97c146104aa578063744b9b8b146104bd57600080fd5b806336568abe116101955780635131ab59116101645780635131ab59146103ca57806352d1902d146103ea57806357bec62f146103ff5780635b1125911461041f57600080fd5b806336568abe1461036f57806338e225271461038f5780633f4ba83a146103a25780634f1ef286146103b757600080fd5b80631cff79cd116101d15780631cff79cd1461029a57806321e093b1146102ba578063248a9ca3146102f25780632f2ff15d1461034f57600080fd5b806301ffc9a71461020357806310188aef14610238578063102614b01461025a5780631becceb41461027a575b600080fd5b34801561020f57600080fd5b5061022361021e366004612df1565b6106e3565b60405190151581526020015b60405180910390f35b34801561024457600080fd5b50610258610253366004612e4f565b61077c565b005b34801561026657600080fd5b50610258610275366004612e82565b610857565b34801561028657600080fd5b50610258610295366004612f33565b610951565b6102ad6102a8366004612f9a565b6109cf565b60405161022f919061303d565b3480156102c657600080fd5b506003546102da906001600160a01b031681565b6040516001600160a01b03909116815260200161022f565b3480156102fe57600080fd5b5061034161030d366004613050565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b60405190815260200161022f565b34801561035b57600080fd5b5061025861036a366004613069565b610a87565b34801561037b57600080fd5b5061025861038a366004613069565b610acb565b6102ad61039d366004613095565b610b1c565b3480156103ae57600080fd5b50610258610c08565b6102586103c5366004613186565b610c3d565b3480156103d657600080fd5b506102586103e5366004613217565b610c5c565b3480156103f657600080fd5b50610341610f5c565b34801561040b57600080fd5b506002546102da906001600160a01b031681565b34801561042b57600080fd5b506001546102da906001600160a01b031681565b34801561044b57600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610223565b34801561048257600080fd5b506103417f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b6102586104b8366004613286565b610f8b565b6102586104cb366004612f33565b611103565b3480156104dc57600080fd5b5061025861127f565b3480156104f157600080fd5b50610223610500366004613069565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561055657600080fd5b50610341600081565b34801561056b57600080fd5b506103417f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561059f57600080fd5b506102586105ae3660046132e6565b6112b1565b3480156105bf57600080fd5b506102ad6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b34801561060857600080fd5b50610258610617366004612e4f565b61145a565b34801561062857600080fd5b5061025861063736600461337e565b611535565b61025861064a3660046133c1565b6117fc565b34801561065b57600080fd5b5061025861066a366004613434565b6119e4565b34801561067b57600080fd5b5061025861068a366004613069565b611adc565b34801561069b57600080fd5b506000546102da906001600160a01b031681565b3480156106bb57600080fd5b506103417f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061077657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600061078781611b20565b6001600160a01b0382166107ae5760405163d92e233d60e01b815260040160405180910390fd5b6002546001600160a01b0316156107f1576040517f0c8dc01600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61081b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611b2a565b5050600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61085f611c17565b610867611c75565b826000036108a1576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166108c85760405163d92e233d60e01b815260040160405180910390fd5b6108d3338385611cf6565b836001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c85858560405161091a939291906135d9565b60405180910390a361094b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050565b610959611c17565b610961611c75565b6001600160a01b0384166109885760405163d92e233d60e01b815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167fd34634f30f94a646fdf4ce7078f38fc5fa0d3f0b193658facea4e3e43330d97485858560405161091a9392919061360f565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb6109fb81611b20565b610a03611c17565b6001600160a01b038516610a2a5760405163d92e233d60e01b815260040160405180910390fd5b6000610a37868686611f59565b9050856001600160a01b03167f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e8546348787604051610a7693929190613635565b60405180910390a295945050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610ac181611b20565b61094b8383611b2a565b6001600160a01b0381163314610b0d576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b17828261200c565b505050565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610b4881611b20565b610b50611c17565b610b58611c75565b6001600160a01b038516610b7f5760405163d92e233d60e01b815260040160405180910390fd5b6060610b8d878787876120d0565b9050856001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f348787604051610bcc93929190613635565b60405180910390a29150610bff60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50949350505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610c3281611b20565b610c3a612153565b50565b610c456121e3565b610c4e826122b3565b610c5882826122be565b5050565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9610c8681611b20565b610c8e611c17565b610c96611c75565b83600003610cd0576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038516610cf75760405163d92e233d60e01b815260040160405180910390fd5b610d0186866123c4565b610d37576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905287169063095ea7b3906044016020604051808303816000875af1158015610d9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc3919061364f565b610df9576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e04858484611f59565b50610e0f86866123c4565b610e45576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610ea5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec9919061366c565b90508015610edb57610edb8782612454565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610f2293929190613635565b60405180910390a350610f5460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b6000610f6661267a565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610f93611c17565b610f9b611c75565b34600003610fd5576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216610ffc5760405163d92e233d60e01b815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114611049576040519150601f19603f3d011682016040523d82523d6000602084013e61104e565b606091505b5050905080611089576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c346000866040516110d1939291906135d9565b60405180910390a350610c5860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b61110b611c17565b611113611c75565b3460000361114d576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166111745760405163d92e233d60e01b815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146111c1576040519150601f19603f3d011682016040523d82523d6000602084013e6111c6565b606091505b5050905080611201576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c34600088888860405161124d959493929190613685565b60405180910390a35061094b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6112a981611b20565b610c3a6126dc565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b96112db81611b20565b6112e3611c17565b6112eb611c75565b84600003611325576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03861661134c5760405163d92e233d60e01b815260040160405180910390fd5b6113606001600160a01b0388168787612755565b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063c9028a36906113a5908590600401613728565b600060405180830381600087803b1580156113bf57600080fd5b505af11580156113d3573d6000803e3d6000fd5b50505050866001600160a01b0316866001600160a01b03167fde7603a6ed5d07c9f43597ccfe9043d15b66d3284f0de321f5cdf56329e6e03587878787604051611420949392919061373b565b60405180910390a361145160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050505050565b600061146581611b20565b6001600160a01b03821661148c5760405163d92e233d60e01b815260040160405180910390fd5b6000546001600160a01b0316156114cf576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114f97f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611b2a565b5050600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156115805750825b905060008267ffffffffffffffff16600114801561159d5750303b155b9050811580156115ab575080155b156115e2576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156116435784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038816158061166057506001600160a01b038716155b1561167e5760405163d92e233d60e01b815260040160405180910390fd5b6116866127c9565b61168e6127d1565b6116966127c9565b61169e6127e1565b6116a9600087611b2a565b506116d47f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611b2a565b506116ff7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a89611b2a565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a1617905561175d7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb89611b2a565b50600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03891617905583156117f25784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb61182681611b20565b61182e611c17565b611836611c75565b6001600160a01b03851661185d5760405163d92e233d60e01b815260040160405180910390fd5b6000856001600160a01b03163460405160006040518083038185875af1925050503d80600081146118aa576040519150601f19603f3d011682016040523d82523d6000602084013e6118af565b606091505b50509050806118ea576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063c9028a369061192f908690600401613728565b600060405180830381600087803b15801561194957600080fd5b505af115801561195d573d6000803e3d6000fd5b5050505060006001600160a01b0316866001600160a01b03167fde7603a6ed5d07c9f43597ccfe9043d15b66d3284f0de321f5cdf56329e6e035348888886040516119ab949392919061373b565b60405180910390a3506119dd60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6119ec611c17565b6119f4611c75565b84600003611a2e576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038616611a555760405163d92e233d60e01b815260040160405180910390fd5b611a60338587611cf6565b856001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c8787878787604051611aab959493929190613685565b60405180910390a3610f5460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154611b1681611b20565b61094b838361200c565b610c3a81336127f1565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611c0d576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611bc33390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610776565b6000915050610776565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611c73576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611cf0576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6003546001600160a01b0390811690831603611e5a57611d216001600160a01b03831684308461287e565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611d8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611db1919061364f565b611de7576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611e4657600080fd5b505af1158015611451573d6000803e3d6000fd5b6000546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301529091169063d936547e90602401602060405180830381865afa158015611ebd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee1919061364f565b611f17576040517fac2175f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610b17906001600160a01b03848116918691168461287e565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6060611f6583836128b7565b600080856001600160a01b0316348686604051611f83929190613772565b60006040518083038185875af1925050503d8060008114611fc0576040519150601f19603f3d011682016040523d82523d6000602084013e611fc5565b606091505b509150915081612001576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611c0d576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610776565b6060836001600160a01b031663676cc054348786866040518563ffffffff1660e01b815260040161210393929190613782565b60006040518083038185885af1158015612121573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261214a91908101906137ad565b95945050505050565b61215b61293c565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061227c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166122707f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611c73576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610c5881611b20565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612318575060408051601f3d908101601f191682019092526123159181019061366c565b60015b61235e576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146123ba576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401612355565b610b178383612997565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015612430573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612005919061364f565b6003546001600160a01b03908116908316036125a3576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af11580156124d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124fa919061364f565b612530576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561258f57600080fd5b505af1158015610f54573d6000803e3d6000fd5b6000546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301529091169063d936547e90602401602060405180830381865afa158015612606573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061262a919061364f565b612660576040517fac2175f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610c58906001600160a01b03848116911683612755565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611c73576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6126e4611c17565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258336121c5565b6040516001600160a01b03838116602483015260448201839052610b1791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506129ed565b611c73612a69565b6127d9612a69565b611c73612ad0565b6127e9612a69565b611c73612ad8565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610c58576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401612355565b6040516001600160a01b03848116602483015283811660448301526064820183905261094b9186918216906323b872dd90608401612782565b60048110610c585781357f98933fac000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000821601610b17576040517fed69977500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611c73576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6129a082612b29565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156129e557610b178282612bd1565b610c58612c3e565b6000612a026001600160a01b03841683612c76565b90508051600014158015612a27575080806020019051810190612a25919061364f565b155b15610b17576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401612355565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611c73576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f33612a69565b612ae0612a69565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b806001600160a01b03163b600003612b78576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401612355565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051612bee919061381b565b600060405180830381855af49150503d8060008114612c29576040519150601f19603f3d011682016040523d82523d6000602084013e612c2e565b606091505b509150915061214a858383612c84565b3415611c73576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061200583836000612cf9565b606082612c9957612c9482612daf565b612005565b8151158015612cb057506001600160a01b0384163b155b15612cf2576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401612355565b5080612005565b606081471015612d37576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401612355565b600080856001600160a01b03168486604051612d53919061381b565b60006040518083038185875af1925050503d8060008114612d90576040519150601f19603f3d011682016040523d82523d6000602084013e612d95565b606091505b5091509150612da5868383612c84565b9695505050505050565b805115612dbf5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215612e0357600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461200557600080fd5b80356001600160a01b0381168114612e4a57600080fd5b919050565b600060208284031215612e6157600080fd5b61200582612e33565b600060a08284031215612e7c57600080fd5b50919050565b60008060008060808587031215612e9857600080fd5b612ea185612e33565b935060208501359250612eb660408601612e33565b9150606085013567ffffffffffffffff811115612ed257600080fd5b612ede87828801612e6a565b91505092959194509250565b60008083601f840112612efc57600080fd5b50813567ffffffffffffffff811115612f1457600080fd5b602083019150836020828501011115612f2c57600080fd5b9250929050565b60008060008060608587031215612f4957600080fd5b612f5285612e33565b9350602085013567ffffffffffffffff811115612f6e57600080fd5b612f7a87828801612eea565b909450925050604085013567ffffffffffffffff811115612ed257600080fd5b600080600060408486031215612faf57600080fd5b612fb884612e33565b9250602084013567ffffffffffffffff811115612fd457600080fd5b612fe086828701612eea565b9497909650939450505050565b60005b83811015613008578181015183820152602001612ff0565b50506000910152565b60008151808452613029816020860160208601612fed565b601f01601f19169290920160200192915050565b6020815260006120056020830184613011565b60006020828403121561306257600080fd5b5035919050565b6000806040838503121561307c57600080fd5b8235915061308c60208401612e33565b90509250929050565b60008060008084860360608112156130ac57600080fd5b60208112156130ba57600080fd5b508493506130ca60208601612e33565b9250604085013567ffffffffffffffff8111156130e657600080fd5b6130f287828801612eea565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613156576131566130fe565b604052919050565b600067ffffffffffffffff821115613178576131786130fe565b50601f01601f191660200190565b6000806040838503121561319957600080fd5b6131a283612e33565b9150602083013567ffffffffffffffff8111156131be57600080fd5b8301601f810185136131cf57600080fd5b80356131e26131dd8261315e565b61312d565b8181528660208385010111156131f757600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008060008060006080868803121561322f57600080fd5b61323886612e33565b945061324660208701612e33565b935060408601359250606086013567ffffffffffffffff81111561326957600080fd5b61327588828901612eea565b969995985093965092949392505050565b6000806040838503121561329957600080fd5b6132a283612e33565b9150602083013567ffffffffffffffff8111156132be57600080fd5b6132ca85828601612e6a565b9150509250929050565b600060808284031215612e7c57600080fd5b60008060008060008060a087890312156132ff57600080fd5b61330887612e33565b955061331660208801612e33565b945060408701359350606087013567ffffffffffffffff81111561333957600080fd5b61334589828a01612eea565b909450925050608087013567ffffffffffffffff81111561336557600080fd5b61337189828a016132d4565b9150509295509295509295565b60008060006060848603121561339357600080fd5b61339c84612e33565b92506133aa60208501612e33565b91506133b860408501612e33565b90509250925092565b600080600080606085870312156133d757600080fd5b6133e085612e33565b9350602085013567ffffffffffffffff8111156133fc57600080fd5b61340887828801612eea565b909450925050604085013567ffffffffffffffff81111561342857600080fd5b612ede878288016132d4565b60008060008060008060a0878903121561344d57600080fd5b61345687612e33565b95506020870135945061346b60408801612e33565b9350606087013567ffffffffffffffff81111561348757600080fd5b61349389828a01612eea565b909450925050608087013567ffffffffffffffff8111156134b357600080fd5b61337189828a01612e6a565b8015158114610c3a57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261350257600080fd5b830160208101925035905067ffffffffffffffff81111561352257600080fd5b803603821315612f2c57600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6001600160a01b0361356d82612e33565b16825260006020820135613580816134bf565b151560208401526001600160a01b0361359b60408401612e33565b1660408401526135ae60608301836134cd565b60a060608601526135c360a086018284613531565b6080948501359590940194909452509092915050565b8381526001600160a01b0383166020820152608060408201526000608082015260a06060820152600061214a60a083018461355c565b604081526000613623604083018587613531565b8281036020840152612da5818561355c565b83815260406020820152600061214a604083018486613531565b60006020828403121561366157600080fd5b8151612005816134bf565b60006020828403121561367e57600080fd5b5051919050565b8581526001600160a01b03851660208201526080604082015260006136ae608083018587613531565b82810360608401526136c0818561355c565b98975050505050505050565b6001600160a01b036136dd82612e33565b1682526001600160a01b036136f460208301612e33565b16602083015260408181013590830152600061371360608301836134cd565b6080606086015261214a608086018284613531565b60208152600061200560208301846136cc565b848152606060208201526000613755606083018587613531565b828103604084015261376781856136cc565b979650505050505050565b8183823760009101908152919050565b6001600160a01b0361379385612e33565b16815260406020820152600061214a604083018486613531565b6000602082840312156137bf57600080fd5b815167ffffffffffffffff8111156137d657600080fd5b8201601f810184136137e757600080fd5b80516137f56131dd8261315e565b81815285602083850101111561380a57600080fd5b61214a826020830160208601612fed565b6000825161382d818460208701612fed565b919091019291505056fea264697066735822122022d40b9e785f46c5c32d3f24d5e9bbe74f9a765997a8161aeac2bbb027d5d21b64736f6c634300081a0033"; + "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161386d6100fd600039600081816121ee015281816122170152612685015261386d6000f3fe6080604052600436106101fe5760003560e01c80635c975abb1161011d578063aa0c0fc1116100b0578063cb7ba8e51161007f578063d547741f11610064578063d547741f1461066f578063dda79b751461068f578063e63ab1e9146106af57600080fd5b8063cb7ba8e51461063c578063d09e3b781461064f57600080fd5b8063aa0c0fc114610593578063ad3cb1cc146105b3578063ae7a3a6f146105fc578063c0c53b8b1461061c57600080fd5b80638456cb59116100ec5780638456cb59146104d057806391d14854146104e5578063a217fddf1461054a578063a783c7891461055f57600080fd5b80635c975abb1461043f5780635d62c86014610476578063726ac97c146104aa578063744b9b8b146104bd57600080fd5b806336568abe116101955780635131ab59116101645780635131ab59146103ca57806352d1902d146103ea57806357bec62f146103ff5780635b1125911461041f57600080fd5b806336568abe1461036f57806338e225271461038f5780633f4ba83a146103a25780634f1ef286146103b757600080fd5b80631cff79cd116101d15780631cff79cd1461029a57806321e093b1146102ba578063248a9ca3146102f25780632f2ff15d1461034f57600080fd5b806301ffc9a71461020357806310188aef14610238578063102614b01461025a5780631becceb41461027a575b600080fd5b34801561020f57600080fd5b5061022361021e366004612df1565b6106e3565b60405190151581526020015b60405180910390f35b34801561024457600080fd5b50610258610253366004612e4f565b61077c565b005b34801561026657600080fd5b50610258610275366004612e82565b610857565b34801561028657600080fd5b50610258610295366004612f33565b610951565b6102ad6102a8366004612f9a565b6109cf565b60405161022f919061303d565b3480156102c657600080fd5b506003546102da906001600160a01b031681565b6040516001600160a01b03909116815260200161022f565b3480156102fe57600080fd5b5061034161030d366004613050565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b60405190815260200161022f565b34801561035b57600080fd5b5061025861036a366004613069565b610a87565b34801561037b57600080fd5b5061025861038a366004613069565b610acb565b6102ad61039d366004613095565b610b1c565b3480156103ae57600080fd5b50610258610c08565b6102586103c5366004613186565b610c3d565b3480156103d657600080fd5b506102586103e5366004613217565b610c5c565b3480156103f657600080fd5b50610341610f5c565b34801561040b57600080fd5b506002546102da906001600160a01b031681565b34801561042b57600080fd5b506001546102da906001600160a01b031681565b34801561044b57600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610223565b34801561048257600080fd5b506103417f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b6102586104b8366004613286565b610f8b565b6102586104cb366004612f33565b611103565b3480156104dc57600080fd5b5061025861127f565b3480156104f157600080fd5b50610223610500366004613069565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561055657600080fd5b50610341600081565b34801561056b57600080fd5b506103417f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561059f57600080fd5b506102586105ae3660046132e6565b6112b1565b3480156105bf57600080fd5b506102ad6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b34801561060857600080fd5b50610258610617366004612e4f565b61145a565b34801561062857600080fd5b5061025861063736600461337e565b611535565b61025861064a3660046133c1565b6117fc565b34801561065b57600080fd5b5061025861066a366004613434565b6119e4565b34801561067b57600080fd5b5061025861068a366004613069565b611adc565b34801561069b57600080fd5b506000546102da906001600160a01b031681565b3480156106bb57600080fd5b506103417f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061077657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600061078781611b20565b6001600160a01b0382166107ae5760405163d92e233d60e01b815260040160405180910390fd5b6002546001600160a01b0316156107f1576040517f0c8dc01600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61081b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611b2a565b5050600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61085f611c17565b610867611c75565b826000036108a1576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166108c85760405163d92e233d60e01b815260040160405180910390fd5b6108d3338385611cf6565b836001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c85858560405161091a939291906135d9565b60405180910390a361094b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050565b610959611c17565b610961611c75565b6001600160a01b0384166109885760405163d92e233d60e01b815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167fd34634f30f94a646fdf4ce7078f38fc5fa0d3f0b193658facea4e3e43330d97485858560405161091a9392919061360f565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb6109fb81611b20565b610a03611c17565b6001600160a01b038516610a2a5760405163d92e233d60e01b815260040160405180910390fd5b6000610a37868686611f59565b9050856001600160a01b03167f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e8546348787604051610a7693929190613635565b60405180910390a295945050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610ac181611b20565b61094b8383611b2a565b6001600160a01b0381163314610b0d576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b17828261200c565b505050565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610b4881611b20565b610b50611c17565b610b58611c75565b6001600160a01b038516610b7f5760405163d92e233d60e01b815260040160405180910390fd5b6060610b8d878787876120d0565b9050856001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f348787604051610bcc93929190613635565b60405180910390a29150610bff60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50949350505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610c3281611b20565b610c3a612153565b50565b610c456121e3565b610c4e826122b3565b610c5882826122be565b5050565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9610c8681611b20565b610c8e611c17565b610c96611c75565b83600003610cd0576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038516610cf75760405163d92e233d60e01b815260040160405180910390fd5b610d0186866123c4565b610d37576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905287169063095ea7b3906044016020604051808303816000875af1158015610d9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc3919061364f565b610df9576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e04858484611f59565b50610e0f86866123c4565b610e45576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610ea5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec9919061366c565b90508015610edb57610edb8782612454565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610f2293929190613635565b60405180910390a350610f5460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b6000610f6661267a565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610f93611c17565b610f9b611c75565b34600003610fd5576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216610ffc5760405163d92e233d60e01b815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114611049576040519150601f19603f3d011682016040523d82523d6000602084013e61104e565b606091505b5050905080611089576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c346000866040516110d1939291906135d9565b60405180910390a350610c5860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b61110b611c17565b611113611c75565b3460000361114d576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166111745760405163d92e233d60e01b815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146111c1576040519150601f19603f3d011682016040523d82523d6000602084013e6111c6565b606091505b5050905080611201576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c34600088888860405161124d959493929190613685565b60405180910390a35061094b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6112a981611b20565b610c3a6126dc565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b96112db81611b20565b6112e3611c17565b6112eb611c75565b84600003611325576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03861661134c5760405163d92e233d60e01b815260040160405180910390fd5b6113606001600160a01b0388168787612755565b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063c9028a36906113a5908590600401613728565b600060405180830381600087803b1580156113bf57600080fd5b505af11580156113d3573d6000803e3d6000fd5b50505050866001600160a01b0316866001600160a01b03167fde7603a6ed5d07c9f43597ccfe9043d15b66d3284f0de321f5cdf56329e6e03587878787604051611420949392919061373b565b60405180910390a361145160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050505050565b600061146581611b20565b6001600160a01b03821661148c5760405163d92e233d60e01b815260040160405180910390fd5b6000546001600160a01b0316156114cf576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114f97f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611b2a565b5050600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156115805750825b905060008267ffffffffffffffff16600114801561159d5750303b155b9050811580156115ab575080155b156115e2576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156116435784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038816158061166057506001600160a01b038716155b1561167e5760405163d92e233d60e01b815260040160405180910390fd5b6116866127c9565b61168e6127d1565b6116966127c9565b61169e6127e1565b6116a9600087611b2a565b506116d47f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611b2a565b506116ff7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a89611b2a565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a1617905561175d7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb89611b2a565b50600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03891617905583156117f25784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb61182681611b20565b61182e611c17565b611836611c75565b6001600160a01b03851661185d5760405163d92e233d60e01b815260040160405180910390fd5b6000856001600160a01b03163460405160006040518083038185875af1925050503d80600081146118aa576040519150601f19603f3d011682016040523d82523d6000602084013e6118af565b606091505b50509050806118ea576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063c9028a369061192f908690600401613728565b600060405180830381600087803b15801561194957600080fd5b505af115801561195d573d6000803e3d6000fd5b5050505060006001600160a01b0316866001600160a01b03167fde7603a6ed5d07c9f43597ccfe9043d15b66d3284f0de321f5cdf56329e6e035348888886040516119ab949392919061373b565b60405180910390a3506119dd60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6119ec611c17565b6119f4611c75565b84600003611a2e576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038616611a555760405163d92e233d60e01b815260040160405180910390fd5b611a60338587611cf6565b856001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c8787878787604051611aab959493929190613685565b60405180910390a3610f5460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154611b1681611b20565b61094b838361200c565b610c3a81336127f1565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611c0d576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611bc33390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610776565b6000915050610776565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611c73576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611cf0576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6003546001600160a01b0390811690831603611e5a57611d216001600160a01b03831684308461287e565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611d8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611db1919061364f565b611de7576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611e4657600080fd5b505af1158015611451573d6000803e3d6000fd5b6000546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301529091169063d936547e90602401602060405180830381865afa158015611ebd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee1919061364f565b611f17576040517fac2175f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610b17906001600160a01b03848116918691168461287e565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6060611f6583836128b7565b600080856001600160a01b0316348686604051611f83929190613772565b60006040518083038185875af1925050503d8060008114611fc0576040519150601f19603f3d011682016040523d82523d6000602084013e611fc5565b606091505b509150915081612001576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611c0d576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610776565b6060836001600160a01b031663676cc054348786866040518563ffffffff1660e01b815260040161210393929190613782565b60006040518083038185885af1158015612121573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261214a91908101906137ad565b95945050505050565b61215b61293c565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061227c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166122707f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611c73576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610c5881611b20565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612318575060408051601f3d908101601f191682019092526123159181019061366c565b60015b61235e576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146123ba576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401612355565b610b178383612997565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015612430573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612005919061364f565b6003546001600160a01b03908116908316036125a3576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af11580156124d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124fa919061364f565b612530576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561258f57600080fd5b505af1158015610f54573d6000803e3d6000fd5b6000546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301529091169063d936547e90602401602060405180830381865afa158015612606573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061262a919061364f565b612660576040517fac2175f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610c58906001600160a01b03848116911683612755565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611c73576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6126e4611c17565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258336121c5565b6040516001600160a01b03838116602483015260448201839052610b1791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506129ed565b611c73612a69565b6127d9612a69565b611c73612ad0565b6127e9612a69565b611c73612ad8565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610c58576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401612355565b6040516001600160a01b03848116602483015283811660448301526064820183905261094b9186918216906323b872dd90608401612782565b60048110610c585781357f98933fac000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000821601610b17576040517fed69977500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611c73576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6129a082612b29565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156129e557610b178282612bd1565b610c58612c3e565b6000612a026001600160a01b03841683612c76565b90508051600014158015612a27575080806020019051810190612a25919061364f565b155b15610b17576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401612355565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611c73576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f33612a69565b612ae0612a69565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b806001600160a01b03163b600003612b78576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401612355565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051612bee919061381b565b600060405180830381855af49150503d8060008114612c29576040519150601f19603f3d011682016040523d82523d6000602084013e612c2e565b606091505b509150915061214a858383612c84565b3415611c73576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061200583836000612cf9565b606082612c9957612c9482612daf565b612005565b8151158015612cb057506001600160a01b0384163b155b15612cf2576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401612355565b5080612005565b606081471015612d37576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401612355565b600080856001600160a01b03168486604051612d53919061381b565b60006040518083038185875af1925050503d8060008114612d90576040519150601f19603f3d011682016040523d82523d6000602084013e612d95565b606091505b5091509150612da5868383612c84565b9695505050505050565b805115612dbf5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215612e0357600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461200557600080fd5b80356001600160a01b0381168114612e4a57600080fd5b919050565b600060208284031215612e6157600080fd5b61200582612e33565b600060a08284031215612e7c57600080fd5b50919050565b60008060008060808587031215612e9857600080fd5b612ea185612e33565b935060208501359250612eb660408601612e33565b9150606085013567ffffffffffffffff811115612ed257600080fd5b612ede87828801612e6a565b91505092959194509250565b60008083601f840112612efc57600080fd5b50813567ffffffffffffffff811115612f1457600080fd5b602083019150836020828501011115612f2c57600080fd5b9250929050565b60008060008060608587031215612f4957600080fd5b612f5285612e33565b9350602085013567ffffffffffffffff811115612f6e57600080fd5b612f7a87828801612eea565b909450925050604085013567ffffffffffffffff811115612ed257600080fd5b600080600060408486031215612faf57600080fd5b612fb884612e33565b9250602084013567ffffffffffffffff811115612fd457600080fd5b612fe086828701612eea565b9497909650939450505050565b60005b83811015613008578181015183820152602001612ff0565b50506000910152565b60008151808452613029816020860160208601612fed565b601f01601f19169290920160200192915050565b6020815260006120056020830184613011565b60006020828403121561306257600080fd5b5035919050565b6000806040838503121561307c57600080fd5b8235915061308c60208401612e33565b90509250929050565b60008060008084860360608112156130ac57600080fd5b60208112156130ba57600080fd5b508493506130ca60208601612e33565b9250604085013567ffffffffffffffff8111156130e657600080fd5b6130f287828801612eea565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613156576131566130fe565b604052919050565b600067ffffffffffffffff821115613178576131786130fe565b50601f01601f191660200190565b6000806040838503121561319957600080fd5b6131a283612e33565b9150602083013567ffffffffffffffff8111156131be57600080fd5b8301601f810185136131cf57600080fd5b80356131e26131dd8261315e565b61312d565b8181528660208385010111156131f757600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008060008060006080868803121561322f57600080fd5b61323886612e33565b945061324660208701612e33565b935060408601359250606086013567ffffffffffffffff81111561326957600080fd5b61327588828901612eea565b969995985093965092949392505050565b6000806040838503121561329957600080fd5b6132a283612e33565b9150602083013567ffffffffffffffff8111156132be57600080fd5b6132ca85828601612e6a565b9150509250929050565b600060808284031215612e7c57600080fd5b60008060008060008060a087890312156132ff57600080fd5b61330887612e33565b955061331660208801612e33565b945060408701359350606087013567ffffffffffffffff81111561333957600080fd5b61334589828a01612eea565b909450925050608087013567ffffffffffffffff81111561336557600080fd5b61337189828a016132d4565b9150509295509295509295565b60008060006060848603121561339357600080fd5b61339c84612e33565b92506133aa60208501612e33565b91506133b860408501612e33565b90509250925092565b600080600080606085870312156133d757600080fd5b6133e085612e33565b9350602085013567ffffffffffffffff8111156133fc57600080fd5b61340887828801612eea565b909450925050604085013567ffffffffffffffff81111561342857600080fd5b612ede878288016132d4565b60008060008060008060a0878903121561344d57600080fd5b61345687612e33565b95506020870135945061346b60408801612e33565b9350606087013567ffffffffffffffff81111561348757600080fd5b61349389828a01612eea565b909450925050608087013567ffffffffffffffff8111156134b357600080fd5b61337189828a01612e6a565b8015158114610c3a57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261350257600080fd5b830160208101925035905067ffffffffffffffff81111561352257600080fd5b803603821315612f2c57600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6001600160a01b0361356d82612e33565b16825260006020820135613580816134bf565b151560208401526001600160a01b0361359b60408401612e33565b1660408401526135ae60608301836134cd565b60a060608601526135c360a086018284613531565b6080948501359590940194909452509092915050565b8381526001600160a01b0383166020820152608060408201526000608082015260a06060820152600061214a60a083018461355c565b604081526000613623604083018587613531565b8281036020840152612da5818561355c565b83815260406020820152600061214a604083018486613531565b60006020828403121561366157600080fd5b8151612005816134bf565b60006020828403121561367e57600080fd5b5051919050565b8581526001600160a01b03851660208201526080604082015260006136ae608083018587613531565b82810360608401526136c0818561355c565b98975050505050505050565b6001600160a01b036136dd82612e33565b1682526001600160a01b036136f460208301612e33565b16602083015260408181013590830152600061371360608301836134cd565b6080606086015261214a608086018284613531565b60208152600061200560208301846136cc565b848152606060208201526000613755606083018587613531565b828103604084015261376781856136cc565b979650505050505050565b8183823760009101908152919050565b6001600160a01b0361379385612e33565b16815260406020820152600061214a604083018486613531565b6000602082840312156137bf57600080fd5b815167ffffffffffffffff8111156137d657600080fd5b8201601f810184136137e757600080fd5b80516137f56131dd8261315e565b81815285602083850101111561380a57600080fd5b61214a826020830160208601612fed565b6000825161382d818460208701612fed565b919091019291505056fea26469706673582212208b72f5389b712bdb905de4b6561d7eed975fa0feeef1beea3562eb3d8e499dc564736f6c634300081a0033"; type GatewayEVMUpgradeTestConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/GatewayEVM__factory.ts b/v2/types/factories/GatewayEVM__factory.ts index 3fd446148..92e2b57e3 100644 --- a/v2/types/factories/GatewayEVM__factory.ts +++ b/v2/types/factories/GatewayEVM__factory.ts @@ -1404,7 +1404,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051613b7b6100fd600039600081816123e20152818161240b01526128790152613b7b6000f3fe6080604052600436106102345760003560e01c80635d62c86011610138578063aa0c0fc1116100b0578063cb7ba8e51161007f578063d547741f11610064578063d547741f146106db578063dda79b75146106fb578063e63ab1e91461071b57600080fd5b8063cb7ba8e5146106a8578063d09e3b78146106bb57600080fd5b8063aa0c0fc1146105ff578063ad3cb1cc1461061f578063ae7a3a6f14610668578063c0c53b8b1461068857600080fd5b806391d1485411610107578063a217fddf116100ec578063a217fddf146105a0578063a2ba1934146105b5578063a783c789146105cb57600080fd5b806391d148541461051b578063950837aa1461058057600080fd5b80635d62c860146104ac578063726ac97c146104e0578063744b9b8b146104f35780638456cb591461050657600080fd5b806336568abe116101cb5780635131ab591161019a57806357bec62f1161017f57806357bec62f146104355780635b112591146104555780635c975abb1461047557600080fd5b80635131ab591461040057806352d1902d1461042057600080fd5b806336568abe146103a557806338e22527146103c55780633f4ba83a146103d85780634f1ef286146103ed57600080fd5b80631cff79cd116102075780631cff79cd146102d057806321e093b1146102f0578063248a9ca3146103285780632f2ff15d1461038557600080fd5b806301ffc9a71461023957806310188aef1461026e578063102614b0146102905780631becceb4146102b0575b600080fd5b34801561024557600080fd5b50610259610254366004613060565b61074f565b60405190151581526020015b60405180910390f35b34801561027a57600080fd5b5061028e6102893660046130be565b6107e8565b005b34801561029c57600080fd5b5061028e6102ab3660046130f1565b6108c3565b3480156102bc57600080fd5b5061028e6102cb3660046131a2565b610a07565b6102e36102de366004613209565b610ad8565b60405161026591906132ac565b3480156102fc57600080fd5b50600354610310906001600160a01b031681565b6040516001600160a01b039091168152602001610265565b34801561033457600080fd5b506103776103433660046132bf565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610265565b34801561039157600080fd5b5061028e6103a03660046132d8565b610b90565b3480156103b157600080fd5b5061028e6103c03660046132d8565b610bd4565b6102e36103d3366004613304565b610c25565b3480156103e457600080fd5b5061028e610d11565b61028e6103fb3660046133f5565b610d46565b34801561040c57600080fd5b5061028e61041b366004613486565b610d65565b34801561042c57600080fd5b50610377611065565b34801561044157600080fd5b50600254610310906001600160a01b031681565b34801561046157600080fd5b50600154610310906001600160a01b031681565b34801561048157600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610259565b3480156104b857600080fd5b506103777f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b61028e6104ee3660046134f5565b611094565b61028e6105013660046131a2565b611256565b34801561051257600080fd5b5061028e611425565b34801561052757600080fd5b506102596105363660046132d8565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561058c57600080fd5b5061028e61059b3660046130be565b611457565b3480156105ac57600080fd5b50610377600081565b3480156105c157600080fd5b5061037761040081565b3480156105d757600080fd5b506103777f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561060b57600080fd5b5061028e61061a366004613555565b61156e565b34801561062b57600080fd5b506102e36040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b34801561067457600080fd5b5061028e6106833660046130be565b611717565b34801561069457600080fd5b5061028e6106a33660046135ed565b6117f2565b61028e6106b6366004613630565b611ab9565b3480156106c757600080fd5b5061028e6106d63660046136a3565b611ca1565b3480156106e757600080fd5b5061028e6106f63660046132d8565b611dec565b34801561070757600080fd5b50600054610310906001600160a01b031681565b34801561072757600080fd5b506103777f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806107e257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60006107f381611e30565b6001600160a01b03821661081a5760405163d92e233d60e01b815260040160405180910390fd5b6002546001600160a01b03161561085d576040517f0c8dc01600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108877f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611e3a565b5050600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6108cb611f27565b6108d3611f85565b8260000361090d576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166109345760405163d92e233d60e01b815260040160405180910390fd5b610400610944606083018361372e565b9050111561097e576040517f386691aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610989338385612006565b836001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c8585856040516109d0939291906138ad565b60405180910390a3610a0160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050565b610a0f611f27565b610a17611f85565b6001600160a01b038416610a3e5760405163d92e233d60e01b815260040160405180910390fd5b610400610a4e606083018361372e565b610a599150846138e3565b1115610a91576040517f386691aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167fd34634f30f94a646fdf4ce7078f38fc5fa0d3f0b193658facea4e3e43330d9748585856040516109d09392919061391d565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610b0481611e30565b610b0c611f27565b6001600160a01b038516610b335760405163d92e233d60e01b815260040160405180910390fd5b6000610b4086868661214d565b9050856001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f348787604051610b7f93929190613943565b60405180910390a295945050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610bca81611e30565b610a018383611e3a565b6001600160a01b0381163314610c16576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c208282612200565b505050565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610c5181611e30565b610c59611f27565b610c61611f85565b6001600160a01b038516610c885760405163d92e233d60e01b815260040160405180910390fd5b6060610c96878787876122c4565b9050856001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f348787604051610cd593929190613943565b60405180910390a29150610d0860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50949350505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610d3b81611e30565b610d43612347565b50565b610d4e6123d7565b610d57826124a7565b610d6182826124b2565b5050565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9610d8f81611e30565b610d97611f27565b610d9f611f85565b83600003610dd9576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038516610e005760405163d92e233d60e01b815260040160405180910390fd5b610e0a86866125b8565b610e40576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905287169063095ea7b3906044016020604051808303816000875af1158015610ea8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ecc919061395d565b610f02576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f0d85848461214d565b50610f1886866125b8565b610f4e576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610fae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd2919061397a565b90508015610fe457610fe48782612648565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b738287878760405161102b93929190613943565b60405180910390a35061105d60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b600061106f61286e565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b61109c611f27565b6110a4611f85565b346000036110de576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166111055760405163d92e233d60e01b815260040160405180910390fd5b610400611115606083018361372e565b9050111561114f576040517f386691aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d806000811461119c576040519150601f19603f3d011682016040523d82523d6000602084013e6111a1565b606091505b50509050806111dc576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c34600086604051611224939291906138ad565b60405180910390a350610d6160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b61125e611f27565b611266611f85565b346000036112a0576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166112c75760405163d92e233d60e01b815260040160405180910390fd5b6104006112d7606083018361372e565b6112e29150846138e3565b111561131a576040517f386691aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114611367576040519150601f19603f3d011682016040523d82523d6000602084013e61136c565b606091505b50509050806113a7576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c3460008888886040516113f3959493929190613993565b60405180910390a350610a0160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61144f81611e30565b610d436128d0565b600061146281611e30565b6001600160a01b0382166114895760405163d92e233d60e01b815260040160405180910390fd5b6001546114c0907f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb906001600160a01b0316612200565b506114eb7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb83611e3a565b50600154604080516001600160a01b03928316815291841660208301527f3a7b8d6372645f474fe60c115a2ef21421306a3ed4664fa0023c461413c08579910160405180910390a150600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b961159881611e30565b6115a0611f27565b6115a8611f85565b846000036115e2576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0386166116095760405163d92e233d60e01b815260040160405180910390fd5b61161d6001600160a01b0388168787612949565b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063c9028a3690611662908590600401613a36565b600060405180830381600087803b15801561167c57600080fd5b505af1158015611690573d6000803e3d6000fd5b50505050866001600160a01b0316866001600160a01b03167fde7603a6ed5d07c9f43597ccfe9043d15b66d3284f0de321f5cdf56329e6e035878787876040516116dd9493929190613a49565b60405180910390a361170e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050505050565b600061172281611e30565b6001600160a01b0382166117495760405163d92e233d60e01b815260040160405180910390fd5b6000546001600160a01b03161561178c576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117b67f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611e3a565b5050600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff1660008115801561183d5750825b905060008267ffffffffffffffff16600114801561185a5750303b155b905081158015611868575080155b1561189f576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156119005784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038816158061191d57506001600160a01b038716155b1561193b5760405163d92e233d60e01b815260040160405180910390fd5b6119436129bd565b61194b6129c5565b6119536129bd565b61195b6129d5565b611966600087611e3a565b506119917f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611e3a565b506119bc7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a89611e3a565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a16179055611a1a7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb89611e3a565b50600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0389161790558315611aaf5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb611ae381611e30565b611aeb611f27565b611af3611f85565b6001600160a01b038516611b1a5760405163d92e233d60e01b815260040160405180910390fd5b6000856001600160a01b03163460405160006040518083038185875af1925050503d8060008114611b67576040519150601f19603f3d011682016040523d82523d6000602084013e611b6c565b606091505b5050905080611ba7576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063c9028a3690611bec908690600401613a36565b600060405180830381600087803b158015611c0657600080fd5b505af1158015611c1a573d6000803e3d6000fd5b5050505060006001600160a01b0316866001600160a01b03167fde7603a6ed5d07c9f43597ccfe9043d15b66d3284f0de321f5cdf56329e6e03534888888604051611c689493929190613a49565b60405180910390a350611c9a60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b611ca9611f27565b611cb1611f85565b84600003611ceb576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038616611d125760405163d92e233d60e01b815260040160405180910390fd5b610400611d22606083018361372e565b611d2d9150846138e3565b1115611d65576040517f386691aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d70338587612006565b856001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c8787878787604051611dbb959493929190613993565b60405180910390a361105d60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154611e2681611e30565b610a018383612200565b610d4381336129e5565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611f1d576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611ed33390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506107e2565b60009150506107e2565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611f83576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01612000576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6003546001600160a01b039081169083160361204e576040517fe4dd681d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301529091169063d936547e90602401602060405180830381865afa1580156120b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d5919061395d565b61210b576040517fac2175f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610c20906001600160a01b038481169186911684612a72565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60606121598383612aab565b600080856001600160a01b0316348686604051612177929190613a80565b60006040518083038185875af1925050503d80600081146121b4576040519150601f19603f3d011682016040523d82523d6000602084013e6121b9565b606091505b5091509150816121f5576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611f1d576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506107e2565b6060836001600160a01b031663676cc054348786866040518563ffffffff1660e01b81526004016122f793929190613a90565b60006040518083038185885af1158015612315573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261233e9190810190613abb565b95945050505050565b61234f612bab565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061247057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166124647f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611f83576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d6181611e30565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561250c575060408051601f3d908101601f191682019092526125099181019061397a565b60015b612552576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146125ae576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401612549565b610c208383612c06565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015612624573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f9919061395d565b6003546001600160a01b0390811690831603612797576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af11580156126ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ee919061395d565b612724576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561278357600080fd5b505af115801561105d573d6000803e3d6000fd5b6000546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301529091169063d936547e90602401602060405180830381865afa1580156127fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061281e919061395d565b612854576040517fac2175f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610d61906001600160a01b03848116911683612949565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611f83576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6128d8611f27565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258336123b9565b6040516001600160a01b03838116602483015260448201839052610c2091859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612c5c565b611f83612cd8565b6129cd612cd8565b611f83612d3f565b6129dd612cd8565b611f83612d47565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610d61576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401612549565b6040516001600160a01b038481166024830152838116604483015260648201839052610a019186918216906323b872dd90608401612976565b60048110610d615781357f98933fac000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000821601612b30576040517fed69977500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f36fd75ca000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000821601610c20576040517ff3459a9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611f83576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612c0f82612d98565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115612c5457610c208282612e40565b610d61612ead565b6000612c716001600160a01b03841683612ee5565b90508051600014158015612c96575080806020019051810190612c94919061395d565b155b15610c20576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401612549565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611f83576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612127612cd8565b612d4f612cd8565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b806001600160a01b03163b600003612de7576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401612549565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051612e5d9190613b29565b600060405180830381855af49150503d8060008114612e98576040519150601f19603f3d011682016040523d82523d6000602084013e612e9d565b606091505b509150915061233e858383612ef3565b3415611f83576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60606121f983836000612f68565b606082612f0857612f038261301e565b6121f9565b8151158015612f1f57506001600160a01b0384163b155b15612f61576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401612549565b50806121f9565b606081471015612fa6576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401612549565b600080856001600160a01b03168486604051612fc29190613b29565b60006040518083038185875af1925050503d8060008114612fff576040519150601f19603f3d011682016040523d82523d6000602084013e613004565b606091505b5091509150613014868383612ef3565b9695505050505050565b80511561302e5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561307257600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146121f957600080fd5b80356001600160a01b03811681146130b957600080fd5b919050565b6000602082840312156130d057600080fd5b6121f9826130a2565b600060a082840312156130eb57600080fd5b50919050565b6000806000806080858703121561310757600080fd5b613110856130a2565b935060208501359250613125604086016130a2565b9150606085013567ffffffffffffffff81111561314157600080fd5b61314d878288016130d9565b91505092959194509250565b60008083601f84011261316b57600080fd5b50813567ffffffffffffffff81111561318357600080fd5b60208301915083602082850101111561319b57600080fd5b9250929050565b600080600080606085870312156131b857600080fd5b6131c1856130a2565b9350602085013567ffffffffffffffff8111156131dd57600080fd5b6131e987828801613159565b909450925050604085013567ffffffffffffffff81111561314157600080fd5b60008060006040848603121561321e57600080fd5b613227846130a2565b9250602084013567ffffffffffffffff81111561324357600080fd5b61324f86828701613159565b9497909650939450505050565b60005b8381101561327757818101518382015260200161325f565b50506000910152565b6000815180845261329881602086016020860161325c565b601f01601f19169290920160200192915050565b6020815260006121f96020830184613280565b6000602082840312156132d157600080fd5b5035919050565b600080604083850312156132eb57600080fd5b823591506132fb602084016130a2565b90509250929050565b600080600080848603606081121561331b57600080fd5b602081121561332957600080fd5b50849350613339602086016130a2565b9250604085013567ffffffffffffffff81111561335557600080fd5b61336187828801613159565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156133c5576133c561336d565b604052919050565b600067ffffffffffffffff8211156133e7576133e761336d565b50601f01601f191660200190565b6000806040838503121561340857600080fd5b613411836130a2565b9150602083013567ffffffffffffffff81111561342d57600080fd5b8301601f8101851361343e57600080fd5b803561345161344c826133cd565b61339c565b81815286602083850101111561346657600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008060008060006080868803121561349e57600080fd5b6134a7866130a2565b94506134b5602087016130a2565b935060408601359250606086013567ffffffffffffffff8111156134d857600080fd5b6134e488828901613159565b969995985093965092949392505050565b6000806040838503121561350857600080fd5b613511836130a2565b9150602083013567ffffffffffffffff81111561352d57600080fd5b613539858286016130d9565b9150509250929050565b6000608082840312156130eb57600080fd5b60008060008060008060a0878903121561356e57600080fd5b613577876130a2565b9550613585602088016130a2565b945060408701359350606087013567ffffffffffffffff8111156135a857600080fd5b6135b489828a01613159565b909450925050608087013567ffffffffffffffff8111156135d457600080fd5b6135e089828a01613543565b9150509295509295509295565b60008060006060848603121561360257600080fd5b61360b846130a2565b9250613619602085016130a2565b9150613627604085016130a2565b90509250925092565b6000806000806060858703121561364657600080fd5b61364f856130a2565b9350602085013567ffffffffffffffff81111561366b57600080fd5b61367787828801613159565b909450925050604085013567ffffffffffffffff81111561369757600080fd5b61314d87828801613543565b60008060008060008060a087890312156136bc57600080fd5b6136c5876130a2565b9550602087013594506136da604088016130a2565b9350606087013567ffffffffffffffff8111156136f657600080fd5b61370289828a01613159565b909450925050608087013567ffffffffffffffff81111561372257600080fd5b6135e089828a016130d9565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261376357600080fd5b83018035915067ffffffffffffffff82111561377e57600080fd5b60200191503681900382131561319b57600080fd5b8015158114610d4357600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126137d657600080fd5b830160208101925035905067ffffffffffffffff8111156137f657600080fd5b80360382131561319b57600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6001600160a01b03613841826130a2565b1682526000602082013561385481613793565b151560208401526001600160a01b0361386f604084016130a2565b16604084015261388260608301836137a1565b60a0606086015261389760a086018284613805565b6080948501359590940194909452509092915050565b8381526001600160a01b0383166020820152608060408201526000608082015260a06060820152600061233e60a0830184613830565b808201808211156107e2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b604081526000613931604083018587613805565b82810360208401526130148185613830565b83815260406020820152600061233e604083018486613805565b60006020828403121561396f57600080fd5b81516121f981613793565b60006020828403121561398c57600080fd5b5051919050565b8581526001600160a01b03851660208201526080604082015260006139bc608083018587613805565b82810360608401526139ce8185613830565b98975050505050505050565b6001600160a01b036139eb826130a2565b1682526001600160a01b03613a02602083016130a2565b166020830152604081810135908301526000613a2160608301836137a1565b6080606086015261233e608086018284613805565b6020815260006121f960208301846139da565b848152606060208201526000613a63606083018587613805565b8281036040840152613a7581856139da565b979650505050505050565b8183823760009101908152919050565b6001600160a01b03613aa1856130a2565b16815260406020820152600061233e604083018486613805565b600060208284031215613acd57600080fd5b815167ffffffffffffffff811115613ae457600080fd5b8201601f81018413613af557600080fd5b8051613b0361344c826133cd565b818152856020838501011115613b1857600080fd5b61233e82602083016020860161325c565b60008251613b3b81846020870161325c565b919091019291505056fea264697066735822122011e723341eafd6e49af6ad7eff161105cb552538a0be0b5c04955ebefdc2615164736f6c634300081a0033"; + "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051613b7b6100fd600039600081816123e20152818161240b01526128790152613b7b6000f3fe6080604052600436106102345760003560e01c80635d62c86011610138578063aa0c0fc1116100b0578063cb7ba8e51161007f578063d547741f11610064578063d547741f146106db578063dda79b75146106fb578063e63ab1e91461071b57600080fd5b8063cb7ba8e5146106a8578063d09e3b78146106bb57600080fd5b8063aa0c0fc1146105ff578063ad3cb1cc1461061f578063ae7a3a6f14610668578063c0c53b8b1461068857600080fd5b806391d1485411610107578063a217fddf116100ec578063a217fddf146105a0578063a2ba1934146105b5578063a783c789146105cb57600080fd5b806391d148541461051b578063950837aa1461058057600080fd5b80635d62c860146104ac578063726ac97c146104e0578063744b9b8b146104f35780638456cb591461050657600080fd5b806336568abe116101cb5780635131ab591161019a57806357bec62f1161017f57806357bec62f146104355780635b112591146104555780635c975abb1461047557600080fd5b80635131ab591461040057806352d1902d1461042057600080fd5b806336568abe146103a557806338e22527146103c55780633f4ba83a146103d85780634f1ef286146103ed57600080fd5b80631cff79cd116102075780631cff79cd146102d057806321e093b1146102f0578063248a9ca3146103285780632f2ff15d1461038557600080fd5b806301ffc9a71461023957806310188aef1461026e578063102614b0146102905780631becceb4146102b0575b600080fd5b34801561024557600080fd5b50610259610254366004613060565b61074f565b60405190151581526020015b60405180910390f35b34801561027a57600080fd5b5061028e6102893660046130be565b6107e8565b005b34801561029c57600080fd5b5061028e6102ab3660046130f1565b6108c3565b3480156102bc57600080fd5b5061028e6102cb3660046131a2565b610a07565b6102e36102de366004613209565b610ad8565b60405161026591906132ac565b3480156102fc57600080fd5b50600354610310906001600160a01b031681565b6040516001600160a01b039091168152602001610265565b34801561033457600080fd5b506103776103433660046132bf565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610265565b34801561039157600080fd5b5061028e6103a03660046132d8565b610b90565b3480156103b157600080fd5b5061028e6103c03660046132d8565b610bd4565b6102e36103d3366004613304565b610c25565b3480156103e457600080fd5b5061028e610d11565b61028e6103fb3660046133f5565b610d46565b34801561040c57600080fd5b5061028e61041b366004613486565b610d65565b34801561042c57600080fd5b50610377611065565b34801561044157600080fd5b50600254610310906001600160a01b031681565b34801561046157600080fd5b50600154610310906001600160a01b031681565b34801561048157600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610259565b3480156104b857600080fd5b506103777f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b61028e6104ee3660046134f5565b611094565b61028e6105013660046131a2565b611256565b34801561051257600080fd5b5061028e611425565b34801561052757600080fd5b506102596105363660046132d8565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561058c57600080fd5b5061028e61059b3660046130be565b611457565b3480156105ac57600080fd5b50610377600081565b3480156105c157600080fd5b5061037761040081565b3480156105d757600080fd5b506103777f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561060b57600080fd5b5061028e61061a366004613555565b61156e565b34801561062b57600080fd5b506102e36040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b34801561067457600080fd5b5061028e6106833660046130be565b611717565b34801561069457600080fd5b5061028e6106a33660046135ed565b6117f2565b61028e6106b6366004613630565b611ab9565b3480156106c757600080fd5b5061028e6106d63660046136a3565b611ca1565b3480156106e757600080fd5b5061028e6106f63660046132d8565b611dec565b34801561070757600080fd5b50600054610310906001600160a01b031681565b34801561072757600080fd5b506103777f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806107e257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60006107f381611e30565b6001600160a01b03821661081a5760405163d92e233d60e01b815260040160405180910390fd5b6002546001600160a01b03161561085d576040517f0c8dc01600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108877f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611e3a565b5050600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6108cb611f27565b6108d3611f85565b8260000361090d576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166109345760405163d92e233d60e01b815260040160405180910390fd5b610400610944606083018361372e565b9050111561097e576040517f386691aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610989338385612006565b836001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c8585856040516109d0939291906138ad565b60405180910390a3610a0160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050565b610a0f611f27565b610a17611f85565b6001600160a01b038416610a3e5760405163d92e233d60e01b815260040160405180910390fd5b610400610a4e606083018361372e565b610a599150846138e3565b1115610a91576040517f386691aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167fd34634f30f94a646fdf4ce7078f38fc5fa0d3f0b193658facea4e3e43330d9748585856040516109d09392919061391d565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610b0481611e30565b610b0c611f27565b6001600160a01b038516610b335760405163d92e233d60e01b815260040160405180910390fd5b6000610b4086868661214d565b9050856001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f348787604051610b7f93929190613943565b60405180910390a295945050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610bca81611e30565b610a018383611e3a565b6001600160a01b0381163314610c16576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c208282612200565b505050565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610c5181611e30565b610c59611f27565b610c61611f85565b6001600160a01b038516610c885760405163d92e233d60e01b815260040160405180910390fd5b6060610c96878787876122c4565b9050856001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f348787604051610cd593929190613943565b60405180910390a29150610d0860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50949350505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610d3b81611e30565b610d43612347565b50565b610d4e6123d7565b610d57826124a7565b610d6182826124b2565b5050565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9610d8f81611e30565b610d97611f27565b610d9f611f85565b83600003610dd9576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038516610e005760405163d92e233d60e01b815260040160405180910390fd5b610e0a86866125b8565b610e40576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905287169063095ea7b3906044016020604051808303816000875af1158015610ea8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ecc919061395d565b610f02576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f0d85848461214d565b50610f1886866125b8565b610f4e576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610fae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd2919061397a565b90508015610fe457610fe48782612648565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b738287878760405161102b93929190613943565b60405180910390a35061105d60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b600061106f61286e565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b61109c611f27565b6110a4611f85565b346000036110de576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166111055760405163d92e233d60e01b815260040160405180910390fd5b610400611115606083018361372e565b9050111561114f576040517f386691aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d806000811461119c576040519150601f19603f3d011682016040523d82523d6000602084013e6111a1565b606091505b50509050806111dc576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c34600086604051611224939291906138ad565b60405180910390a350610d6160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b61125e611f27565b611266611f85565b346000036112a0576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166112c75760405163d92e233d60e01b815260040160405180910390fd5b6104006112d7606083018361372e565b6112e29150846138e3565b111561131a576040517f386691aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114611367576040519150601f19603f3d011682016040523d82523d6000602084013e61136c565b606091505b50509050806113a7576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c3460008888886040516113f3959493929190613993565b60405180910390a350610a0160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61144f81611e30565b610d436128d0565b600061146281611e30565b6001600160a01b0382166114895760405163d92e233d60e01b815260040160405180910390fd5b6001546114c0907f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb906001600160a01b0316612200565b506114eb7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb83611e3a565b50600154604080516001600160a01b03928316815291841660208301527f3a7b8d6372645f474fe60c115a2ef21421306a3ed4664fa0023c461413c08579910160405180910390a150600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b961159881611e30565b6115a0611f27565b6115a8611f85565b846000036115e2576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0386166116095760405163d92e233d60e01b815260040160405180910390fd5b61161d6001600160a01b0388168787612949565b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063c9028a3690611662908590600401613a36565b600060405180830381600087803b15801561167c57600080fd5b505af1158015611690573d6000803e3d6000fd5b50505050866001600160a01b0316866001600160a01b03167fde7603a6ed5d07c9f43597ccfe9043d15b66d3284f0de321f5cdf56329e6e035878787876040516116dd9493929190613a49565b60405180910390a361170e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050505050565b600061172281611e30565b6001600160a01b0382166117495760405163d92e233d60e01b815260040160405180910390fd5b6000546001600160a01b03161561178c576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117b67f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611e3a565b5050600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff1660008115801561183d5750825b905060008267ffffffffffffffff16600114801561185a5750303b155b905081158015611868575080155b1561189f576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156119005784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038816158061191d57506001600160a01b038716155b1561193b5760405163d92e233d60e01b815260040160405180910390fd5b6119436129bd565b61194b6129c5565b6119536129bd565b61195b6129d5565b611966600087611e3a565b506119917f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611e3a565b506119bc7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a89611e3a565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a16179055611a1a7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb89611e3a565b50600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0389161790558315611aaf5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb611ae381611e30565b611aeb611f27565b611af3611f85565b6001600160a01b038516611b1a5760405163d92e233d60e01b815260040160405180910390fd5b6000856001600160a01b03163460405160006040518083038185875af1925050503d8060008114611b67576040519150601f19603f3d011682016040523d82523d6000602084013e611b6c565b606091505b5050905080611ba7576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063c9028a3690611bec908690600401613a36565b600060405180830381600087803b158015611c0657600080fd5b505af1158015611c1a573d6000803e3d6000fd5b5050505060006001600160a01b0316866001600160a01b03167fde7603a6ed5d07c9f43597ccfe9043d15b66d3284f0de321f5cdf56329e6e03534888888604051611c689493929190613a49565b60405180910390a350611c9a60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b611ca9611f27565b611cb1611f85565b84600003611ceb576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038616611d125760405163d92e233d60e01b815260040160405180910390fd5b610400611d22606083018361372e565b611d2d9150846138e3565b1115611d65576040517f386691aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d70338587612006565b856001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c8787878787604051611dbb959493929190613993565b60405180910390a361105d60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154611e2681611e30565b610a018383612200565b610d4381336129e5565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611f1d576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611ed33390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506107e2565b60009150506107e2565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611f83576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01612000576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6003546001600160a01b039081169083160361204e576040517fe4dd681d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301529091169063d936547e90602401602060405180830381865afa1580156120b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d5919061395d565b61210b576040517fac2175f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610c20906001600160a01b038481169186911684612a72565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60606121598383612aab565b600080856001600160a01b0316348686604051612177929190613a80565b60006040518083038185875af1925050503d80600081146121b4576040519150601f19603f3d011682016040523d82523d6000602084013e6121b9565b606091505b5091509150816121f5576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611f1d576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506107e2565b6060836001600160a01b031663676cc054348786866040518563ffffffff1660e01b81526004016122f793929190613a90565b60006040518083038185885af1158015612315573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261233e9190810190613abb565b95945050505050565b61234f612bab565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061247057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166124647f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611f83576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d6181611e30565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561250c575060408051601f3d908101601f191682019092526125099181019061397a565b60015b612552576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146125ae576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401612549565b610c208383612c06565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015612624573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f9919061395d565b6003546001600160a01b0390811690831603612797576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af11580156126ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ee919061395d565b612724576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561278357600080fd5b505af115801561105d573d6000803e3d6000fd5b6000546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301529091169063d936547e90602401602060405180830381865afa1580156127fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061281e919061395d565b612854576040517fac2175f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610d61906001600160a01b03848116911683612949565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611f83576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6128d8611f27565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258336123b9565b6040516001600160a01b03838116602483015260448201839052610c2091859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612c5c565b611f83612cd8565b6129cd612cd8565b611f83612d3f565b6129dd612cd8565b611f83612d47565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610d61576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401612549565b6040516001600160a01b038481166024830152838116604483015260648201839052610a019186918216906323b872dd90608401612976565b60048110610d615781357f98933fac000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000821601612b30576040517fed69977500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f36fd75ca000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000821601610c20576040517ff3459a9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611f83576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612c0f82612d98565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115612c5457610c208282612e40565b610d61612ead565b6000612c716001600160a01b03841683612ee5565b90508051600014158015612c96575080806020019051810190612c94919061395d565b155b15610c20576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401612549565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611f83576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612127612cd8565b612d4f612cd8565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b806001600160a01b03163b600003612de7576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401612549565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051612e5d9190613b29565b600060405180830381855af49150503d8060008114612e98576040519150601f19603f3d011682016040523d82523d6000602084013e612e9d565b606091505b509150915061233e858383612ef3565b3415611f83576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60606121f983836000612f68565b606082612f0857612f038261301e565b6121f9565b8151158015612f1f57506001600160a01b0384163b155b15612f61576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401612549565b50806121f9565b606081471015612fa6576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401612549565b600080856001600160a01b03168486604051612fc29190613b29565b60006040518083038185875af1925050503d8060008114612fff576040519150601f19603f3d011682016040523d82523d6000602084013e613004565b606091505b5091509150613014868383612ef3565b9695505050505050565b80511561302e5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561307257600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146121f957600080fd5b80356001600160a01b03811681146130b957600080fd5b919050565b6000602082840312156130d057600080fd5b6121f9826130a2565b600060a082840312156130eb57600080fd5b50919050565b6000806000806080858703121561310757600080fd5b613110856130a2565b935060208501359250613125604086016130a2565b9150606085013567ffffffffffffffff81111561314157600080fd5b61314d878288016130d9565b91505092959194509250565b60008083601f84011261316b57600080fd5b50813567ffffffffffffffff81111561318357600080fd5b60208301915083602082850101111561319b57600080fd5b9250929050565b600080600080606085870312156131b857600080fd5b6131c1856130a2565b9350602085013567ffffffffffffffff8111156131dd57600080fd5b6131e987828801613159565b909450925050604085013567ffffffffffffffff81111561314157600080fd5b60008060006040848603121561321e57600080fd5b613227846130a2565b9250602084013567ffffffffffffffff81111561324357600080fd5b61324f86828701613159565b9497909650939450505050565b60005b8381101561327757818101518382015260200161325f565b50506000910152565b6000815180845261329881602086016020860161325c565b601f01601f19169290920160200192915050565b6020815260006121f96020830184613280565b6000602082840312156132d157600080fd5b5035919050565b600080604083850312156132eb57600080fd5b823591506132fb602084016130a2565b90509250929050565b600080600080848603606081121561331b57600080fd5b602081121561332957600080fd5b50849350613339602086016130a2565b9250604085013567ffffffffffffffff81111561335557600080fd5b61336187828801613159565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156133c5576133c561336d565b604052919050565b600067ffffffffffffffff8211156133e7576133e761336d565b50601f01601f191660200190565b6000806040838503121561340857600080fd5b613411836130a2565b9150602083013567ffffffffffffffff81111561342d57600080fd5b8301601f8101851361343e57600080fd5b803561345161344c826133cd565b61339c565b81815286602083850101111561346657600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008060008060006080868803121561349e57600080fd5b6134a7866130a2565b94506134b5602087016130a2565b935060408601359250606086013567ffffffffffffffff8111156134d857600080fd5b6134e488828901613159565b969995985093965092949392505050565b6000806040838503121561350857600080fd5b613511836130a2565b9150602083013567ffffffffffffffff81111561352d57600080fd5b613539858286016130d9565b9150509250929050565b6000608082840312156130eb57600080fd5b60008060008060008060a0878903121561356e57600080fd5b613577876130a2565b9550613585602088016130a2565b945060408701359350606087013567ffffffffffffffff8111156135a857600080fd5b6135b489828a01613159565b909450925050608087013567ffffffffffffffff8111156135d457600080fd5b6135e089828a01613543565b9150509295509295509295565b60008060006060848603121561360257600080fd5b61360b846130a2565b9250613619602085016130a2565b9150613627604085016130a2565b90509250925092565b6000806000806060858703121561364657600080fd5b61364f856130a2565b9350602085013567ffffffffffffffff81111561366b57600080fd5b61367787828801613159565b909450925050604085013567ffffffffffffffff81111561369757600080fd5b61314d87828801613543565b60008060008060008060a087890312156136bc57600080fd5b6136c5876130a2565b9550602087013594506136da604088016130a2565b9350606087013567ffffffffffffffff8111156136f657600080fd5b61370289828a01613159565b909450925050608087013567ffffffffffffffff81111561372257600080fd5b6135e089828a016130d9565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261376357600080fd5b83018035915067ffffffffffffffff82111561377e57600080fd5b60200191503681900382131561319b57600080fd5b8015158114610d4357600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126137d657600080fd5b830160208101925035905067ffffffffffffffff8111156137f657600080fd5b80360382131561319b57600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6001600160a01b03613841826130a2565b1682526000602082013561385481613793565b151560208401526001600160a01b0361386f604084016130a2565b16604084015261388260608301836137a1565b60a0606086015261389760a086018284613805565b6080948501359590940194909452509092915050565b8381526001600160a01b0383166020820152608060408201526000608082015260a06060820152600061233e60a0830184613830565b808201808211156107e2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b604081526000613931604083018587613805565b82810360208401526130148185613830565b83815260406020820152600061233e604083018486613805565b60006020828403121561396f57600080fd5b81516121f981613793565b60006020828403121561398c57600080fd5b5051919050565b8581526001600160a01b03851660208201526080604082015260006139bc608083018587613805565b82810360608401526139ce8185613830565b98975050505050505050565b6001600160a01b036139eb826130a2565b1682526001600160a01b03613a02602083016130a2565b166020830152604081810135908301526000613a2160608301836137a1565b6080606086015261233e608086018284613805565b6020815260006121f960208301846139da565b848152606060208201526000613a63606083018587613805565b8281036040840152613a7581856139da565b979650505050505050565b8183823760009101908152919050565b6001600160a01b03613aa1856130a2565b16815260406020820152600061233e604083018486613805565b600060208284031215613acd57600080fd5b815167ffffffffffffffff811115613ae457600080fd5b8201601f81018413613af557600080fd5b8051613b0361344c826133cd565b818152856020838501011115613b1857600080fd5b61233e82602083016020860161325c565b60008251613b3b81846020870161325c565b919091019291505056fea26469706673582212201229b7b25024e7ca203b587177014870919846d3750c5162ab31d92af37e129664736f6c634300081a0033"; type GatewayEVMConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/GatewayZEVMUpgradeTest__factory.ts b/v2/types/factories/GatewayZEVMUpgradeTest__factory.ts index c0a8b7754..89cd367ed 100644 --- a/v2/types/factories/GatewayZEVMUpgradeTest__factory.ts +++ b/v2/types/factories/GatewayZEVMUpgradeTest__factory.ts @@ -1661,7 +1661,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516143726100fd60003960008181612bbd01528181612be60152612dbc01526143726000f3fe6080604052600436106101e75760003560e01c806352d1902d116101025780639d4ba46511610095578063c39aca3711610064578063c39aca37146106a2578063d547741f146106c2578063e63ab1e9146106e2578063f45346dc1461071657600080fd5b80639d4ba465146105f7578063a217fddf14610617578063ad3cb1cc1461062c578063bcf7f32b1461068257600080fd5b80638456cb59116100d15780638456cb591461054757806391d148541461055c57806397a1cef1146105c157806397d340f5146105e157600080fd5b806352d1902d146104bb5780635c975abb146104d05780637b15118b146105075780637c0dcb5f1461052757600080fd5b80632722feee1161017a5780633b283933116101495780633b283933146104535780633f4ba83a14610473578063485cc955146104885780634f1ef286146104a857600080fd5b80632722feee146103cb5780632810ae63146103f35780632f2ff15d1461041357806336568abe1461043357600080fd5b80631cb5ea75116101b65780631cb5ea75146102f657806321501a951461031657806321e093b114610336578063248a9ca31461036e57600080fd5b806301ffc9a714610261578063048ae42c1461029657806306cb8983146102b6578063184b0793146102d657600080fd5b3661025c576101f4610736565b6000546001600160a01b0316331480159061022357503373735b14bb79463307aacbed86daf3322b1e6226ab14155b1561025a576040517fb3af013700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b34801561026d57600080fd5b5061028161027c366004613305565b610794565b60405190151581526020015b60405180910390f35b3480156102a257600080fd5b5061025a6102b1366004613499565b61082d565b3480156102c257600080fd5b5061025a6102d136600461356b565b610a2d565b3480156102e257600080fd5b5061025a6102f136600461363b565b610b20565b34801561030257600080fd5b5061025a61031136600461368b565b610c0f565b34801561032257600080fd5b5061025a610331366004613739565b610cd5565b34801561034257600080fd5b50600054610356906001600160a01b031681565b6040516001600160a01b03909116815260200161028d565b34801561037a57600080fd5b506103bd6103893660046137c5565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b60405190815260200161028d565b3480156103d757600080fd5b5061035673735b14bb79463307aacbed86daf3322b1e6226ab81565b3480156103ff57600080fd5b5061025a61040e3660046137de565b610e89565b34801561041f57600080fd5b5061025a61042e366004613883565b611021565b34801561043f57600080fd5b5061025a61044e366004613883565b61106b565b34801561045f57600080fd5b5061025a61046e3660046138b3565b6110bc565b34801561047f57600080fd5b5061025a61122d565b34801561049457600080fd5b5061025a6104a3366004613946565b611262565b61025a6104b6366004613974565b61149e565b3480156104c757600080fd5b506103bd6114bd565b3480156104dc57600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610281565b34801561051357600080fd5b5061025a6105223660046139ba565b6114ec565b34801561053357600080fd5b5061025a610542366004613a2c565b6116a2565b34801561055357600080fd5b5061025a6118b6565b34801561056857600080fd5b50610281610577366004613883565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156105cd57600080fd5b5061025a6105dc366004613ab1565b6118e8565b3480156105ed57600080fd5b506103bd61040081565b34801561060357600080fd5b5061025a610612366004613b15565b611a4c565b34801561062357600080fd5b506103bd600081565b34801561063857600080fd5b506106756040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161028d9190613be3565b34801561068e57600080fd5b5061025a61069d366004613bf6565b611cbf565b3480156106ae57600080fd5b5061025a6106bd366004613bf6565b611dd6565b3480156106ce57600080fd5b5061025a6106dd366004613883565b611fcc565b3480156106ee57600080fd5b506103bd7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b34801561072257600080fd5b5061025a610731366004613c94565b612010565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615610792576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061082757507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610835612206565b61083d610736565b865160000361085f5760405163d92e233d60e01b815260040160405180910390fd5b85600003610899576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816000036108d3576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006108e36060830183613cd6565b6108ee915085613d3b565b1115610926576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610933878785612287565b90506000336001600160a01b03167f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c8a898b868c6001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c89190613d75565b6040805180820182528c81526001602082015290516109f29695949392918f918f91908e90613eca565b60405180910390a350610a2460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050505050565b610a35612206565b610a3d610736565b8135600003610a78576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610400610a886060830183613cd6565b610a93915085613d3b565b1115610acb576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610aef86868686610ae136889003880188613f4c565b610aea87613fa4565b61258a565b610b1860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b6d576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b75610736565b6001600160a01b038216610b9c5760405163d92e233d60e01b815260040160405180910390fd5b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063c9028a3690610be190849060040161404c565b600060405180830381600087803b158015610bfb57600080fd5b505af1158015610b18573d6000803e3d6000fd5b610c17612206565b610c1f610736565b81600003610c59576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610400610c696060830183613cd6565b610c74915085613d3b565b1115610cac576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610aef8686868660405180604001604052808881526020016001151581525086610aea90613fa4565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d22576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d2a610736565b6001600160a01b038316610d515760405163d92e233d60e01b815260040160405180910390fd5b83600003610d8b576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dbe57506001600160a01b03831630145b15610df5576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610dff8484612771565b6000546040517f5bcfd6160000000000000000000000000000000000000000000000000000000081526001600160a01b0380861692635bcfd61692610e50928a9216908990889088906004016140bc565b600060405180830381600087803b158015610e6a57600080fd5b505af1158015610e7e573d6000803e3d6000fd5b505050505050505050565b610e91612206565b610e99610736565b8651600003610ebb5760405163d92e233d60e01b815260040160405180910390fd5b85600003610ef5576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8135600003610f30576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610400610f406060830183613cd6565b610f4b915085613d3b565b1115610f83576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fa18673735b14bb79463307aacbed86daf3322b1e6226ab612771565b60008054604051879233927f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c92610ff0928d926001600160a01b0316918d919081908d908d908d908d90614158565b60405180910390a3610a2460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461105b8161293f565b6110658383612949565b50505050565b6001600160a01b03811633146110ad576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110b78282612a36565b505050565b6110c4612206565b6110cc610736565b85516000036110ee5760405163d92e233d60e01b815260040160405180910390fd5b84600003611128576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006111386060830183613cd6565b611143915084613d3b565b111561117b576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111998573735b14bb79463307aacbed86daf3322b1e6226ab612771565b60008054604080518082018252838152600160208201529051879333937f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c936111fc938d936001600160a01b03909316928d92909182918d918d91908d90613eca565b60405180910390a3610b1860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6112578161293f565b61125f612afa565b50565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156112ad5750825b905060008267ffffffffffffffff1660011480156112ca5750303b155b9050811580156112d8575080155b1561130f576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156113705784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038716158061138d57506001600160a01b038616155b156113ab5760405163d92e233d60e01b815260040160405180910390fd5b6113b3612b8a565b6113bb612b8a565b6113c3612b92565b6113cb612ba2565b6113d6600087612949565b506114017f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87612949565b50600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0389161790558315610a245784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050505050565b6114a6612bb2565b6114af82612c82565b6114b98282612c8d565b5050565b60006114c7612db1565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b6114f4612206565b6114fc610736565b865160000361151e5760405163d92e233d60e01b815260040160405180910390fd5b85600003611558576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8135600003611593576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006115a36060830183613cd6565b6115ae915085613d3b565b11156115e6576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006115f487878535612287565b90506000336001600160a01b03167f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c8a898b868c6001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611665573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116899190613d75565b8c8c8c8c6040516109f299989796959493929190614158565b6116aa612206565b6116b2610736565b83516000036116d45760405163d92e233d60e01b815260040160405180910390fd5b8260000361170e576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61040061171e6060830183613cd6565b90501115611758576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006117648484612e13565b90506000336001600160a01b03167f5d7cd8ae449a6b25de63f10534ddd17d8dd3e79c7aa5f28964b7a7c760258d9787868886896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f99190613d75565b60405180604001604052808c6001600160a01b031663091d27886040518163ffffffff1660e01b8152600401602060405180830381865afa158015611842573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118669190613d75565b81526001602090910152604051611884969594939291908c906141b0565b60405180910390a35061106560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6118e08161293f565b61125f612e81565b6118f0612206565b6118f8610736565b835160000361191a5760405163d92e233d60e01b815260040160405180910390fd5b82600003611954576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006119646060830183613cd6565b9050111561199e576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119bc8373735b14bb79463307aacbed86daf3322b1e6226ab612771565b60008054604080518082018252838152600160208201529051859333937f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c93611a1b938b936001600160a01b03909316928b9290918291908b906141b0565b60405180910390a361106560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611a99576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611aa1610736565b6001600160a01b0384161580611abe57506001600160a01b038216155b15611adc5760405163d92e233d60e01b815260040160405180910390fd5b82600003611b16576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821673735b14bb79463307aacbed86daf3322b1e6226ab1480611b4957506001600160a01b03821630145b15611b80576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152602482018590528516906347e7ef24906044016020604051808303816000875af1158015611be8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0c9190614232565b611c42576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063c9028a3690611c8790849060040161404c565b600060405180830381600087803b158015611ca157600080fd5b505af1158015611cb5573d6000803e3d6000fd5b5050505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611d0c576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d14610736565b6001600160a01b0385161580611d3157506001600160a01b038316155b15611d4f5760405163d92e233d60e01b815260040160405180910390fd5b6040517f5bcfd6160000000000000000000000000000000000000000000000000000000081526001600160a01b03841690635bcfd61690611d9c90899089908990889088906004016140bc565b600060405180830381600087803b158015611db657600080fd5b505af1158015611dca573d6000803e3d6000fd5b50505050505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611e23576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e2b610736565b6001600160a01b0385161580611e4857506001600160a01b038316155b15611e665760405163d92e233d60e01b815260040160405180910390fd5b83600003611ea0576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480611ed357506001600160a01b03831630145b15611f0a576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015611f72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f969190614232565b611d4f576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546120068161293f565b6110658383612a36565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461205d576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612065610736565b6001600160a01b038316158061208257506001600160a01b038116155b156120a05760405163d92e233d60e01b815260040160405180910390fd5b816000036120da576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab148061210d57506001600160a01b03811630145b15612144576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af11580156121ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d09190614232565b6110b7576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01612281576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6000806000846001600160a01b031663fc5fecd5856040518263ffffffff1660e01b81526004016122ba91815260200190565b6040805180830381865afa1580156122d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122fa919061424f565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561237f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a39190614232565b6123d9576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018790526001600160a01b038616906323b872dd906064016020604051808303816000875af1158015612445573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124699190614232565b61249f576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018790526001600160a01b038616906342966c68906024016020604051808303816000875af11580156124ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125239190614232565b612559576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b85516000036125ac5760405163d92e233d60e01b815260040160405180910390fd5b81516040517ffc5fecd5000000000000000000000000000000000000000000000000000000008152600481019190915260009081906001600160a01b0388169063fc5fecd5906024016040805180830381865afa158015612611573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612635919061424f565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af11580156126ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126de9190614232565b612714576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b866001600160a01b0316336001600160a01b03167f306ee13f48319a123b222c69908e44dcf91abffc20cacc502e3cf5a4ff23e0e48a8989898960405161275f95949392919061427d565b60405180910390a35050505050505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af11580156127e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128059190614232565b61283b576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561289a57600080fd5b505af11580156128ae573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d80600081146128ff576040519150601f19603f3d011682016040523d82523d6000602084013e612904565b606091505b50509050806110b7576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61125f8133612efa565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16612a2c576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556129e23390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610827565b6000915050610827565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615612a2c576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610827565b612b02612f87565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b610792612fe2565b612b9a612fe2565b610792613049565b612baa612fe2565b61079261309a565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480612c4b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612c3f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610792576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006114b98161293f565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612d05575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612d0291810190613d75565b60015b612d4b576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114612da7576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401612d42565b6110b783836130a2565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610792576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061255d8383846001600160a01b031663091d27886040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e7c9190613d75565b612287565b612e89610736565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833612b6c565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166114b9576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401612d42565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610792576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610792576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613051612fe2565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b612564612fe2565b6130ab826130f8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156130f0576110b782826131a0565b6114b9613216565b806001600160a01b03163b600003613147576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401612d42565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516131bd9190614320565b600060405180830381855af49150503d80600081146131f8576040519150601f19603f3d011682016040523d82523d6000602084013e6131fd565b606091505b509150915061320d85838361324e565b95945050505050565b3415610792576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060826132635761325e826132c3565b61255d565b815115801561327a57506001600160a01b0384163b155b156132bc576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401612d42565b508061255d565b8051156132d35780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561331757600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461255d57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261338757600080fd5b813567ffffffffffffffff8111156133a1576133a1613347565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff811182821017156133ee576133ee613347565b60405281815283820160200185101561340657600080fd5b816020850160208301376000918101602001919091529392505050565b6001600160a01b038116811461125f57600080fd5b60008083601f84011261344a57600080fd5b50813567ffffffffffffffff81111561346257600080fd5b60208301915083602082850101111561347a57600080fd5b9250929050565b600060a0828403121561349357600080fd5b50919050565b600080600080600080600060c0888a0312156134b457600080fd5b873567ffffffffffffffff8111156134cb57600080fd5b6134d78a828b01613376565b9750506020880135955060408801356134ef81613423565b9450606088013567ffffffffffffffff81111561350b57600080fd5b6135178a828b01613438565b9095509350506080880135915060a088013567ffffffffffffffff81111561353e57600080fd5b61354a8a828b01613481565b91505092959891949750929550565b60006040828403121561349357600080fd5b60008060008060008060c0878903121561358457600080fd5b863567ffffffffffffffff81111561359b57600080fd5b6135a789828a01613376565b96505060208701356135b881613423565b9450604087013567ffffffffffffffff8111156135d457600080fd5b6135e089828a01613438565b90955093506135f490508860608901613559565b915060a087013567ffffffffffffffff81111561361057600080fd5b61361c89828a01613481565b9150509295509295509295565b60006080828403121561349357600080fd5b6000806040838503121561364e57600080fd5b823561365981613423565b9150602083013567ffffffffffffffff81111561367557600080fd5b61368185828601613629565b9150509250929050565b60008060008060008060a087890312156136a457600080fd5b863567ffffffffffffffff8111156136bb57600080fd5b6136c789828a01613376565b96505060208701356136d881613423565b9450604087013567ffffffffffffffff8111156136f457600080fd5b61370089828a01613438565b90955093505060608701359150608087013567ffffffffffffffff81111561361057600080fd5b60006060828403121561349357600080fd5b60008060008060006080868803121561375157600080fd5b853567ffffffffffffffff81111561376857600080fd5b61377488828901613727565b95505060208601359350604086013561378c81613423565b9250606086013567ffffffffffffffff8111156137a857600080fd5b6137b488828901613438565b969995985093965092949392505050565b6000602082840312156137d757600080fd5b5035919050565b600080600080600080600060e0888a0312156137f957600080fd5b873567ffffffffffffffff81111561381057600080fd5b61381c8a828b01613376565b9750506020880135955060408801359450606088013567ffffffffffffffff81111561384757600080fd5b6138538a828b01613438565b909550935061386790508960808a01613559565b915060c088013567ffffffffffffffff81111561353e57600080fd5b6000806040838503121561389657600080fd5b8235915060208301356138a881613423565b809150509250929050565b60008060008060008060a087890312156138cc57600080fd5b863567ffffffffffffffff8111156138e357600080fd5b6138ef89828a01613376565b9650506020870135945060408701359350606087013567ffffffffffffffff81111561391a57600080fd5b61392689828a01613438565b909450925050608087013567ffffffffffffffff81111561361057600080fd5b6000806040838503121561395957600080fd5b823561396481613423565b915060208301356138a881613423565b6000806040838503121561398757600080fd5b823561399281613423565b9150602083013567ffffffffffffffff8111156139ae57600080fd5b61368185828601613376565b600080600080600080600060e0888a0312156139d557600080fd5b873567ffffffffffffffff8111156139ec57600080fd5b6139f88a828b01613376565b975050602088013595506040880135613a1081613423565b9450606088013567ffffffffffffffff81111561384757600080fd5b60008060008060808587031215613a4257600080fd5b843567ffffffffffffffff811115613a5957600080fd5b613a6587828801613376565b945050602085013592506040850135613a7d81613423565b9150606085013567ffffffffffffffff811115613a9957600080fd5b613aa587828801613481565b91505092959194509250565b60008060008060808587031215613ac757600080fd5b843567ffffffffffffffff811115613ade57600080fd5b613aea87828801613376565b9450506020850135925060408501359150606085013567ffffffffffffffff811115613a9957600080fd5b60008060008060808587031215613b2b57600080fd5b8435613b3681613423565b9350602085013592506040850135613b4d81613423565b9150606085013567ffffffffffffffff811115613b6957600080fd5b613aa587828801613629565b60005b83811015613b90578181015183820152602001613b78565b50506000910152565b60008151808452613bb1816020860160208601613b75565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061255d6020830184613b99565b60008060008060008060a08789031215613c0f57600080fd5b863567ffffffffffffffff811115613c2657600080fd5b613c3289828a01613727565b9650506020870135613c4381613423565b9450604087013593506060870135613c5a81613423565b9250608087013567ffffffffffffffff811115613c7657600080fd5b613c8289828a01613438565b979a9699509497509295939492505050565b600080600060608486031215613ca957600080fd5b8335613cb481613423565b9250602084013591506040840135613ccb81613423565b809150509250925092565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613d0b57600080fd5b83018035915067ffffffffffffffff821115613d2657600080fd5b60200191503681900382131561347a57600080fd5b80820180821115610827577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060208284031215613d8757600080fd5b5051919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b801515811461125f57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613e1a57600080fd5b830160208101925035905067ffffffffffffffff811115613e3a57600080fd5b80360382131561347a57600080fd5b60008135613e5681613423565b6001600160a01b031683526020820135613e6f81613dd7565b151560208401526040820135613e8481613423565b6001600160a01b03166040840152613e9f6060830183613de5565b60a06060860152613eb460a086018284613d8e565b6080948501359590940194909452509092915050565b61012081526000613edf61012083018c613b99565b6001600160a01b038b16602084015289604084015288606084015287608084015282810360a0840152613f13818789613d8e565b855160c08501526020860151151560e085015290505b828103610100840152613f3c8185613e49565b9c9b505050505050505050505050565b60006040828403128015613f5f57600080fd5b506040805190810167ffffffffffffffff81118282101715613f8357613f83613347565b604052823581526020830135613f9881613dd7565b60208201529392505050565b600060a08236031215613fb657600080fd5b60405160a0810167ffffffffffffffff81118282101715613fd957613fd9613347565b6040528235613fe781613423565b81526020830135613ff781613dd7565b6020820152604083013561400a81613423565b6040820152606083013567ffffffffffffffff81111561402957600080fd5b61403536828601613376565b606083015250608092830135928101929092525090565b602081526000823561405d81613423565b6001600160a01b038116602084015250602083013561407b81613423565b6001600160a01b038116604084015250600060408401359050806060840152506140a86060840184613de5565b60808085015261320d60a085018284613d8e565b6080815260006140cc8788613de5565b606060808501526140e160e085018284613d8e565b91505060208801356140f281613423565b6001600160a01b0390811660a085015260408981013560c086015290881660208501528301869052828103606084015261412d818587613d8e565b98975050505050505050565b80358252602081013561414b81613dd7565b8015156020840152505050565b6101208152600061416d61012083018c613b99565b6001600160a01b038b16602084015289604084015288606084015287608084015282810360a08401526141a1818789613d8e565b9050613f2960c0840186614139565b610120815260006141c561012083018a613b99565b6001600160a01b03891660208401528760408401528660608401528560808401528281038060a08501526000825261420c60c0850187805182526020908101511515910152565b60208101610100850152506142246020820185613e49565b9a9950505050505050505050565b60006020828403121561424457600080fd5b815161255d81613dd7565b6000806040838503121561426257600080fd5b825161426d81613423565b6020939093015192949293505050565b60a08152600061429060a0830188613b99565b82810360208401526142a3818789613d8e565b85516040850152602086015115156060850152905082810360808401526001600160a01b0384511681526020840151151560208201526001600160a01b036040850151166040820152606084015160a0606083015261430560a0830182613b99565b90506080850151608083015280925050509695505050505050565b60008251614332818460208701613b75565b919091019291505056fea2646970667358221220693ae0b8b17f09ef16bdfa12b7568fcc79067c79e3f526e5ffda735ddf429efb64736f6c634300081a0033"; + "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516143726100fd60003960008181612bbd01528181612be60152612dbc01526143726000f3fe6080604052600436106101e75760003560e01c806352d1902d116101025780639d4ba46511610095578063c39aca3711610064578063c39aca37146106a2578063d547741f146106c2578063e63ab1e9146106e2578063f45346dc1461071657600080fd5b80639d4ba465146105f7578063a217fddf14610617578063ad3cb1cc1461062c578063bcf7f32b1461068257600080fd5b80638456cb59116100d15780638456cb591461054757806391d148541461055c57806397a1cef1146105c157806397d340f5146105e157600080fd5b806352d1902d146104bb5780635c975abb146104d05780637b15118b146105075780637c0dcb5f1461052757600080fd5b80632722feee1161017a5780633b283933116101495780633b283933146104535780633f4ba83a14610473578063485cc955146104885780634f1ef286146104a857600080fd5b80632722feee146103cb5780632810ae63146103f35780632f2ff15d1461041357806336568abe1461043357600080fd5b80631cb5ea75116101b65780631cb5ea75146102f657806321501a951461031657806321e093b114610336578063248a9ca31461036e57600080fd5b806301ffc9a714610261578063048ae42c1461029657806306cb8983146102b6578063184b0793146102d657600080fd5b3661025c576101f4610736565b6000546001600160a01b0316331480159061022357503373735b14bb79463307aacbed86daf3322b1e6226ab14155b1561025a576040517fb3af013700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b34801561026d57600080fd5b5061028161027c366004613305565b610794565b60405190151581526020015b60405180910390f35b3480156102a257600080fd5b5061025a6102b1366004613499565b61082d565b3480156102c257600080fd5b5061025a6102d136600461356b565b610a2d565b3480156102e257600080fd5b5061025a6102f136600461363b565b610b20565b34801561030257600080fd5b5061025a61031136600461368b565b610c0f565b34801561032257600080fd5b5061025a610331366004613739565b610cd5565b34801561034257600080fd5b50600054610356906001600160a01b031681565b6040516001600160a01b03909116815260200161028d565b34801561037a57600080fd5b506103bd6103893660046137c5565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b60405190815260200161028d565b3480156103d757600080fd5b5061035673735b14bb79463307aacbed86daf3322b1e6226ab81565b3480156103ff57600080fd5b5061025a61040e3660046137de565b610e89565b34801561041f57600080fd5b5061025a61042e366004613883565b611021565b34801561043f57600080fd5b5061025a61044e366004613883565b61106b565b34801561045f57600080fd5b5061025a61046e3660046138b3565b6110bc565b34801561047f57600080fd5b5061025a61122d565b34801561049457600080fd5b5061025a6104a3366004613946565b611262565b61025a6104b6366004613974565b61149e565b3480156104c757600080fd5b506103bd6114bd565b3480156104dc57600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610281565b34801561051357600080fd5b5061025a6105223660046139ba565b6114ec565b34801561053357600080fd5b5061025a610542366004613a2c565b6116a2565b34801561055357600080fd5b5061025a6118b6565b34801561056857600080fd5b50610281610577366004613883565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156105cd57600080fd5b5061025a6105dc366004613ab1565b6118e8565b3480156105ed57600080fd5b506103bd61040081565b34801561060357600080fd5b5061025a610612366004613b15565b611a4c565b34801561062357600080fd5b506103bd600081565b34801561063857600080fd5b506106756040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161028d9190613be3565b34801561068e57600080fd5b5061025a61069d366004613bf6565b611cbf565b3480156106ae57600080fd5b5061025a6106bd366004613bf6565b611dd6565b3480156106ce57600080fd5b5061025a6106dd366004613883565b611fcc565b3480156106ee57600080fd5b506103bd7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b34801561072257600080fd5b5061025a610731366004613c94565b612010565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615610792576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061082757507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610835612206565b61083d610736565b865160000361085f5760405163d92e233d60e01b815260040160405180910390fd5b85600003610899576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816000036108d3576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006108e36060830183613cd6565b6108ee915085613d3b565b1115610926576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610933878785612287565b90506000336001600160a01b03167f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c8a898b868c6001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c89190613d75565b6040805180820182528c81526001602082015290516109f29695949392918f918f91908e90613eca565b60405180910390a350610a2460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050505050565b610a35612206565b610a3d610736565b8135600003610a78576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610400610a886060830183613cd6565b610a93915085613d3b565b1115610acb576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610aef86868686610ae136889003880188613f4c565b610aea87613fa4565b61258a565b610b1860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b6d576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b75610736565b6001600160a01b038216610b9c5760405163d92e233d60e01b815260040160405180910390fd5b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063c9028a3690610be190849060040161404c565b600060405180830381600087803b158015610bfb57600080fd5b505af1158015610b18573d6000803e3d6000fd5b610c17612206565b610c1f610736565b81600003610c59576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610400610c696060830183613cd6565b610c74915085613d3b565b1115610cac576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610aef8686868660405180604001604052808881526020016001151581525086610aea90613fa4565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d22576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d2a610736565b6001600160a01b038316610d515760405163d92e233d60e01b815260040160405180910390fd5b83600003610d8b576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dbe57506001600160a01b03831630145b15610df5576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610dff8484612771565b6000546040517f5bcfd6160000000000000000000000000000000000000000000000000000000081526001600160a01b0380861692635bcfd61692610e50928a9216908990889088906004016140bc565b600060405180830381600087803b158015610e6a57600080fd5b505af1158015610e7e573d6000803e3d6000fd5b505050505050505050565b610e91612206565b610e99610736565b8651600003610ebb5760405163d92e233d60e01b815260040160405180910390fd5b85600003610ef5576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8135600003610f30576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610400610f406060830183613cd6565b610f4b915085613d3b565b1115610f83576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fa18673735b14bb79463307aacbed86daf3322b1e6226ab612771565b60008054604051879233927f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c92610ff0928d926001600160a01b0316918d919081908d908d908d908d90614158565b60405180910390a3610a2460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461105b8161293f565b6110658383612949565b50505050565b6001600160a01b03811633146110ad576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110b78282612a36565b505050565b6110c4612206565b6110cc610736565b85516000036110ee5760405163d92e233d60e01b815260040160405180910390fd5b84600003611128576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006111386060830183613cd6565b611143915084613d3b565b111561117b576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111998573735b14bb79463307aacbed86daf3322b1e6226ab612771565b60008054604080518082018252838152600160208201529051879333937f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c936111fc938d936001600160a01b03909316928d92909182918d918d91908d90613eca565b60405180910390a3610b1860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6112578161293f565b61125f612afa565b50565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156112ad5750825b905060008267ffffffffffffffff1660011480156112ca5750303b155b9050811580156112d8575080155b1561130f576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156113705784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038716158061138d57506001600160a01b038616155b156113ab5760405163d92e233d60e01b815260040160405180910390fd5b6113b3612b8a565b6113bb612b8a565b6113c3612b92565b6113cb612ba2565b6113d6600087612949565b506114017f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87612949565b50600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0389161790558315610a245784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050505050565b6114a6612bb2565b6114af82612c82565b6114b98282612c8d565b5050565b60006114c7612db1565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b6114f4612206565b6114fc610736565b865160000361151e5760405163d92e233d60e01b815260040160405180910390fd5b85600003611558576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8135600003611593576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006115a36060830183613cd6565b6115ae915085613d3b565b11156115e6576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006115f487878535612287565b90506000336001600160a01b03167f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c8a898b868c6001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611665573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116899190613d75565b8c8c8c8c6040516109f299989796959493929190614158565b6116aa612206565b6116b2610736565b83516000036116d45760405163d92e233d60e01b815260040160405180910390fd5b8260000361170e576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61040061171e6060830183613cd6565b90501115611758576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006117648484612e13565b90506000336001600160a01b03167f5d7cd8ae449a6b25de63f10534ddd17d8dd3e79c7aa5f28964b7a7c760258d9787868886896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f99190613d75565b60405180604001604052808c6001600160a01b031663091d27886040518163ffffffff1660e01b8152600401602060405180830381865afa158015611842573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118669190613d75565b81526001602090910152604051611884969594939291908c906141b0565b60405180910390a35061106560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6118e08161293f565b61125f612e81565b6118f0612206565b6118f8610736565b835160000361191a5760405163d92e233d60e01b815260040160405180910390fd5b82600003611954576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006119646060830183613cd6565b9050111561199e576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119bc8373735b14bb79463307aacbed86daf3322b1e6226ab612771565b60008054604080518082018252838152600160208201529051859333937f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c93611a1b938b936001600160a01b03909316928b9290918291908b906141b0565b60405180910390a361106560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611a99576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611aa1610736565b6001600160a01b0384161580611abe57506001600160a01b038216155b15611adc5760405163d92e233d60e01b815260040160405180910390fd5b82600003611b16576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821673735b14bb79463307aacbed86daf3322b1e6226ab1480611b4957506001600160a01b03821630145b15611b80576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152602482018590528516906347e7ef24906044016020604051808303816000875af1158015611be8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0c9190614232565b611c42576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063c9028a3690611c8790849060040161404c565b600060405180830381600087803b158015611ca157600080fd5b505af1158015611cb5573d6000803e3d6000fd5b5050505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611d0c576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d14610736565b6001600160a01b0385161580611d3157506001600160a01b038316155b15611d4f5760405163d92e233d60e01b815260040160405180910390fd5b6040517f5bcfd6160000000000000000000000000000000000000000000000000000000081526001600160a01b03841690635bcfd61690611d9c90899089908990889088906004016140bc565b600060405180830381600087803b158015611db657600080fd5b505af1158015611dca573d6000803e3d6000fd5b50505050505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611e23576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e2b610736565b6001600160a01b0385161580611e4857506001600160a01b038316155b15611e665760405163d92e233d60e01b815260040160405180910390fd5b83600003611ea0576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480611ed357506001600160a01b03831630145b15611f0a576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015611f72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f969190614232565b611d4f576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546120068161293f565b6110658383612a36565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461205d576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612065610736565b6001600160a01b038316158061208257506001600160a01b038116155b156120a05760405163d92e233d60e01b815260040160405180910390fd5b816000036120da576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab148061210d57506001600160a01b03811630145b15612144576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af11580156121ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d09190614232565b6110b7576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01612281576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6000806000846001600160a01b031663fc5fecd5856040518263ffffffff1660e01b81526004016122ba91815260200190565b6040805180830381865afa1580156122d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122fa919061424f565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561237f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a39190614232565b6123d9576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018790526001600160a01b038616906323b872dd906064016020604051808303816000875af1158015612445573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124699190614232565b61249f576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018790526001600160a01b038616906342966c68906024016020604051808303816000875af11580156124ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125239190614232565b612559576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b85516000036125ac5760405163d92e233d60e01b815260040160405180910390fd5b81516040517ffc5fecd5000000000000000000000000000000000000000000000000000000008152600481019190915260009081906001600160a01b0388169063fc5fecd5906024016040805180830381865afa158015612611573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612635919061424f565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af11580156126ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126de9190614232565b612714576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b866001600160a01b0316336001600160a01b03167f306ee13f48319a123b222c69908e44dcf91abffc20cacc502e3cf5a4ff23e0e48a8989898960405161275f95949392919061427d565b60405180910390a35050505050505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af11580156127e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128059190614232565b61283b576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561289a57600080fd5b505af11580156128ae573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d80600081146128ff576040519150601f19603f3d011682016040523d82523d6000602084013e612904565b606091505b50509050806110b7576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61125f8133612efa565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16612a2c576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556129e23390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610827565b6000915050610827565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615612a2c576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610827565b612b02612f87565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b610792612fe2565b612b9a612fe2565b610792613049565b612baa612fe2565b61079261309a565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480612c4b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612c3f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610792576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006114b98161293f565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612d05575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612d0291810190613d75565b60015b612d4b576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114612da7576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401612d42565b6110b783836130a2565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610792576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061255d8383846001600160a01b031663091d27886040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e7c9190613d75565b612287565b612e89610736565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833612b6c565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166114b9576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401612d42565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610792576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610792576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613051612fe2565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b612564612fe2565b6130ab826130f8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156130f0576110b782826131a0565b6114b9613216565b806001600160a01b03163b600003613147576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401612d42565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516131bd9190614320565b600060405180830381855af49150503d80600081146131f8576040519150601f19603f3d011682016040523d82523d6000602084013e6131fd565b606091505b509150915061320d85838361324e565b95945050505050565b3415610792576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060826132635761325e826132c3565b61255d565b815115801561327a57506001600160a01b0384163b155b156132bc576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401612d42565b508061255d565b8051156132d35780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020828403121561331757600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461255d57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261338757600080fd5b813567ffffffffffffffff8111156133a1576133a1613347565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff811182821017156133ee576133ee613347565b60405281815283820160200185101561340657600080fd5b816020850160208301376000918101602001919091529392505050565b6001600160a01b038116811461125f57600080fd5b60008083601f84011261344a57600080fd5b50813567ffffffffffffffff81111561346257600080fd5b60208301915083602082850101111561347a57600080fd5b9250929050565b600060a0828403121561349357600080fd5b50919050565b600080600080600080600060c0888a0312156134b457600080fd5b873567ffffffffffffffff8111156134cb57600080fd5b6134d78a828b01613376565b9750506020880135955060408801356134ef81613423565b9450606088013567ffffffffffffffff81111561350b57600080fd5b6135178a828b01613438565b9095509350506080880135915060a088013567ffffffffffffffff81111561353e57600080fd5b61354a8a828b01613481565b91505092959891949750929550565b60006040828403121561349357600080fd5b60008060008060008060c0878903121561358457600080fd5b863567ffffffffffffffff81111561359b57600080fd5b6135a789828a01613376565b96505060208701356135b881613423565b9450604087013567ffffffffffffffff8111156135d457600080fd5b6135e089828a01613438565b90955093506135f490508860608901613559565b915060a087013567ffffffffffffffff81111561361057600080fd5b61361c89828a01613481565b9150509295509295509295565b60006080828403121561349357600080fd5b6000806040838503121561364e57600080fd5b823561365981613423565b9150602083013567ffffffffffffffff81111561367557600080fd5b61368185828601613629565b9150509250929050565b60008060008060008060a087890312156136a457600080fd5b863567ffffffffffffffff8111156136bb57600080fd5b6136c789828a01613376565b96505060208701356136d881613423565b9450604087013567ffffffffffffffff8111156136f457600080fd5b61370089828a01613438565b90955093505060608701359150608087013567ffffffffffffffff81111561361057600080fd5b60006060828403121561349357600080fd5b60008060008060006080868803121561375157600080fd5b853567ffffffffffffffff81111561376857600080fd5b61377488828901613727565b95505060208601359350604086013561378c81613423565b9250606086013567ffffffffffffffff8111156137a857600080fd5b6137b488828901613438565b969995985093965092949392505050565b6000602082840312156137d757600080fd5b5035919050565b600080600080600080600060e0888a0312156137f957600080fd5b873567ffffffffffffffff81111561381057600080fd5b61381c8a828b01613376565b9750506020880135955060408801359450606088013567ffffffffffffffff81111561384757600080fd5b6138538a828b01613438565b909550935061386790508960808a01613559565b915060c088013567ffffffffffffffff81111561353e57600080fd5b6000806040838503121561389657600080fd5b8235915060208301356138a881613423565b809150509250929050565b60008060008060008060a087890312156138cc57600080fd5b863567ffffffffffffffff8111156138e357600080fd5b6138ef89828a01613376565b9650506020870135945060408701359350606087013567ffffffffffffffff81111561391a57600080fd5b61392689828a01613438565b909450925050608087013567ffffffffffffffff81111561361057600080fd5b6000806040838503121561395957600080fd5b823561396481613423565b915060208301356138a881613423565b6000806040838503121561398757600080fd5b823561399281613423565b9150602083013567ffffffffffffffff8111156139ae57600080fd5b61368185828601613376565b600080600080600080600060e0888a0312156139d557600080fd5b873567ffffffffffffffff8111156139ec57600080fd5b6139f88a828b01613376565b975050602088013595506040880135613a1081613423565b9450606088013567ffffffffffffffff81111561384757600080fd5b60008060008060808587031215613a4257600080fd5b843567ffffffffffffffff811115613a5957600080fd5b613a6587828801613376565b945050602085013592506040850135613a7d81613423565b9150606085013567ffffffffffffffff811115613a9957600080fd5b613aa587828801613481565b91505092959194509250565b60008060008060808587031215613ac757600080fd5b843567ffffffffffffffff811115613ade57600080fd5b613aea87828801613376565b9450506020850135925060408501359150606085013567ffffffffffffffff811115613a9957600080fd5b60008060008060808587031215613b2b57600080fd5b8435613b3681613423565b9350602085013592506040850135613b4d81613423565b9150606085013567ffffffffffffffff811115613b6957600080fd5b613aa587828801613629565b60005b83811015613b90578181015183820152602001613b78565b50506000910152565b60008151808452613bb1816020860160208601613b75565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061255d6020830184613b99565b60008060008060008060a08789031215613c0f57600080fd5b863567ffffffffffffffff811115613c2657600080fd5b613c3289828a01613727565b9650506020870135613c4381613423565b9450604087013593506060870135613c5a81613423565b9250608087013567ffffffffffffffff811115613c7657600080fd5b613c8289828a01613438565b979a9699509497509295939492505050565b600080600060608486031215613ca957600080fd5b8335613cb481613423565b9250602084013591506040840135613ccb81613423565b809150509250925092565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613d0b57600080fd5b83018035915067ffffffffffffffff821115613d2657600080fd5b60200191503681900382131561347a57600080fd5b80820180821115610827577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060208284031215613d8757600080fd5b5051919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b801515811461125f57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613e1a57600080fd5b830160208101925035905067ffffffffffffffff811115613e3a57600080fd5b80360382131561347a57600080fd5b60008135613e5681613423565b6001600160a01b031683526020820135613e6f81613dd7565b151560208401526040820135613e8481613423565b6001600160a01b03166040840152613e9f6060830183613de5565b60a06060860152613eb460a086018284613d8e565b6080948501359590940194909452509092915050565b61012081526000613edf61012083018c613b99565b6001600160a01b038b16602084015289604084015288606084015287608084015282810360a0840152613f13818789613d8e565b855160c08501526020860151151560e085015290505b828103610100840152613f3c8185613e49565b9c9b505050505050505050505050565b60006040828403128015613f5f57600080fd5b506040805190810167ffffffffffffffff81118282101715613f8357613f83613347565b604052823581526020830135613f9881613dd7565b60208201529392505050565b600060a08236031215613fb657600080fd5b60405160a0810167ffffffffffffffff81118282101715613fd957613fd9613347565b6040528235613fe781613423565b81526020830135613ff781613dd7565b6020820152604083013561400a81613423565b6040820152606083013567ffffffffffffffff81111561402957600080fd5b61403536828601613376565b606083015250608092830135928101929092525090565b602081526000823561405d81613423565b6001600160a01b038116602084015250602083013561407b81613423565b6001600160a01b038116604084015250600060408401359050806060840152506140a86060840184613de5565b60808085015261320d60a085018284613d8e565b6080815260006140cc8788613de5565b606060808501526140e160e085018284613d8e565b91505060208801356140f281613423565b6001600160a01b0390811660a085015260408981013560c086015290881660208501528301869052828103606084015261412d818587613d8e565b98975050505050505050565b80358252602081013561414b81613dd7565b8015156020840152505050565b6101208152600061416d61012083018c613b99565b6001600160a01b038b16602084015289604084015288606084015287608084015282810360a08401526141a1818789613d8e565b9050613f2960c0840186614139565b610120815260006141c561012083018a613b99565b6001600160a01b03891660208401528760408401528660608401528560808401528281038060a08501526000825261420c60c0850187805182526020908101511515910152565b60208101610100850152506142246020820185613e49565b9a9950505050505050505050565b60006020828403121561424457600080fd5b815161255d81613dd7565b6000806040838503121561426257600080fd5b825161426d81613423565b6020939093015192949293505050565b60a08152600061429060a0830188613b99565b82810360208401526142a3818789613d8e565b85516040850152602086015115156060850152905082810360808401526001600160a01b0384511681526020840151151560208201526001600160a01b036040850151166040820152606084015160a0606083015261430560a0830182613b99565b90506080850151608083015280925050509695505050505050565b60008251614332818460208701613b75565b919091019291505056fea2646970667358221220a3c1c96c344dc9fbaddfad3e45e555546883a56988faf6afdb2134108056ef0564736f6c634300081a0033"; type GatewayZEVMUpgradeTestConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/GatewayZEVM__factory.ts b/v2/types/factories/GatewayZEVM__factory.ts index 643719e8a..c00e5da52 100644 --- a/v2/types/factories/GatewayZEVM__factory.ts +++ b/v2/types/factories/GatewayZEVM__factory.ts @@ -1372,7 +1372,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051613aed6100fd6000396000818161229e015281816122c7015261249d0152613aed6000f3fe6080604052600436106101c65760003560e01c80635c975abb116100f75780639d4ba46511610095578063c39aca3711610064578063c39aca371461061c578063d547741f1461063c578063e63ab1e91461065c578063f45346dc1461069057600080fd5b80639d4ba46514610571578063a217fddf14610591578063ad3cb1cc146105a6578063bcf7f32b146105fc57600080fd5b80638456cb59116100d15780638456cb59146104c657806391d14854146104db57806397a1cef11461054057806397d340f51461055b57600080fd5b80635c975abb1461044f5780637b15118b146104865780637c0dcb5f146104a657600080fd5b80632810ae63116101645780633f4ba83a1161013e5780633f4ba83a146103f2578063485cc955146104075780634f1ef2861461042757806352d1902d1461043a57600080fd5b80632810ae63146103925780632f2ff15d146103b257806336568abe146103d257600080fd5b806321501a95116101a057806321501a95146102b557806321e093b1146102d5578063248a9ca31461030d5780632722feee1461036a57600080fd5b806301ffc9a71461024057806306cb898314610275578063184b07931461029557600080fd5b3661023b576101d36106b0565b6000546001600160a01b0316331480159061020257503373735b14bb79463307aacbed86daf3322b1e6226ab14155b15610239576040517fb3af013700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b34801561024c57600080fd5b5061026061025b366004612cc3565b61070e565b60405190151581526020015b60405180910390f35b34801561028157600080fd5b50610239610290366004612e69565b6107a7565b3480156102a157600080fd5b506102396102b0366004612f39565b61089a565b3480156102c157600080fd5b506102396102d0366004612f9b565b6109a2565b3480156102e157600080fd5b506000546102f5906001600160a01b031681565b6040516001600160a01b03909116815260200161026c565b34801561031957600080fd5b5061035c610328366004613027565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b60405190815260200161026c565b34801561037657600080fd5b506102f573735b14bb79463307aacbed86daf3322b1e6226ab81565b34801561039e57600080fd5b506102396103ad366004613040565b610b6f565b3480156103be57600080fd5b506102396103cd366004613100565b610bba565b3480156103de57600080fd5b506102396103ed366004613100565b610c04565b3480156103fe57600080fd5b50610239610c55565b34801561041357600080fd5b50610239610422366004613130565b610c8a565b61023961043536600461315e565b610edf565b34801561044657600080fd5b5061035c610efe565b34801561045b57600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610260565b34801561049257600080fd5b506102396104a13660046131a4565b610f2d565b3480156104b257600080fd5b506102396104c1366004613216565b61112e565b3480156104d257600080fd5b5061023961135b565b3480156104e757600080fd5b506102606104f6366004613100565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561054c57600080fd5b506102396103ad36600461329b565b34801561056757600080fd5b5061035c61040081565b34801561057d57600080fd5b5061023961058c3660046132ff565b61138d565b34801561059d57600080fd5b5061035c600081565b3480156105b257600080fd5b506105ef6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161026c91906133cd565b34801561060857600080fd5b506102396106173660046133e0565b611619565b34801561062857600080fd5b506102396106373660046133e0565b611749565b34801561064857600080fd5b50610239610657366004613100565b611958565b34801561066857600080fd5b5061035c7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b34801561069c57600080fd5b506102396106ab36600461347e565b61199c565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff161561070c576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806107a157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6107af611bab565b6107b76106b0565b81356000036107f2576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61040061080260608301836134c0565b61080d915085613525565b1115610845576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108698686868661085b3688900388018861356d565b610864876135c5565b611c2c565b61089260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108e7576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108ef6106b0565b6001600160a01b03821661092f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063c9028a369061097490849060040161371a565b600060405180830381600087803b15801561098e57600080fd5b505af1158015610892573d6000803e3d6000fd5b3373735b14bb79463307aacbed86daf3322b1e6226ab146109ef576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109f76106b0565b6001600160a01b038316610a37576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83600003610a71576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610aa457506001600160a01b03831630145b15610adb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ae58484611e52565b6000546040517f5bcfd6160000000000000000000000000000000000000000000000000000000081526001600160a01b0380861692635bcfd61692610b36928a92169089908890889060040161378a565b600060405180830381600087803b158015610b5057600080fd5b505af1158015610b64573d6000803e3d6000fd5b505050505050505050565b610b77611bab565b610b7f6106b0565b6040517fe4dd681d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610bf481612020565b610bfe838361202a565b50505050565b6001600160a01b0381163314610c46576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c508282612117565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610c7f81612020565b610c876121db565b50565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610cd55750825b905060008267ffffffffffffffff166001148015610cf25750303b155b905081158015610d00575080155b15610d37576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610d985784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610db557506001600160a01b038616155b15610dec576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610df461226b565b610dfc61226b565b610e04612273565b610e0c612283565b610e1760008761202a565b50610e427f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8761202a565b50600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0389161790558315610bb15784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050505050565b610ee7612293565b610ef082612363565b610efa828261236e565b5050565b6000610f08612492565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610f35611bab565b610f3d6106b0565b8651600003610f78576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85600003610fb2576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8135600003610fed576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610400610ffd60608301836134c0565b611008915085613525565b1115611040576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061104e878785356124f4565b90506000336001600160a01b03167f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c8a898b868c6001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e39190613807565b8c8c8c8c6040516110fc999897969594939291906138a1565b60405180910390a350610bb160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b611136611bab565b61113e6106b0565b8351600003611179576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036111b3576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006111c360608301836134c0565b905011156111fd576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061120984846127d1565b90506000336001600160a01b03167f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c87868886896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561127a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129e9190613807565b60405180604001604052808c6001600160a01b031663091d27886040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130b9190613807565b81526001602090910152604051611329969594939291908c9061392b565b60405180910390a350610bfe60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61138581612020565b610c8761283f565b3373735b14bb79463307aacbed86daf3322b1e6226ab146113da576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113e26106b0565b6001600160a01b03841615806113ff57506001600160a01b038216155b15611436576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003611470576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821673735b14bb79463307aacbed86daf3322b1e6226ab14806114a357506001600160a01b03821630145b156114da576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152602482018590528516906347e7ef24906044016020604051808303816000875af1158015611542573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156691906139ad565b61159c576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063c9028a36906115e190849060040161371a565b600060405180830381600087803b1580156115fb57600080fd5b505af115801561160f573d6000803e3d6000fd5b5050505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611666576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61166e6106b0565b6001600160a01b038516158061168b57506001600160a01b038316155b156116c2576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f5bcfd6160000000000000000000000000000000000000000000000000000000081526001600160a01b03841690635bcfd6169061170f908990899089908890889060040161378a565b600060405180830381600087803b15801561172957600080fd5b505af115801561173d573d6000803e3d6000fd5b50505050505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611796576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61179e6106b0565b6001600160a01b03851615806117bb57506001600160a01b038316155b156117f2576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8360000361182c576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061185f57506001600160a01b03831630145b15611896576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af11580156118fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192291906139ad565b6116c2576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461199281612020565b610bfe8383612117565b3373735b14bb79463307aacbed86daf3322b1e6226ab146119e9576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119f16106b0565b6001600160a01b0383161580611a0e57506001600160a01b038116155b15611a45576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600003611a7f576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab1480611ab257506001600160a01b03811630145b15611ae9576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611b51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7591906139ad565b610c50576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611c26576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b8551600003611c67576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516040517ffc5fecd5000000000000000000000000000000000000000000000000000000008152600481019190915260009081906001600160a01b0388169063fc5fecd5906024016040805180830381865afa158015611ccc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cf091906139ca565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af1158015611d75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d9991906139ad565b611dcf576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b866001600160a01b0316336001600160a01b03167f306ee13f48319a123b222c69908e44dcf91abffc20cacc502e3cf5a4ff23e0e48a89898989604051611e1a9594939291906139f8565b60405180910390a35050505050505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015611ec2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee691906139ad565b611f1c576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b158015611f7b57600080fd5b505af1158015611f8f573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d8060008114611fe0576040519150601f19603f3d011682016040523d82523d6000602084013e611fe5565b606091505b5050905080610c50576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c8781336128b8565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1661210d576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556120c33390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506107a1565b60009150506107a1565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff161561210d576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506107a1565b6121e3612945565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b61070c6129a0565b61227b6129a0565b61070c612a07565b61228b6129a0565b61070c612a58565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061232c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166123207f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b1561070c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610efa81612020565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156123e6575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526123e391810190613807565b60015b61242c576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114612488576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401612423565b610c508383612a60565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461070c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806000846001600160a01b031663fc5fecd5856040518263ffffffff1660e01b815260040161252791815260200190565b6040805180830381865afa158015612543573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061256791906139ca565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af11580156125ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061261091906139ad565b612646576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018790526001600160a01b038616906323b872dd906064016020604051808303816000875af11580156126b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d691906139ad565b61270c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018790526001600160a01b038616906342966c68906024016020604051808303816000875af115801561276c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061279091906139ad565b6127c6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60006127ca8383846001600160a01b031663091d27886040518163ffffffff1660e01b8152600401602060405180830381865afa158015612816573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061283a9190613807565b6124f4565b6128476106b0565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361224d565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610efa576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401612423565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1661070c576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661070c576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612a0f6129a0565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b611e2c6129a0565b612a6982612ab6565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115612aae57610c508282612b5e565b610efa612bd4565b806001600160a01b03163b600003612b05576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401612423565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051612b7b9190613a9b565b600060405180830381855af49150503d8060008114612bb6576040519150601f19603f3d011682016040523d82523d6000602084013e612bbb565b606091505b5091509150612bcb858383612c0c565b95945050505050565b341561070c576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082612c2157612c1c82612c81565b6127ca565b8151158015612c3857506001600160a01b0384163b155b15612c7a576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401612423565b50806127ca565b805115612c915780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215612cd557600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146127ca57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112612d4557600080fd5b813567ffffffffffffffff811115612d5f57612d5f612d05565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff81118282101715612dac57612dac612d05565b604052818152838201602001851015612dc457600080fd5b816020850160208301376000918101602001919091529392505050565b6001600160a01b0381168114610c8757600080fd5b60008083601f840112612e0857600080fd5b50813567ffffffffffffffff811115612e2057600080fd5b602083019150836020828501011115612e3857600080fd5b9250929050565b600060408284031215612e5157600080fd5b50919050565b600060a08284031215612e5157600080fd5b60008060008060008060c08789031215612e8257600080fd5b863567ffffffffffffffff811115612e9957600080fd5b612ea589828a01612d34565b9650506020870135612eb681612de1565b9450604087013567ffffffffffffffff811115612ed257600080fd5b612ede89828a01612df6565b9095509350612ef290508860608901612e3f565b915060a087013567ffffffffffffffff811115612f0e57600080fd5b612f1a89828a01612e57565b9150509295509295509295565b600060808284031215612e5157600080fd5b60008060408385031215612f4c57600080fd5b8235612f5781612de1565b9150602083013567ffffffffffffffff811115612f7357600080fd5b612f7f85828601612f27565b9150509250929050565b600060608284031215612e5157600080fd5b600080600080600060808688031215612fb357600080fd5b853567ffffffffffffffff811115612fca57600080fd5b612fd688828901612f89565b955050602086013593506040860135612fee81612de1565b9250606086013567ffffffffffffffff81111561300a57600080fd5b61301688828901612df6565b969995985093965092949392505050565b60006020828403121561303957600080fd5b5035919050565b600080600080600080600060e0888a03121561305b57600080fd5b873567ffffffffffffffff81111561307257600080fd5b61307e8a828b01612d34565b9750506020880135955060408801359450606088013567ffffffffffffffff8111156130a957600080fd5b6130b58a828b01612df6565b90955093506130c990508960808a01612e3f565b915060c088013567ffffffffffffffff8111156130e557600080fd5b6130f18a828b01612e57565b91505092959891949750929550565b6000806040838503121561311357600080fd5b82359150602083013561312581612de1565b809150509250929050565b6000806040838503121561314357600080fd5b823561314e81612de1565b9150602083013561312581612de1565b6000806040838503121561317157600080fd5b823561317c81612de1565b9150602083013567ffffffffffffffff81111561319857600080fd5b612f7f85828601612d34565b600080600080600080600060e0888a0312156131bf57600080fd5b873567ffffffffffffffff8111156131d657600080fd5b6131e28a828b01612d34565b9750506020880135955060408801356131fa81612de1565b9450606088013567ffffffffffffffff8111156130a957600080fd5b6000806000806080858703121561322c57600080fd5b843567ffffffffffffffff81111561324357600080fd5b61324f87828801612d34565b94505060208501359250604085013561326781612de1565b9150606085013567ffffffffffffffff81111561328357600080fd5b61328f87828801612e57565b91505092959194509250565b600080600080608085870312156132b157600080fd5b843567ffffffffffffffff8111156132c857600080fd5b6132d487828801612d34565b9450506020850135925060408501359150606085013567ffffffffffffffff81111561328357600080fd5b6000806000806080858703121561331557600080fd5b843561332081612de1565b935060208501359250604085013561333781612de1565b9150606085013567ffffffffffffffff81111561335357600080fd5b61328f87828801612f27565b60005b8381101561337a578181015183820152602001613362565b50506000910152565b6000815180845261339b81602086016020860161335f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006127ca6020830184613383565b60008060008060008060a087890312156133f957600080fd5b863567ffffffffffffffff81111561341057600080fd5b61341c89828a01612f89565b965050602087013561342d81612de1565b945060408701359350606087013561344481612de1565b9250608087013567ffffffffffffffff81111561346057600080fd5b61346c89828a01612df6565b979a9699509497509295939492505050565b60008060006060848603121561349357600080fd5b833561349e81612de1565b92506020840135915060408401356134b581612de1565b809150509250925092565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126134f557600080fd5b83018035915067ffffffffffffffff82111561351057600080fd5b602001915036819003821315612e3857600080fd5b808201808211156107a1577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8015158114610c8757600080fd5b6000604082840312801561358057600080fd5b506040805190810167ffffffffffffffff811182821017156135a4576135a4612d05565b6040528235815260208301356135b98161355f565b60208201529392505050565b600060a082360312156135d757600080fd5b60405160a0810167ffffffffffffffff811182821017156135fa576135fa612d05565b604052823561360881612de1565b815260208301356136188161355f565b6020820152604083013561362b81612de1565b6040820152606083013567ffffffffffffffff81111561364a57600080fd5b61365636828601612d34565b606083015250608092830135928101929092525090565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126136a257600080fd5b830160208101925035905067ffffffffffffffff8111156136c257600080fd5b803603821315612e3857600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000823561372b81612de1565b6001600160a01b038116602084015250602083013561374981612de1565b6001600160a01b03811660408401525060006040840135905080606084015250613776606084018461366d565b608080850152612bcb60a0850182846136d1565b60808152600061379a878861366d565b606060808501526137af60e0850182846136d1565b91505060208801356137c081612de1565b6001600160a01b0390811660a085015260408981013560c08601529088166020850152830186905282810360608401526137fb8185876136d1565b98975050505050505050565b60006020828403121561381957600080fd5b5051919050565b6000813561382d81612de1565b6001600160a01b0316835260208201356138468161355f565b15156020840152604082013561385b81612de1565b6001600160a01b03166040840152613876606083018361366d565b60a0606086015261388b60a0860182846136d1565b6080948501359590940194909452509092915050565b610120815260006138b661012083018c613383565b6001600160a01b038b16602084015289604084015288606084015287608084015282810360a08401526138ea8187896136d1565b853560c0850152905060208501356139018161355f565b151560e084015282810361010084015261391b8185613820565b9c9b505050505050505050505050565b6101208152600061394061012083018a613383565b6001600160a01b03891660208401528760408401528660608401528560808401528281038060a08501526000825261398760c0850187805182526020908101511515910152565b602081016101008501525061399f6020820185613820565b9a9950505050505050505050565b6000602082840312156139bf57600080fd5b81516127ca8161355f565b600080604083850312156139dd57600080fd5b82516139e881612de1565b6020939093015192949293505050565b60a081526000613a0b60a0830188613383565b8281036020840152613a1e8187896136d1565b85516040850152602086015115156060850152905082810360808401526001600160a01b0384511681526020840151151560208201526001600160a01b036040850151166040820152606084015160a06060830152613a8060a0830182613383565b90506080850151608083015280925050509695505050505050565b60008251613aad81846020870161335f565b919091019291505056fea2646970667358221220c1c36eb2cd88e78897862b0da6e7385d5f7141c3d4197e277f188fb56aa2dd0364736f6c634300081a0033"; + "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051613aed6100fd6000396000818161229e015281816122c7015261249d0152613aed6000f3fe6080604052600436106101c65760003560e01c80635c975abb116100f75780639d4ba46511610095578063c39aca3711610064578063c39aca371461061c578063d547741f1461063c578063e63ab1e91461065c578063f45346dc1461069057600080fd5b80639d4ba46514610571578063a217fddf14610591578063ad3cb1cc146105a6578063bcf7f32b146105fc57600080fd5b80638456cb59116100d15780638456cb59146104c657806391d14854146104db57806397a1cef11461054057806397d340f51461055b57600080fd5b80635c975abb1461044f5780637b15118b146104865780637c0dcb5f146104a657600080fd5b80632810ae63116101645780633f4ba83a1161013e5780633f4ba83a146103f2578063485cc955146104075780634f1ef2861461042757806352d1902d1461043a57600080fd5b80632810ae63146103925780632f2ff15d146103b257806336568abe146103d257600080fd5b806321501a95116101a057806321501a95146102b557806321e093b1146102d5578063248a9ca31461030d5780632722feee1461036a57600080fd5b806301ffc9a71461024057806306cb898314610275578063184b07931461029557600080fd5b3661023b576101d36106b0565b6000546001600160a01b0316331480159061020257503373735b14bb79463307aacbed86daf3322b1e6226ab14155b15610239576040517fb3af013700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b34801561024c57600080fd5b5061026061025b366004612cc3565b61070e565b60405190151581526020015b60405180910390f35b34801561028157600080fd5b50610239610290366004612e69565b6107a7565b3480156102a157600080fd5b506102396102b0366004612f39565b61089a565b3480156102c157600080fd5b506102396102d0366004612f9b565b6109a2565b3480156102e157600080fd5b506000546102f5906001600160a01b031681565b6040516001600160a01b03909116815260200161026c565b34801561031957600080fd5b5061035c610328366004613027565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b60405190815260200161026c565b34801561037657600080fd5b506102f573735b14bb79463307aacbed86daf3322b1e6226ab81565b34801561039e57600080fd5b506102396103ad366004613040565b610b6f565b3480156103be57600080fd5b506102396103cd366004613100565b610bba565b3480156103de57600080fd5b506102396103ed366004613100565b610c04565b3480156103fe57600080fd5b50610239610c55565b34801561041357600080fd5b50610239610422366004613130565b610c8a565b61023961043536600461315e565b610edf565b34801561044657600080fd5b5061035c610efe565b34801561045b57600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610260565b34801561049257600080fd5b506102396104a13660046131a4565b610f2d565b3480156104b257600080fd5b506102396104c1366004613216565b61112e565b3480156104d257600080fd5b5061023961135b565b3480156104e757600080fd5b506102606104f6366004613100565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561054c57600080fd5b506102396103ad36600461329b565b34801561056757600080fd5b5061035c61040081565b34801561057d57600080fd5b5061023961058c3660046132ff565b61138d565b34801561059d57600080fd5b5061035c600081565b3480156105b257600080fd5b506105ef6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161026c91906133cd565b34801561060857600080fd5b506102396106173660046133e0565b611619565b34801561062857600080fd5b506102396106373660046133e0565b611749565b34801561064857600080fd5b50610239610657366004613100565b611958565b34801561066857600080fd5b5061035c7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b34801561069c57600080fd5b506102396106ab36600461347e565b61199c565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff161561070c576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806107a157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6107af611bab565b6107b76106b0565b81356000036107f2576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61040061080260608301836134c0565b61080d915085613525565b1115610845576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108698686868661085b3688900388018861356d565b610864876135c5565b611c2c565b61089260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146108e7576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108ef6106b0565b6001600160a01b03821661092f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063c9028a369061097490849060040161371a565b600060405180830381600087803b15801561098e57600080fd5b505af1158015610892573d6000803e3d6000fd5b3373735b14bb79463307aacbed86daf3322b1e6226ab146109ef576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109f76106b0565b6001600160a01b038316610a37576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83600003610a71576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610aa457506001600160a01b03831630145b15610adb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ae58484611e52565b6000546040517f5bcfd6160000000000000000000000000000000000000000000000000000000081526001600160a01b0380861692635bcfd61692610b36928a92169089908890889060040161378a565b600060405180830381600087803b158015610b5057600080fd5b505af1158015610b64573d6000803e3d6000fd5b505050505050505050565b610b77611bab565b610b7f6106b0565b6040517fe4dd681d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610bf481612020565b610bfe838361202a565b50505050565b6001600160a01b0381163314610c46576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c508282612117565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610c7f81612020565b610c876121db565b50565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610cd55750825b905060008267ffffffffffffffff166001148015610cf25750303b155b905081158015610d00575080155b15610d37576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610d985784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610db557506001600160a01b038616155b15610dec576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610df461226b565b610dfc61226b565b610e04612273565b610e0c612283565b610e1760008761202a565b50610e427f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8761202a565b50600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0389161790558315610bb15784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050505050565b610ee7612293565b610ef082612363565b610efa828261236e565b5050565b6000610f08612492565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610f35611bab565b610f3d6106b0565b8651600003610f78576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85600003610fb2576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8135600003610fed576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610400610ffd60608301836134c0565b611008915085613525565b1115611040576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061104e878785356124f4565b90506000336001600160a01b03167f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c8a898b868c6001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e39190613807565b8c8c8c8c6040516110fc999897969594939291906138a1565b60405180910390a350610bb160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b611136611bab565b61113e6106b0565b8351600003611179576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036111b3576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104006111c360608301836134c0565b905011156111fd576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061120984846127d1565b90506000336001600160a01b03167f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c87868886896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561127a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129e9190613807565b60405180604001604052808c6001600160a01b031663091d27886040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130b9190613807565b81526001602090910152604051611329969594939291908c9061392b565b60405180910390a350610bfe60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61138581612020565b610c8761283f565b3373735b14bb79463307aacbed86daf3322b1e6226ab146113da576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113e26106b0565b6001600160a01b03841615806113ff57506001600160a01b038216155b15611436576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003611470576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821673735b14bb79463307aacbed86daf3322b1e6226ab14806114a357506001600160a01b03821630145b156114da576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152602482018590528516906347e7ef24906044016020604051808303816000875af1158015611542573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156691906139ad565b61159c576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063c9028a36906115e190849060040161371a565b600060405180830381600087803b1580156115fb57600080fd5b505af115801561160f573d6000803e3d6000fd5b5050505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611666576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61166e6106b0565b6001600160a01b038516158061168b57506001600160a01b038316155b156116c2576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f5bcfd6160000000000000000000000000000000000000000000000000000000081526001600160a01b03841690635bcfd6169061170f908990899089908890889060040161378a565b600060405180830381600087803b15801561172957600080fd5b505af115801561173d573d6000803e3d6000fd5b50505050505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611796576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61179e6106b0565b6001600160a01b03851615806117bb57506001600160a01b038316155b156117f2576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8360000361182c576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061185f57506001600160a01b03831630145b15611896576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af11580156118fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192291906139ad565b6116c2576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461199281612020565b610bfe8383612117565b3373735b14bb79463307aacbed86daf3322b1e6226ab146119e9576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119f16106b0565b6001600160a01b0383161580611a0e57506001600160a01b038116155b15611a45576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600003611a7f576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab1480611ab257506001600160a01b03811630145b15611ae9576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611b51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7591906139ad565b610c50576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611c26576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b8551600003611c67576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516040517ffc5fecd5000000000000000000000000000000000000000000000000000000008152600481019190915260009081906001600160a01b0388169063fc5fecd5906024016040805180830381865afa158015611ccc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cf091906139ca565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af1158015611d75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d9991906139ad565b611dcf576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b866001600160a01b0316336001600160a01b03167f306ee13f48319a123b222c69908e44dcf91abffc20cacc502e3cf5a4ff23e0e48a89898989604051611e1a9594939291906139f8565b60405180910390a35050505050505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015611ec2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee691906139ad565b611f1c576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b158015611f7b57600080fd5b505af1158015611f8f573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d8060008114611fe0576040519150601f19603f3d011682016040523d82523d6000602084013e611fe5565b606091505b5050905080610c50576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c8781336128b8565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1661210d576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556120c33390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506107a1565b60009150506107a1565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff161561210d576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506107a1565b6121e3612945565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b61070c6129a0565b61227b6129a0565b61070c612a07565b61228b6129a0565b61070c612a58565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061232c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166123207f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b1561070c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610efa81612020565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156123e6575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526123e391810190613807565b60015b61242c576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114612488576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401612423565b610c508383612a60565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461070c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806000846001600160a01b031663fc5fecd5856040518263ffffffff1660e01b815260040161252791815260200190565b6040805180830381865afa158015612543573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061256791906139ca565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af11580156125ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061261091906139ad565b612646576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018790526001600160a01b038616906323b872dd906064016020604051808303816000875af11580156126b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d691906139ad565b61270c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018790526001600160a01b038616906342966c68906024016020604051808303816000875af115801561276c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061279091906139ad565b6127c6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60006127ca8383846001600160a01b031663091d27886040518163ffffffff1660e01b8152600401602060405180830381865afa158015612816573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061283a9190613807565b6124f4565b6128476106b0565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361224d565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610efa576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401612423565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1661070c576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661070c576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612a0f6129a0565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b611e2c6129a0565b612a6982612ab6565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115612aae57610c508282612b5e565b610efa612bd4565b806001600160a01b03163b600003612b05576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401612423565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051612b7b9190613a9b565b600060405180830381855af49150503d8060008114612bb6576040519150601f19603f3d011682016040523d82523d6000602084013e612bbb565b606091505b5091509150612bcb858383612c0c565b95945050505050565b341561070c576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082612c2157612c1c82612c81565b6127ca565b8151158015612c3857506001600160a01b0384163b155b15612c7a576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401612423565b50806127ca565b805115612c915780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215612cd557600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146127ca57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112612d4557600080fd5b813567ffffffffffffffff811115612d5f57612d5f612d05565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff81118282101715612dac57612dac612d05565b604052818152838201602001851015612dc457600080fd5b816020850160208301376000918101602001919091529392505050565b6001600160a01b0381168114610c8757600080fd5b60008083601f840112612e0857600080fd5b50813567ffffffffffffffff811115612e2057600080fd5b602083019150836020828501011115612e3857600080fd5b9250929050565b600060408284031215612e5157600080fd5b50919050565b600060a08284031215612e5157600080fd5b60008060008060008060c08789031215612e8257600080fd5b863567ffffffffffffffff811115612e9957600080fd5b612ea589828a01612d34565b9650506020870135612eb681612de1565b9450604087013567ffffffffffffffff811115612ed257600080fd5b612ede89828a01612df6565b9095509350612ef290508860608901612e3f565b915060a087013567ffffffffffffffff811115612f0e57600080fd5b612f1a89828a01612e57565b9150509295509295509295565b600060808284031215612e5157600080fd5b60008060408385031215612f4c57600080fd5b8235612f5781612de1565b9150602083013567ffffffffffffffff811115612f7357600080fd5b612f7f85828601612f27565b9150509250929050565b600060608284031215612e5157600080fd5b600080600080600060808688031215612fb357600080fd5b853567ffffffffffffffff811115612fca57600080fd5b612fd688828901612f89565b955050602086013593506040860135612fee81612de1565b9250606086013567ffffffffffffffff81111561300a57600080fd5b61301688828901612df6565b969995985093965092949392505050565b60006020828403121561303957600080fd5b5035919050565b600080600080600080600060e0888a03121561305b57600080fd5b873567ffffffffffffffff81111561307257600080fd5b61307e8a828b01612d34565b9750506020880135955060408801359450606088013567ffffffffffffffff8111156130a957600080fd5b6130b58a828b01612df6565b90955093506130c990508960808a01612e3f565b915060c088013567ffffffffffffffff8111156130e557600080fd5b6130f18a828b01612e57565b91505092959891949750929550565b6000806040838503121561311357600080fd5b82359150602083013561312581612de1565b809150509250929050565b6000806040838503121561314357600080fd5b823561314e81612de1565b9150602083013561312581612de1565b6000806040838503121561317157600080fd5b823561317c81612de1565b9150602083013567ffffffffffffffff81111561319857600080fd5b612f7f85828601612d34565b600080600080600080600060e0888a0312156131bf57600080fd5b873567ffffffffffffffff8111156131d657600080fd5b6131e28a828b01612d34565b9750506020880135955060408801356131fa81612de1565b9450606088013567ffffffffffffffff8111156130a957600080fd5b6000806000806080858703121561322c57600080fd5b843567ffffffffffffffff81111561324357600080fd5b61324f87828801612d34565b94505060208501359250604085013561326781612de1565b9150606085013567ffffffffffffffff81111561328357600080fd5b61328f87828801612e57565b91505092959194509250565b600080600080608085870312156132b157600080fd5b843567ffffffffffffffff8111156132c857600080fd5b6132d487828801612d34565b9450506020850135925060408501359150606085013567ffffffffffffffff81111561328357600080fd5b6000806000806080858703121561331557600080fd5b843561332081612de1565b935060208501359250604085013561333781612de1565b9150606085013567ffffffffffffffff81111561335357600080fd5b61328f87828801612f27565b60005b8381101561337a578181015183820152602001613362565b50506000910152565b6000815180845261339b81602086016020860161335f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006127ca6020830184613383565b60008060008060008060a087890312156133f957600080fd5b863567ffffffffffffffff81111561341057600080fd5b61341c89828a01612f89565b965050602087013561342d81612de1565b945060408701359350606087013561344481612de1565b9250608087013567ffffffffffffffff81111561346057600080fd5b61346c89828a01612df6565b979a9699509497509295939492505050565b60008060006060848603121561349357600080fd5b833561349e81612de1565b92506020840135915060408401356134b581612de1565b809150509250925092565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126134f557600080fd5b83018035915067ffffffffffffffff82111561351057600080fd5b602001915036819003821315612e3857600080fd5b808201808211156107a1577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8015158114610c8757600080fd5b6000604082840312801561358057600080fd5b506040805190810167ffffffffffffffff811182821017156135a4576135a4612d05565b6040528235815260208301356135b98161355f565b60208201529392505050565b600060a082360312156135d757600080fd5b60405160a0810167ffffffffffffffff811182821017156135fa576135fa612d05565b604052823561360881612de1565b815260208301356136188161355f565b6020820152604083013561362b81612de1565b6040820152606083013567ffffffffffffffff81111561364a57600080fd5b61365636828601612d34565b606083015250608092830135928101929092525090565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126136a257600080fd5b830160208101925035905067ffffffffffffffff8111156136c257600080fd5b803603821315612e3857600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000823561372b81612de1565b6001600160a01b038116602084015250602083013561374981612de1565b6001600160a01b03811660408401525060006040840135905080606084015250613776606084018461366d565b608080850152612bcb60a0850182846136d1565b60808152600061379a878861366d565b606060808501526137af60e0850182846136d1565b91505060208801356137c081612de1565b6001600160a01b0390811660a085015260408981013560c08601529088166020850152830186905282810360608401526137fb8185876136d1565b98975050505050505050565b60006020828403121561381957600080fd5b5051919050565b6000813561382d81612de1565b6001600160a01b0316835260208201356138468161355f565b15156020840152604082013561385b81612de1565b6001600160a01b03166040840152613876606083018361366d565b60a0606086015261388b60a0860182846136d1565b6080948501359590940194909452509092915050565b610120815260006138b661012083018c613383565b6001600160a01b038b16602084015289604084015288606084015287608084015282810360a08401526138ea8187896136d1565b853560c0850152905060208501356139018161355f565b151560e084015282810361010084015261391b8185613820565b9c9b505050505050505050505050565b6101208152600061394061012083018a613383565b6001600160a01b03891660208401528760408401528660608401528560808401528281038060a08501526000825261398760c0850187805182526020908101511515910152565b602081016101008501525061399f6020820185613820565b9a9950505050505050505050565b6000602082840312156139bf57600080fd5b81516127ca8161355f565b600080604083850312156139dd57600080fd5b82516139e881612de1565b6020939093015192949293505050565b60a081526000613a0b60a0830188613383565b8281036020840152613a1e8187896136d1565b85516040850152602086015115156060850152905082810360808401526001600160a01b0384511681526020840151151560208201526001600160a01b036040850151166040820152606084015160a06060830152613a8060a0830182613383565b90506080850151608083015280925050509695505050505050565b60008251613aad81846020870161335f565b919091019291505056fea26469706673582212201ddcf73d6c1640fc84dc0b3508ad2b024037657f752e7304b86608832c25552564736f6c634300081a0033"; type GatewayZEVMConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/Math__factory.ts b/v2/types/factories/Math__factory.ts index ef9e57f32..9cf7645e3 100644 --- a/v2/types/factories/Math__factory.ts +++ b/v2/types/factories/Math__factory.ts @@ -20,7 +20,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220963d6a471e72b9bb9993a7857cbf4ef7f6b2ae696bb4d38a8d43cbdf2744b5ab64736f6c634300081a0033"; + "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206a7c7177badb1ffa5d746dcaecb2228630fd6d795c607724d5c34ddd7a04b68464736f6c634300081a0033"; type MathConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/MockERC20__factory.ts b/v2/types/factories/MockERC20__factory.ts index ce5a6233a..11e39a937 100644 --- a/v2/types/factories/MockERC20__factory.ts +++ b/v2/types/factories/MockERC20__factory.ts @@ -335,7 +335,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6080604052348015600f57600080fd5b5061113e8061001f6000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b41146101d2578063a9059cbb146101da578063d505accf146101ed578063dd62ed3e1461020057600080fd5b80633644e5151461017457806370a082311461017c5780637ecebe00146101b257600080fd5b806318160ddd116100bd57806318160ddd1461013a57806323b872dd1461014c578063313ce5671461015f57600080fd5b806306fdde03146100e4578063095ea7b3146101025780631624f6c614610125575b600080fd5b6100ec610246565b6040516100f99190610b6b565b60405180910390f35b610115610110366004610be2565b6102d8565b60405190151581526020016100f9565b610138610133366004610cdc565b610352565b005b6003545b6040519081526020016100f9565b61011561015a366004610d55565b610451565b60025460405160ff90911681526020016100f9565b61013e6105c5565b61013e61018a366004610d92565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b61013e6101c0366004610d92565b60086020526000908152604090205481565b6100ec6105eb565b6101156101e8366004610be2565b6105fa565b6101386101fb366004610dad565b6106ab565b61013e61020e366004610e18565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b60606000805461025590610e4b565b80601f016020809104026020016040519081016040528092919081815260200182805461028190610e4b565b80156102ce5780601f106102a3576101008083540402835291602001916102ce565b820191906000526020600020905b8154815290600101906020018083116102b157829003601f168201915b5050505050905090565b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103409086815260200190565b60405180910390a35060015b92915050565b60095460ff16156103c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f414c52454144595f494e495449414c495a45440000000000000000000000000060448201526064015b60405180910390fd5b60006103d08482610eed565b5060016103dd8382610eed565b50600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff83161790556104136109b5565b60065561041e6109ce565b6007555050600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905550565b73ffffffffffffffffffffffffffffffffffffffff831660009081526005602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146104e5576104b38184610a71565b73ffffffffffffffffffffffffffffffffffffffff861660009081526005602090815260408083203384529091529020555b73ffffffffffffffffffffffffffffffffffffffff85166000908152600460205260409020546105159084610a71565b73ffffffffffffffffffffffffffffffffffffffff80871660009081526004602052604080822093909355908616815220546105519084610aee565b73ffffffffffffffffffffffffffffffffffffffff80861660008181526004602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906105b29087815260200190565b60405180910390a3506001949350505050565b60006006546105d26109b5565b146105e4576105df6109ce565b905090565b5060075490565b60606001805461025590610e4b565b336000908152600460205260408120546106149083610a71565b336000908152600460205260408082209290925573ffffffffffffffffffffffffffffffffffffffff85168152205461064d9083610aee565b73ffffffffffffffffffffffffffffffffffffffff84166000818152600460205260409081902092909255905133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103409086815260200190565b42841015610715576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064016103bb565b600060016107216105c5565b73ffffffffffffffffffffffffffffffffffffffff8a16600090815260086020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928d928d928d9290919061077c83611017565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810188905260e0016040516020818303038152906040528051906020012060405160200161081d9291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa15801561087b573d6000803e3d6000fd5b5050604051601f19015191505073ffffffffffffffffffffffffffffffffffffffff8116158015906108d857508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b61093e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e455200000000000000000000000000000000000060448201526064016103bb565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526005602090815260408083208b8516808552908352928190208a90555189815291928b16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35050505050505050565b6000610b67806109c763ffffffff8216565b9250505090565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051610a00919061104f565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6610a316109b5565b604080516020810195909552840192909252606083015260808201523060a082015260c00160405160208183030381529060405280519060200120905090565b600081831015610add576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f45524332303a207375627472616374696f6e20756e646572666c6f770000000060448201526064016103bb565b610ae782846110e2565b9392505050565b600080610afb83856110f5565b905083811015610ae7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45524332303a206164646974696f6e206f766572666c6f77000000000000000060448201526064016103bb565b4690565b602081526000825180602084015260005b81811015610b995760208186018101516040868401015201610b7c565b506000604082850101526040601f19601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bdd57600080fd5b919050565b60008060408385031215610bf557600080fd5b610bfe83610bb9565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112610c4c57600080fd5b813567ffffffffffffffff811115610c6657610c66610c0c565b604051601f19603f601f19601f8501160116810181811067ffffffffffffffff82111715610c9657610c96610c0c565b604052818152838201602001851015610cae57600080fd5b816020850160208301376000918101602001919091529392505050565b803560ff81168114610bdd57600080fd5b600080600060608486031215610cf157600080fd5b833567ffffffffffffffff811115610d0857600080fd5b610d1486828701610c3b565b935050602084013567ffffffffffffffff811115610d3157600080fd5b610d3d86828701610c3b565b925050610d4c60408501610ccb565b90509250925092565b600080600060608486031215610d6a57600080fd5b610d7384610bb9565b9250610d8160208501610bb9565b929592945050506040919091013590565b600060208284031215610da457600080fd5b610ae782610bb9565b600080600080600080600060e0888a031215610dc857600080fd5b610dd188610bb9565b9650610ddf60208901610bb9565b95506040880135945060608801359350610dfb60808901610ccb565b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610e2b57600080fd5b610e3483610bb9565b9150610e4260208401610bb9565b90509250929050565b600181811c90821680610e5f57607f821691505b602082108103610e98577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f821115610ee857806000526020600020601f840160051c81016020851015610ec55750805b601f840160051c820191505b81811015610ee55760008155600101610ed1565b50505b505050565b815167ffffffffffffffff811115610f0757610f07610c0c565b610f1b81610f158454610e4b565b84610e9e565b6020601f821160018114610f6d5760008315610f375750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455610ee5565b600084815260208120601f198516915b82811015610f9d5787850151825560209485019460019092019101610f7d565b5084821015610fd957868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361104857611048610fe8565b5060010190565b600080835461105d81610e4b565b60018216801561107457600181146110a7576110d7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831686528115158202860193506110d7565b86600052602060002060005b838110156110cf578154888201526001909101906020016110b3565b505081860193505b509195945050505050565b8181038181111561034c5761034c610fe8565b8082018082111561034c5761034c610fe856fea2646970667358221220e60976f3145da4401c14d2c6022f76f2d06cfe9e76a0ae4c57e08d3cced9159964736f6c634300081a0033"; + "0x6080604052348015600f57600080fd5b5061113e8061001f6000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b41146101d2578063a9059cbb146101da578063d505accf146101ed578063dd62ed3e1461020057600080fd5b80633644e5151461017457806370a082311461017c5780637ecebe00146101b257600080fd5b806318160ddd116100bd57806318160ddd1461013a57806323b872dd1461014c578063313ce5671461015f57600080fd5b806306fdde03146100e4578063095ea7b3146101025780631624f6c614610125575b600080fd5b6100ec610246565b6040516100f99190610b6b565b60405180910390f35b610115610110366004610be2565b6102d8565b60405190151581526020016100f9565b610138610133366004610cdc565b610352565b005b6003545b6040519081526020016100f9565b61011561015a366004610d55565b610451565b60025460405160ff90911681526020016100f9565b61013e6105c5565b61013e61018a366004610d92565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b61013e6101c0366004610d92565b60086020526000908152604090205481565b6100ec6105eb565b6101156101e8366004610be2565b6105fa565b6101386101fb366004610dad565b6106ab565b61013e61020e366004610e18565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b60606000805461025590610e4b565b80601f016020809104026020016040519081016040528092919081815260200182805461028190610e4b565b80156102ce5780601f106102a3576101008083540402835291602001916102ce565b820191906000526020600020905b8154815290600101906020018083116102b157829003601f168201915b5050505050905090565b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103409086815260200190565b60405180910390a35060015b92915050565b60095460ff16156103c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f414c52454144595f494e495449414c495a45440000000000000000000000000060448201526064015b60405180910390fd5b60006103d08482610eed565b5060016103dd8382610eed565b50600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff83161790556104136109b5565b60065561041e6109ce565b6007555050600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905550565b73ffffffffffffffffffffffffffffffffffffffff831660009081526005602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146104e5576104b38184610a71565b73ffffffffffffffffffffffffffffffffffffffff861660009081526005602090815260408083203384529091529020555b73ffffffffffffffffffffffffffffffffffffffff85166000908152600460205260409020546105159084610a71565b73ffffffffffffffffffffffffffffffffffffffff80871660009081526004602052604080822093909355908616815220546105519084610aee565b73ffffffffffffffffffffffffffffffffffffffff80861660008181526004602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906105b29087815260200190565b60405180910390a3506001949350505050565b60006006546105d26109b5565b146105e4576105df6109ce565b905090565b5060075490565b60606001805461025590610e4b565b336000908152600460205260408120546106149083610a71565b336000908152600460205260408082209290925573ffffffffffffffffffffffffffffffffffffffff85168152205461064d9083610aee565b73ffffffffffffffffffffffffffffffffffffffff84166000818152600460205260409081902092909255905133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103409086815260200190565b42841015610715576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064016103bb565b600060016107216105c5565b73ffffffffffffffffffffffffffffffffffffffff8a16600090815260086020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928d928d928d9290919061077c83611017565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810188905260e0016040516020818303038152906040528051906020012060405160200161081d9291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa15801561087b573d6000803e3d6000fd5b5050604051601f19015191505073ffffffffffffffffffffffffffffffffffffffff8116158015906108d857508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b61093e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e455200000000000000000000000000000000000060448201526064016103bb565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526005602090815260408083208b8516808552908352928190208a90555189815291928b16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35050505050505050565b6000610b67806109c763ffffffff8216565b9250505090565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051610a00919061104f565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6610a316109b5565b604080516020810195909552840192909252606083015260808201523060a082015260c00160405160208183030381529060405280519060200120905090565b600081831015610add576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f45524332303a207375627472616374696f6e20756e646572666c6f770000000060448201526064016103bb565b610ae782846110e2565b9392505050565b600080610afb83856110f5565b905083811015610ae7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45524332303a206164646974696f6e206f766572666c6f77000000000000000060448201526064016103bb565b4690565b602081526000825180602084015260005b81811015610b995760208186018101516040868401015201610b7c565b506000604082850101526040601f19601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bdd57600080fd5b919050565b60008060408385031215610bf557600080fd5b610bfe83610bb9565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112610c4c57600080fd5b813567ffffffffffffffff811115610c6657610c66610c0c565b604051601f19603f601f19601f8501160116810181811067ffffffffffffffff82111715610c9657610c96610c0c565b604052818152838201602001851015610cae57600080fd5b816020850160208301376000918101602001919091529392505050565b803560ff81168114610bdd57600080fd5b600080600060608486031215610cf157600080fd5b833567ffffffffffffffff811115610d0857600080fd5b610d1486828701610c3b565b935050602084013567ffffffffffffffff811115610d3157600080fd5b610d3d86828701610c3b565b925050610d4c60408501610ccb565b90509250925092565b600080600060608486031215610d6a57600080fd5b610d7384610bb9565b9250610d8160208501610bb9565b929592945050506040919091013590565b600060208284031215610da457600080fd5b610ae782610bb9565b600080600080600080600060e0888a031215610dc857600080fd5b610dd188610bb9565b9650610ddf60208901610bb9565b95506040880135945060608801359350610dfb60808901610ccb565b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610e2b57600080fd5b610e3483610bb9565b9150610e4260208401610bb9565b90509250929050565b600181811c90821680610e5f57607f821691505b602082108103610e98577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f821115610ee857806000526020600020601f840160051c81016020851015610ec55750805b601f840160051c820191505b81811015610ee55760008155600101610ed1565b50505b505050565b815167ffffffffffffffff811115610f0757610f07610c0c565b610f1b81610f158454610e4b565b84610e9e565b6020601f821160018114610f6d5760008315610f375750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455610ee5565b600084815260208120601f198516915b82811015610f9d5787850151825560209485019460019092019101610f7d565b5084821015610fd957868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361104857611048610fe8565b5060010190565b600080835461105d81610e4b565b60018216801561107457600181146110a7576110d7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831686528115158202860193506110d7565b86600052602060002060005b838110156110cf578154888201526001909101906020016110b3565b505081860193505b509195945050505050565b8181038181111561034c5761034c610fe8565b8082018082111561034c5761034c610fe856fea26469706673582212204e90d1d8dd8ec2d599f9af8961e20f75b3b78e39769fe3350770227fa7f4e7d264736f6c634300081a0033"; type MockERC20ConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/MockERC721__factory.ts b/v2/types/factories/MockERC721__factory.ts index c4dadf875..b449dd9f1 100644 --- a/v2/types/factories/MockERC721__factory.ts +++ b/v2/types/factories/MockERC721__factory.ts @@ -363,7 +363,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6080604052348015600f57600080fd5b506114b88061001f6000396000f3fe6080604052600436106100dd5760003560e01c80636352211e1161007f578063a22cb46511610059578063a22cb4651461025f578063b88d4fde1461027f578063c87b56dd14610292578063e985e9c5146102b357600080fd5b80636352211e146101fc57806370a082311461021c57806395d89b411461024a57600080fd5b8063095ea7b3116100bb578063095ea7b3146101a157806323b872dd146101b657806342842e0e146101c95780634cd88b76146101dc57600080fd5b806301ffc9a7146100e257806306fdde0314610117578063081812fc14610139575b600080fd5b3480156100ee57600080fd5b506101026100fd366004610e1f565b610309565b60405190151581526020015b60405180910390f35b34801561012357600080fd5b5061012c6103ee565b60405161010e9190610ea7565b34801561014557600080fd5b5061017c610154366004610eba565b60009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010e565b6101b46101af366004610ef7565b610480565b005b6101b46101c4366004610f21565b6105cf565b6101b46101d7366004610f21565b6108c4565b3480156101e857600080fd5b506101b46101f7366004611045565b610a18565b34801561020857600080fd5b5061017c610217366004610eba565b610ace565b34801561022857600080fd5b5061023c6102373660046110ae565b610b5f565b60405190815260200161010e565b34801561025657600080fd5b5061012c610c07565b34801561026b57600080fd5b506101b461027a3660046110c9565b610c16565b6101b461028d366004611105565b610cad565b34801561029e57600080fd5b5061012c6102ad366004610eba565b50606090565b3480156102bf57600080fd5b506101026102ce366004611181565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061039c57507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806103e857507f5b5e139f000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060600080546103fd906111b4565b80601f0160208091040260200160405190810160405280929190818152602001828054610429906111b4565b80156104765780601f1061044b57610100808354040283529160200191610476565b820191906000526020600020905b81548152906001019060200180831161045957829003601f168201915b5050505050905090565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16338114806104e3575073ffffffffffffffffffffffffffffffffffffffff8116600090815260056020908152604080832033845290915290205460ff165b61054e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064015b60405180910390fd5b60008281526004602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff84811691161461065f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f57524f4e475f46524f4d000000000000000000000000000000000000000000006044820152606401610545565b73ffffffffffffffffffffffffffffffffffffffff82166106dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152606401610545565b3373ffffffffffffffffffffffffffffffffffffffff84161480610730575073ffffffffffffffffffffffffffffffffffffffff8316600090815260056020908152604080832033845290915290205460ff165b8061075e575060008181526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1633145b6107c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610545565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081208054916107f583611236565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040812080549161082b8361126b565b90915550506000818152600260209081526040808320805473ffffffffffffffffffffffffffffffffffffffff8088167fffffffffffffffffffffffff000000000000000000000000000000000000000092831681179093556004909452828520805490911690559051849391928716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6108cf8383836105cf565b813b15806109ad57506040517f150b7a020000000000000000000000000000000000000000000000000000000080825233600483015273ffffffffffffffffffffffffffffffffffffffff858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610965573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098991906112a3565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610a13576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610545565b505050565b60065460ff1615610a85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f414c52454144595f494e495449414c495a4544000000000000000000000000006044820152606401610545565b6000610a91838261130e565b506001610a9e828261130e565b5050600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905550565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610b5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152606401610545565b919050565b600073ffffffffffffffffffffffffffffffffffffffff8216610bde576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152606401610545565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6060600180546103fd906111b4565b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610cb88484846105cf565b823b1580610d8257506040517f150b7a02000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290610d1b903390899088908890600401611427565b6020604051808303816000875af1158015610d3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5e91906112a3565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610de8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610545565b50505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610e1c57600080fd5b50565b600060208284031215610e3157600080fd5b8135610e3c81610dee565b9392505050565b6000815180845260005b81811015610e6957602081850181015186830182015201610e4d565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081526000610e3c6020830184610e43565b600060208284031215610ecc57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610b5a57600080fd5b60008060408385031215610f0a57600080fd5b610f1383610ed3565b946020939093013593505050565b600080600060608486031215610f3657600080fd5b610f3f84610ed3565b9250610f4d60208501610ed3565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff841115610fa857610fa8610f5e565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff82111715610ff557610ff5610f5e565b60405283815290508082840185101561100d57600080fd5b83836020830137600060208583010152509392505050565b600082601f83011261103657600080fd5b610e3c83833560208501610f8d565b6000806040838503121561105857600080fd5b823567ffffffffffffffff81111561106f57600080fd5b61107b85828601611025565b925050602083013567ffffffffffffffff81111561109857600080fd5b6110a485828601611025565b9150509250929050565b6000602082840312156110c057600080fd5b610e3c82610ed3565b600080604083850312156110dc57600080fd5b6110e583610ed3565b9150602083013580151581146110fa57600080fd5b809150509250929050565b6000806000806080858703121561111b57600080fd5b61112485610ed3565b935061113260208601610ed3565b925060408501359150606085013567ffffffffffffffff81111561115557600080fd5b8501601f8101871361116657600080fd5b61117587823560208401610f8d565b91505092959194509250565b6000806040838503121561119457600080fd5b61119d83610ed3565b91506111ab60208401610ed3565b90509250929050565b600181811c908216806111c857607f821691505b602082108103611201577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008161124557611245611207565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361129c5761129c611207565b5060010190565b6000602082840312156112b557600080fd5b8151610e3c81610dee565b601f821115610a1357806000526020600020601f840160051c810160208510156112e75750805b601f840160051c820191505b8181101561130757600081556001016112f3565b5050505050565b815167ffffffffffffffff81111561132857611328610f5e565b61133c8161133684546111b4565b846112c0565b6020601f82116001811461138e57600083156113585750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611307565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156113dc57878501518255602094850194600190920191016113bc565b508482101561141857868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b73ffffffffffffffffffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff841660208201528260408201526080606082015260006114786080830184610e43565b969550505050505056fea2646970667358221220b6b495c9b63d00818c09eb284b3a3416b0da31aa8127423e4c3a355d7bba2eb164736f6c634300081a0033"; + "0x6080604052348015600f57600080fd5b506114b88061001f6000396000f3fe6080604052600436106100dd5760003560e01c80636352211e1161007f578063a22cb46511610059578063a22cb4651461025f578063b88d4fde1461027f578063c87b56dd14610292578063e985e9c5146102b357600080fd5b80636352211e146101fc57806370a082311461021c57806395d89b411461024a57600080fd5b8063095ea7b3116100bb578063095ea7b3146101a157806323b872dd146101b657806342842e0e146101c95780634cd88b76146101dc57600080fd5b806301ffc9a7146100e257806306fdde0314610117578063081812fc14610139575b600080fd5b3480156100ee57600080fd5b506101026100fd366004610e1f565b610309565b60405190151581526020015b60405180910390f35b34801561012357600080fd5b5061012c6103ee565b60405161010e9190610ea7565b34801561014557600080fd5b5061017c610154366004610eba565b60009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010e565b6101b46101af366004610ef7565b610480565b005b6101b46101c4366004610f21565b6105cf565b6101b46101d7366004610f21565b6108c4565b3480156101e857600080fd5b506101b46101f7366004611045565b610a18565b34801561020857600080fd5b5061017c610217366004610eba565b610ace565b34801561022857600080fd5b5061023c6102373660046110ae565b610b5f565b60405190815260200161010e565b34801561025657600080fd5b5061012c610c07565b34801561026b57600080fd5b506101b461027a3660046110c9565b610c16565b6101b461028d366004611105565b610cad565b34801561029e57600080fd5b5061012c6102ad366004610eba565b50606090565b3480156102bf57600080fd5b506101026102ce366004611181565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061039c57507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806103e857507f5b5e139f000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060600080546103fd906111b4565b80601f0160208091040260200160405190810160405280929190818152602001828054610429906111b4565b80156104765780601f1061044b57610100808354040283529160200191610476565b820191906000526020600020905b81548152906001019060200180831161045957829003601f168201915b5050505050905090565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16338114806104e3575073ffffffffffffffffffffffffffffffffffffffff8116600090815260056020908152604080832033845290915290205460ff165b61054e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064015b60405180910390fd5b60008281526004602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff84811691161461065f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f57524f4e475f46524f4d000000000000000000000000000000000000000000006044820152606401610545565b73ffffffffffffffffffffffffffffffffffffffff82166106dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152606401610545565b3373ffffffffffffffffffffffffffffffffffffffff84161480610730575073ffffffffffffffffffffffffffffffffffffffff8316600090815260056020908152604080832033845290915290205460ff165b8061075e575060008181526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1633145b6107c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610545565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081208054916107f583611236565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040812080549161082b8361126b565b90915550506000818152600260209081526040808320805473ffffffffffffffffffffffffffffffffffffffff8088167fffffffffffffffffffffffff000000000000000000000000000000000000000092831681179093556004909452828520805490911690559051849391928716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6108cf8383836105cf565b813b15806109ad57506040517f150b7a020000000000000000000000000000000000000000000000000000000080825233600483015273ffffffffffffffffffffffffffffffffffffffff858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610965573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098991906112a3565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610a13576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610545565b505050565b60065460ff1615610a85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f414c52454144595f494e495449414c495a4544000000000000000000000000006044820152606401610545565b6000610a91838261130e565b506001610a9e828261130e565b5050600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905550565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610b5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152606401610545565b919050565b600073ffffffffffffffffffffffffffffffffffffffff8216610bde576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152606401610545565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6060600180546103fd906111b4565b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610cb88484846105cf565b823b1580610d8257506040517f150b7a02000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290610d1b903390899088908890600401611427565b6020604051808303816000875af1158015610d3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5e91906112a3565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610de8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610545565b50505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610e1c57600080fd5b50565b600060208284031215610e3157600080fd5b8135610e3c81610dee565b9392505050565b6000815180845260005b81811015610e6957602081850181015186830182015201610e4d565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081526000610e3c6020830184610e43565b600060208284031215610ecc57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610b5a57600080fd5b60008060408385031215610f0a57600080fd5b610f1383610ed3565b946020939093013593505050565b600080600060608486031215610f3657600080fd5b610f3f84610ed3565b9250610f4d60208501610ed3565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff841115610fa857610fa8610f5e565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff82111715610ff557610ff5610f5e565b60405283815290508082840185101561100d57600080fd5b83836020830137600060208583010152509392505050565b600082601f83011261103657600080fd5b610e3c83833560208501610f8d565b6000806040838503121561105857600080fd5b823567ffffffffffffffff81111561106f57600080fd5b61107b85828601611025565b925050602083013567ffffffffffffffff81111561109857600080fd5b6110a485828601611025565b9150509250929050565b6000602082840312156110c057600080fd5b610e3c82610ed3565b600080604083850312156110dc57600080fd5b6110e583610ed3565b9150602083013580151581146110fa57600080fd5b809150509250929050565b6000806000806080858703121561111b57600080fd5b61112485610ed3565b935061113260208601610ed3565b925060408501359150606085013567ffffffffffffffff81111561115557600080fd5b8501601f8101871361116657600080fd5b61117587823560208401610f8d565b91505092959194509250565b6000806040838503121561119457600080fd5b61119d83610ed3565b91506111ab60208401610ed3565b90509250929050565b600181811c908216806111c857607f821691505b602082108103611201577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008161124557611245611207565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361129c5761129c611207565b5060010190565b6000602082840312156112b557600080fd5b8151610e3c81610dee565b601f821115610a1357806000526020600020601f840160051c810160208510156112e75750805b601f840160051c820191505b8181101561130757600081556001016112f3565b5050505050565b815167ffffffffffffffff81111561132857611328610f5e565b61133c8161133684546111b4565b846112c0565b6020601f82116001811461138e57600083156113585750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611307565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156113dc57878501518255602094850194600190920191016113bc565b508482101561141857868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b73ffffffffffffffffffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff841660208201528260408201526080606082015260006114786080830184610e43565b969550505050505056fea264697066735822122099247a35709cc46d2d666002ffd5468b85fdf95bb97ff065765f392a4b68498064736f6c634300081a0033"; type MockERC721ConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/ProxyAdmin__factory.ts b/v2/types/factories/ProxyAdmin__factory.ts index 4ec42b6e0..350b7421c 100644 --- a/v2/types/factories/ProxyAdmin__factory.ts +++ b/v2/types/factories/ProxyAdmin__factory.ts @@ -141,7 +141,7 @@ const _abi = [ ] as const; const _bytecode = - "0x608060405234801561001057600080fd5b5060405161068438038061068483398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610587806100fd6000396000f3fe60806040526004361061005a5760003560e01c80639623609d116100435780639623609d146100b0578063ad3cb1cc146100c3578063f2fde38b1461011957600080fd5b8063715018a61461005f5780638da5cb5b14610076575b600080fd5b34801561006b57600080fd5b50610074610139565b005b34801561008257600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100746100be366004610364565b61014d565b3480156100cf57600080fd5b5061010c6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a791906104e3565b34801561012557600080fd5b506100746101343660046104fd565b6101e2565b61014161024b565b61014b600061029e565b565b61015561024b565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101ab908690869060040161051a565b6000604051808303818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b5050505050505050565b6101ea61024b565b73ffffffffffffffffffffffffffffffffffffffff811661023f576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6102488161029e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461014b576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610236565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461024857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561037957600080fd5b833561038481610313565b9250602084013561039481610313565b9150604084013567ffffffffffffffff8111156103b057600080fd5b8401601f810186136103c157600080fd5b803567ffffffffffffffff8111156103db576103db610335565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561044757610447610335565b60405281815282820160200188101561045f57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000815180845260005b818110156104a557602081850181015186830182015201610489565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104f6602083018461047f565b9392505050565b60006020828403121561050f57600080fd5b81356104f681610313565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610549604083018461047f565b94935050505056fea2646970667358221220bfcb42a89a84dac0635a45bd4013ab76b4d822e9c9c757167dcf256da0cea66f64736f6c634300081a0033"; + "0x608060405234801561001057600080fd5b5060405161068438038061068483398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610587806100fd6000396000f3fe60806040526004361061005a5760003560e01c80639623609d116100435780639623609d146100b0578063ad3cb1cc146100c3578063f2fde38b1461011957600080fd5b8063715018a61461005f5780638da5cb5b14610076575b600080fd5b34801561006b57600080fd5b50610074610139565b005b34801561008257600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100746100be366004610364565b61014d565b3480156100cf57600080fd5b5061010c6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a791906104e3565b34801561012557600080fd5b506100746101343660046104fd565b6101e2565b61014161024b565b61014b600061029e565b565b61015561024b565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101ab908690869060040161051a565b6000604051808303818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b5050505050505050565b6101ea61024b565b73ffffffffffffffffffffffffffffffffffffffff811661023f576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6102488161029e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461014b576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610236565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461024857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561037957600080fd5b833561038481610313565b9250602084013561039481610313565b9150604084013567ffffffffffffffff8111156103b057600080fd5b8401601f810186136103c157600080fd5b803567ffffffffffffffff8111156103db576103db610335565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561044757610447610335565b60405281815282820160200188101561045f57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000815180845260005b818110156104a557602081850181015186830182015201610489565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104f6602083018461047f565b9392505050565b60006020828403121561050f57600080fd5b81356104f681610313565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610549604083018461047f565b94935050505056fea2646970667358221220cc8bbfd5df3920285befce3b27271fc70ad0dfb073ae2b9db9df8353b1cc6fff64736f6c634300081a0033"; type ProxyAdminConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/ReceiverEVM__factory.ts b/v2/types/factories/ReceiverEVM__factory.ts index 66aec4292..176bf92df 100644 --- a/v2/types/factories/ReceiverEVM__factory.ts +++ b/v2/types/factories/ReceiverEVM__factory.ts @@ -395,7 +395,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6080604052348015600f57600080fd5b506001600055610e9e806100246000396000f3fe60806040526004361061006e5760003560e01c8063c51316911161004b578063c5131691146100d5578063c9028a36146100f5578063e04d4f9714610115578063f05b6abf1461012857005b8063357fc5a214610077578063676cc054146100975780636ed70169146100c057005b3661007557005b005b34801561008357600080fd5b506100756100923660046106ec565b610148565b6100aa6100a5366004610728565b6101de565b6040516100b79190610823565b60405180910390f35b3480156100cc57600080fd5b50610075610222565b3480156100e157600080fd5b506100756100f03660046106ec565b610257565b34801561010157600080fd5b50610075610110366004610836565b610332565b610075610123366004610996565b61036e565b34801561013457600080fd5b50610075610143366004610a82565b6103b2565b6101506103e7565b61017273ffffffffffffffffffffffffffffffffffffffff831633838661042a565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101d96001600055565b505050565b6040516060907f3658b46bab672c7672b69c2f0feda706eabdb7d2231421c96e9049b2db5e7eee90600090a1506040805160208101909152600081525b9392505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b61025f6103e7565b600061026c600285610b6c565b9050806000036102a8576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102ca73ffffffffffffffffffffffffffffffffffffffff841633848461042a565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101d96001600055565b7f689a5a5cb55e795ffe4cd8b419cd3bb0a3373974c54d25f64e734d7388b93e9b3382604051610363929190610bf0565b60405180910390a150565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa33348585856040516103a5959493929190610ce2565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103a59493929190610d6c565b600260005403610423576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526104bf9085906104c5565b50505050565b60006104e773ffffffffffffffffffffffffffffffffffffffff841683610560565b9050805160001415801561050c57508080602001905181019061050a9190610e2f565b155b156101d9576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061021b83836000846000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105939190610e4c565b60006040518083038185875af1925050503d80600081146105d0576040519150601f19603f3d011682016040523d82523d6000602084013e6105d5565b606091505b50915091506105e58683836105ef565b9695505050505050565b606082610604576105ff8261067e565b61021b565b8151158015610628575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610677576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610557565b508061021b565b80511561068e5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106e757600080fd5b919050565b60008060006060848603121561070157600080fd5b83359250610711602085016106c3565b915061071f604085016106c3565b90509250925092565b6000806000838503604081121561073e57600080fd5b602081121561074c57600080fd5b50839250602084013567ffffffffffffffff81111561076a57600080fd5b8401601f8101861361077b57600080fd5b803567ffffffffffffffff81111561079257600080fd5b8660208284010111156107a457600080fd5b939660209190910195509293505050565b60005b838110156107d05781810151838201526020016107b8565b50506000910152565b600081518084526107f18160208601602086016107b5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061021b60208301846107d9565b60006020828403121561084857600080fd5b813567ffffffffffffffff81111561085f57600080fd5b82016080818503121561021b57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156108e7576108e7610871565b604052919050565b600082601f83011261090057600080fd5b813567ffffffffffffffff81111561091a5761091a610871565b61094b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016108a0565b81815284602083860101111561096057600080fd5b816020850160208301376000918101602001919091529392505050565b80151581146106c057600080fd5b80356106e78161097d565b6000806000606084860312156109ab57600080fd5b833567ffffffffffffffff8111156109c257600080fd5b6109ce868287016108ef565b9350506020840135915060408401356109e68161097d565b809150509250925092565b600067ffffffffffffffff821115610a0b57610a0b610871565b5060051b60200190565b600082601f830112610a2657600080fd5b8135610a39610a34826109f1565b6108a0565b8082825260208201915060208360051b860101925085831115610a5b57600080fd5b602085015b83811015610a78578035835260209283019201610a60565b5095945050505050565b600080600060608486031215610a9757600080fd5b833567ffffffffffffffff811115610aae57600080fd5b8401601f81018613610abf57600080fd5b8035610acd610a34826109f1565b8082825260208201915060208360051b850101925088831115610aef57600080fd5b602084015b83811015610b3157803567ffffffffffffffff811115610b1357600080fd5b610b228b6020838901016108ef565b84525060209283019201610af4565b509550505050602084013567ffffffffffffffff811115610b5157600080fd5b610b5d86828701610a15565b92505061071f6040850161098b565b600082610ba2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015273ffffffffffffffffffffffffffffffffffffffff610c2e836106c3565b16604082015273ffffffffffffffffffffffffffffffffffffffff610c55602084016106c3565b166060820152600080604084013590508060808401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610ca157600080fd5b830160208101903567ffffffffffffffff811115610cbe57600080fd5b803603821315610ccd57600080fd5b608060a08501526105e560c085018284610ba7565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610d1760a08301866107d9565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610d62578151865260209586019590910190600101610d44565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610dff577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610dea8583516107d9565b94506020938401939190910190600101610db0565b505050508281036040840152610e158186610d30565b915050610e26606083018415159052565b95945050505050565b600060208284031215610e4157600080fd5b815161021b8161097d565b60008251610e5e8184602087016107b5565b919091019291505056fea2646970667358221220dbbcdb2ae8ea201fd0567f815d9a6ce082b3a1b6ed3f6fce312e955f9aa11e1364736f6c634300081a0033"; + "0x6080604052348015600f57600080fd5b506001600055610e9e806100246000396000f3fe60806040526004361061006e5760003560e01c8063c51316911161004b578063c5131691146100d5578063c9028a36146100f5578063e04d4f9714610115578063f05b6abf1461012857005b8063357fc5a214610077578063676cc054146100975780636ed70169146100c057005b3661007557005b005b34801561008357600080fd5b506100756100923660046106ec565b610148565b6100aa6100a5366004610728565b6101de565b6040516100b79190610823565b60405180910390f35b3480156100cc57600080fd5b50610075610222565b3480156100e157600080fd5b506100756100f03660046106ec565b610257565b34801561010157600080fd5b50610075610110366004610836565b610332565b610075610123366004610996565b61036e565b34801561013457600080fd5b50610075610143366004610a82565b6103b2565b6101506103e7565b61017273ffffffffffffffffffffffffffffffffffffffff831633838661042a565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101d96001600055565b505050565b6040516060907f3658b46bab672c7672b69c2f0feda706eabdb7d2231421c96e9049b2db5e7eee90600090a1506040805160208101909152600081525b9392505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b61025f6103e7565b600061026c600285610b6c565b9050806000036102a8576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102ca73ffffffffffffffffffffffffffffffffffffffff841633848461042a565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101d96001600055565b7f689a5a5cb55e795ffe4cd8b419cd3bb0a3373974c54d25f64e734d7388b93e9b3382604051610363929190610bf0565b60405180910390a150565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa33348585856040516103a5959493929190610ce2565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103a59493929190610d6c565b600260005403610423576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526104bf9085906104c5565b50505050565b60006104e773ffffffffffffffffffffffffffffffffffffffff841683610560565b9050805160001415801561050c57508080602001905181019061050a9190610e2f565b155b156101d9576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061021b83836000846000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105939190610e4c565b60006040518083038185875af1925050503d80600081146105d0576040519150601f19603f3d011682016040523d82523d6000602084013e6105d5565b606091505b50915091506105e58683836105ef565b9695505050505050565b606082610604576105ff8261067e565b61021b565b8151158015610628575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610677576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610557565b508061021b565b80511561068e5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106e757600080fd5b919050565b60008060006060848603121561070157600080fd5b83359250610711602085016106c3565b915061071f604085016106c3565b90509250925092565b6000806000838503604081121561073e57600080fd5b602081121561074c57600080fd5b50839250602084013567ffffffffffffffff81111561076a57600080fd5b8401601f8101861361077b57600080fd5b803567ffffffffffffffff81111561079257600080fd5b8660208284010111156107a457600080fd5b939660209190910195509293505050565b60005b838110156107d05781810151838201526020016107b8565b50506000910152565b600081518084526107f18160208601602086016107b5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061021b60208301846107d9565b60006020828403121561084857600080fd5b813567ffffffffffffffff81111561085f57600080fd5b82016080818503121561021b57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156108e7576108e7610871565b604052919050565b600082601f83011261090057600080fd5b813567ffffffffffffffff81111561091a5761091a610871565b61094b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016108a0565b81815284602083860101111561096057600080fd5b816020850160208301376000918101602001919091529392505050565b80151581146106c057600080fd5b80356106e78161097d565b6000806000606084860312156109ab57600080fd5b833567ffffffffffffffff8111156109c257600080fd5b6109ce868287016108ef565b9350506020840135915060408401356109e68161097d565b809150509250925092565b600067ffffffffffffffff821115610a0b57610a0b610871565b5060051b60200190565b600082601f830112610a2657600080fd5b8135610a39610a34826109f1565b6108a0565b8082825260208201915060208360051b860101925085831115610a5b57600080fd5b602085015b83811015610a78578035835260209283019201610a60565b5095945050505050565b600080600060608486031215610a9757600080fd5b833567ffffffffffffffff811115610aae57600080fd5b8401601f81018613610abf57600080fd5b8035610acd610a34826109f1565b8082825260208201915060208360051b850101925088831115610aef57600080fd5b602084015b83811015610b3157803567ffffffffffffffff811115610b1357600080fd5b610b228b6020838901016108ef565b84525060209283019201610af4565b509550505050602084013567ffffffffffffffff811115610b5157600080fd5b610b5d86828701610a15565b92505061071f6040850161098b565b600082610ba2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015273ffffffffffffffffffffffffffffffffffffffff610c2e836106c3565b16604082015273ffffffffffffffffffffffffffffffffffffffff610c55602084016106c3565b166060820152600080604084013590508060808401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610ca157600080fd5b830160208101903567ffffffffffffffff811115610cbe57600080fd5b803603821315610ccd57600080fd5b608060a08501526105e560c085018284610ba7565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610d1760a08301866107d9565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610d62578151865260209586019590910190600101610d44565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610dff577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610dea8583516107d9565b94506020938401939190910190600101610db0565b505050508281036040840152610e158186610d30565b915050610e26606083018415159052565b95945050505050565b600060208284031215610e4157600080fd5b815161021b8161097d565b60008251610e5e8184602087016107b5565b919091019291505056fea26469706673582212200121b4788f0b35a4b6df21db4f43708a9b20e8b16f616e6f3300230e75bbdd1364736f6c634300081a0033"; type ReceiverEVMConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/SafeERC20__factory.ts b/v2/types/factories/SafeERC20__factory.ts index 9a853e693..bccd3d1ba 100644 --- a/v2/types/factories/SafeERC20__factory.ts +++ b/v2/types/factories/SafeERC20__factory.ts @@ -47,7 +47,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d1e8ca78c7d9a8f7956969bf9e18a306c7fbad4315793a417432f76f34b799d864736f6c634300081a0033"; + "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202905cd55850035ea20b97ad43d92b09d94f8c95b651a8733a0f08394084a88ec64736f6c634300081a0033"; type SafeERC20ConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/SenderZEVM__factory.ts b/v2/types/factories/SenderZEVM__factory.ts index 4bc779c18..7bcf9d5b0 100644 --- a/v2/types/factories/SenderZEVM__factory.ts +++ b/v2/types/factories/SenderZEVM__factory.ts @@ -120,7 +120,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6080604052348015600f57600080fd5b50604051610aa9380380610aa9833981016040819052602c916050565b600080546001600160a01b0319166001600160a01b0392909216919091179055607e565b600060208284031215606157600080fd5b81516001600160a01b0381168114607757600080fd5b9392505050565b610a1c8061008d6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b5780637a34d8bb146100a4575b600080fd5b610059610054366004610658565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b23660046106f8565b61032a565b60008383836040516024016100ce939291906107f4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490915073ffffffffffffffffffffffffffffffffffffffff8087169163095ea7b3911661017589600261081e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016020604051808303816000875af11580156101e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610209919061085e565b61023f576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160a081018252610321808252600160208084018290528385019290925283518083018552600080825260608501919091526080840181905284518086018652918252918101829052905492517f7b15118b0000000000000000000000000000000000000000000000000000000081529192909173ffffffffffffffffffffffffffffffffffffffff90911690637b15118b906102ed908c908c908c90899088908a906004016108f7565b600060405180830381600087803b15801561030757600080fd5b505af115801561031b573d6000803e3d6000fd5b50505050505050505050505050565b6000838383604051602401610341939291906107f4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f9700000000000000000000000000000000000000000000000000000000179052815160a081018352610321808252600182840181905282850191909152835180840185526000808252606084019190915260808301819052845180860186528281529384018190525493517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9485166004820152602481019190915293945092909188169063095ea7b3906044016020604051808303816000875af115801561047c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a0919061085e565b506000546040517f06cb898300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906306cb8983906104ff908b908b90889087908990600401610972565b600060405180830381600087803b15801561051957600080fd5b505af115801561052d573d6000803e3d6000fd5b505050505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261057b57600080fd5b81356020830160008067ffffffffffffffff84111561059c5761059c61053b565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff821117156105e9576105e961053b565b60405283815290508082840187101561060157600080fd5b838360208301376000602085830101528094505050505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461064257600080fd5b919050565b801515811461065557600080fd5b50565b60008060008060008060c0878903121561067157600080fd5b863567ffffffffffffffff81111561068857600080fd5b61069489828a0161056a565b965050602087013594506106aa6040880161061e565b9350606087013567ffffffffffffffff8111156106c657600080fd5b6106d289828a0161056a565b9350506080870135915060a08701356106ea81610647565b809150509295509295509295565b600080600080600060a0868803121561071057600080fd5b853567ffffffffffffffff81111561072757600080fd5b6107338882890161056a565b9550506107426020870161061e565b9350604086013567ffffffffffffffff81111561075e57600080fd5b61076a8882890161056a565b93505060608601359150608086013561078281610647565b809150509295509295909350565b6000815180845260005b818110156107b65760208185018101518683018201520161079a565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6060815260006108076060830186610790565b602083019490945250901515604090910152919050565b80820180821115610858577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b60006020828403121561087057600080fd5b815161087b81610647565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff815116825260208101511515602083015273ffffffffffffffffffffffffffffffffffffffff60408201511660408301526000606082015160a060608501526108e360a0850182610790565b608093840151949093019390935250919050565b60e08152600061090a60e0830189610790565b87602084015273ffffffffffffffffffffffffffffffffffffffff87166040840152828103606084015261093e8187610790565b855160808501526020860151151560a0850152905082810360c08401526109658185610882565b9998505050505050505050565b60c08152600061098560c0830188610790565b73ffffffffffffffffffffffffffffffffffffffff8716602084015282810360408401526109b38187610790565b85516060850152602086015115156080850152905082810360a08401526109da8185610882565b9897505050505050505056fea2646970667358221220d2d83917c03bf0724d6e5650a4d115d95ab995c626c4ba36ed34f13ed6ed06a964736f6c634300081a0033"; + "0x6080604052348015600f57600080fd5b50604051610aa9380380610aa9833981016040819052602c916050565b600080546001600160a01b0319166001600160a01b0392909216919091179055607e565b600060208284031215606157600080fd5b81516001600160a01b0381168114607757600080fd5b9392505050565b610a1c8061008d6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b5780637a34d8bb146100a4575b600080fd5b610059610054366004610658565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b23660046106f8565b61032a565b60008383836040516024016100ce939291906107f4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490915073ffffffffffffffffffffffffffffffffffffffff8087169163095ea7b3911661017589600261081e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016020604051808303816000875af11580156101e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610209919061085e565b61023f576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160a081018252610321808252600160208084018290528385019290925283518083018552600080825260608501919091526080840181905284518086018652918252918101829052905492517f7b15118b0000000000000000000000000000000000000000000000000000000081529192909173ffffffffffffffffffffffffffffffffffffffff90911690637b15118b906102ed908c908c908c90899088908a906004016108f7565b600060405180830381600087803b15801561030757600080fd5b505af115801561031b573d6000803e3d6000fd5b50505050505050505050505050565b6000838383604051602401610341939291906107f4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f9700000000000000000000000000000000000000000000000000000000179052815160a081018352610321808252600182840181905282850191909152835180840185526000808252606084019190915260808301819052845180860186528281529384018190525493517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9485166004820152602481019190915293945092909188169063095ea7b3906044016020604051808303816000875af115801561047c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a0919061085e565b506000546040517f06cb898300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906306cb8983906104ff908b908b90889087908990600401610972565b600060405180830381600087803b15801561051957600080fd5b505af115801561052d573d6000803e3d6000fd5b505050505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261057b57600080fd5b81356020830160008067ffffffffffffffff84111561059c5761059c61053b565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff821117156105e9576105e961053b565b60405283815290508082840187101561060157600080fd5b838360208301376000602085830101528094505050505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461064257600080fd5b919050565b801515811461065557600080fd5b50565b60008060008060008060c0878903121561067157600080fd5b863567ffffffffffffffff81111561068857600080fd5b61069489828a0161056a565b965050602087013594506106aa6040880161061e565b9350606087013567ffffffffffffffff8111156106c657600080fd5b6106d289828a0161056a565b9350506080870135915060a08701356106ea81610647565b809150509295509295509295565b600080600080600060a0868803121561071057600080fd5b853567ffffffffffffffff81111561072757600080fd5b6107338882890161056a565b9550506107426020870161061e565b9350604086013567ffffffffffffffff81111561075e57600080fd5b61076a8882890161056a565b93505060608601359150608086013561078281610647565b809150509295509295909350565b6000815180845260005b818110156107b65760208185018101518683018201520161079a565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6060815260006108076060830186610790565b602083019490945250901515604090910152919050565b80820180821115610858577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b60006020828403121561087057600080fd5b815161087b81610647565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff815116825260208101511515602083015273ffffffffffffffffffffffffffffffffffffffff60408201511660408301526000606082015160a060608501526108e360a0850182610790565b608093840151949093019390935250919050565b60e08152600061090a60e0830189610790565b87602084015273ffffffffffffffffffffffffffffffffffffffff87166040840152828103606084015261093e8187610790565b855160808501526020860151151560a0850152905082810360c08401526109658185610882565b9998505050505050505050565b60c08152600061098560c0830188610790565b73ffffffffffffffffffffffffffffffffffffffff8716602084015282810360408401526109b38187610790565b85516060850152602086015115156080850152905082810360a08401526109da8185610882565b9897505050505050505056fea2646970667358221220d537d7a8149cdb3025211768bab067e858b4bd38e69fcb1bfba3dec8b144f23764736f6c634300081a0033"; type SenderZEVMConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/StdError.sol/StdError__factory.ts b/v2/types/factories/StdError.sol/StdError__factory.ts index b99cdace1..d2a33ecfb 100644 --- a/v2/types/factories/StdError.sol/StdError__factory.ts +++ b/v2/types/factories/StdError.sol/StdError__factory.ts @@ -132,7 +132,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6102c9610039600b82828239805160001a607314602c57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100ad5760003560e01c8063986c5f6811610080578063b67689da11610065578063b67689da146100f8578063d160e4de14610100578063fa784a441461010857600080fd5b8063986c5f68146100e8578063b22dc54d146100f057600080fd5b806305ee8612146100b257806310332977146100d05780631de45560146100d85780638995290f146100e0575b600080fd5b6100ba610110565b6040516100c79190610227565b60405180910390f35b6100ba610197565b6100ba6101a9565b6100ba6101bb565b6100ba6101cd565b6100ba6101df565b6100ba6101f1565b6100ba610203565b6100ba610215565b604051603260248201526044015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f4e487b710000000000000000000000000000000000000000000000000000000017905281565b6040516001602482015260440161011e565b6040516021602482015260440161011e565b6040516011602482015260440161011e565b6040516041602482015260440161011e565b6040516031602482015260440161011e565b6040516051602482015260440161011e565b6040516022602482015260440161011e565b6040516012602482015260440161011e565b602081526000825180602084015260005b818110156102555760208186018101516040868401015201610238565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168401019150509291505056fea26469706673582212207fb7cfabfc66edcd3015bba7f9f51fdd2883c3b6db832f21033426e3c6440d1e64736f6c634300081a0033"; + "0x6102c9610039600b82828239805160001a607314602c57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100ad5760003560e01c8063986c5f6811610080578063b67689da11610065578063b67689da146100f8578063d160e4de14610100578063fa784a441461010857600080fd5b8063986c5f68146100e8578063b22dc54d146100f057600080fd5b806305ee8612146100b257806310332977146100d05780631de45560146100d85780638995290f146100e0575b600080fd5b6100ba610110565b6040516100c79190610227565b60405180910390f35b6100ba610197565b6100ba6101a9565b6100ba6101bb565b6100ba6101cd565b6100ba6101df565b6100ba6101f1565b6100ba610203565b6100ba610215565b604051603260248201526044015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f4e487b710000000000000000000000000000000000000000000000000000000017905281565b6040516001602482015260440161011e565b6040516021602482015260440161011e565b6040516011602482015260440161011e565b6040516041602482015260440161011e565b6040516031602482015260440161011e565b6040516051602482015260440161011e565b6040516022602482015260440161011e565b6040516012602482015260440161011e565b602081526000825180602084015260005b818110156102555760208186018101516040868401015201610238565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168401019150509291505056fea26469706673582212205a231584a6f904510d30e1e9640c6ee4f02df82512523f20aa2706966fcef00364736f6c634300081a0033"; type StdErrorConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/StdStorage.sol/StdStorageSafe__factory.ts b/v2/types/factories/StdStorage.sol/StdStorageSafe__factory.ts index 767d6c3ff..8663da450 100644 --- a/v2/types/factories/StdStorage.sol/StdStorageSafe__factory.ts +++ b/v2/types/factories/StdStorage.sol/StdStorageSafe__factory.ts @@ -68,7 +68,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206f64b7e1dbbc6026c24d52f1fa6a0ced3aba89a87747eea738880443683416a864736f6c634300081a0033"; + "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200300b2a3fefbb75d98e75f1192239d81ef17eec1b8e4e59220733faaf4ff33ab64736f6c634300081a0033"; type StdStorageSafeConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/Strings__factory.ts b/v2/types/factories/Strings__factory.ts index 9df193adb..ab56f556b 100644 --- a/v2/types/factories/Strings__factory.ts +++ b/v2/types/factories/Strings__factory.ts @@ -31,7 +31,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204d82302a12b7f0a06328a3c9a77ba505da0c3bcc1aaa5d00f99298af997827de64736f6c634300081a0033"; + "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122054df1ae034bd3cf22b4b583f6a2b4432114d224f44ffb3b28e5f3c6323e3e27f64736f6c634300081a0033"; type StringsConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/SystemContract.sol/SystemContract__factory.ts b/v2/types/factories/SystemContract.sol/SystemContract__factory.ts index 7c2043bf9..0070ba882 100644 --- a/v2/types/factories/SystemContract.sol/SystemContract__factory.ts +++ b/v2/types/factories/SystemContract.sol/SystemContract__factory.ts @@ -439,7 +439,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea2646970667358221220eaa287ea22d82335c1d97ef661cb17f1296902daa41cca34de107966248e954364736f6c634300081a0033"; + "0x60c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea2646970667358221220b13ccf97234dc9b7f658234f9bf37a57d08f465bb99c431b865174e7a399a30764736f6c634300081a0033"; type SystemContractConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/SystemContractMock.sol/SystemContractMock__factory.ts b/v2/types/factories/SystemContractMock.sol/SystemContractMock__factory.ts index e8346ce8e..1d22ac788 100644 --- a/v2/types/factories/SystemContractMock.sol/SystemContractMock__factory.ts +++ b/v2/types/factories/SystemContractMock.sol/SystemContractMock__factory.ts @@ -342,7 +342,7 @@ const _abi = [ ] as const; const _bytecode = - "0x608060405234801561001057600080fd5b50604051610b3f380380610b3f83398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a348061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fd565b6103a0565b6101416101da36600461081f565b610419565b6101046101ed366004610841565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610884565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108b0565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e90610366908490899089908990899060040161091b565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff8111156107b257600080fd5b8601601f810188136107c357600080fd5b803567ffffffffffffffff8111156107da57600080fd5b8860208284010111156107ec57600080fd5b959894975092955050506020019190565b60006020828403121561080f57600080fd5b61081882610737565b9392505050565b6000806040838503121561083257600080fd5b50508035926020909101359150565b60008060006060848603121561085657600080fd5b61085f84610737565b925061086d60208501610737565b915061087b60408501610737565b90509250925092565b6000806040838503121561089757600080fd5b823591506108a760208401610737565b90509250929050565b6000602082840312156108c257600080fd5b8151801515811461081857600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610953576020818401810151610100878401015201610935565b5060008482016101000152602089015173ffffffffffffffffffffffffffffffffffffffff811660a0860152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168401915050604088015160c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401526101008382030160608401526109f2610100820185876108d2565b9897505050505050505056fea2646970667358221220eb281f71b1a10df3d88243dcf9e9ff7f57e8f4bc6018408c57e8ef3bb671313d64736f6c634300081a0033"; + "0x608060405234801561001057600080fd5b50604051610b3f380380610b3f83398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a348061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fd565b6103a0565b6101416101da36600461081f565b610419565b6101046101ed366004610841565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610884565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108b0565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e90610366908490899089908990899060040161091b565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff8111156107b257600080fd5b8601601f810188136107c357600080fd5b803567ffffffffffffffff8111156107da57600080fd5b8860208284010111156107ec57600080fd5b959894975092955050506020019190565b60006020828403121561080f57600080fd5b61081882610737565b9392505050565b6000806040838503121561083257600080fd5b50508035926020909101359150565b60008060006060848603121561085657600080fd5b61085f84610737565b925061086d60208501610737565b915061087b60408501610737565b90509250925092565b6000806040838503121561089757600080fd5b823591506108a760208401610737565b90509250929050565b6000602082840312156108c257600080fd5b8151801515811461081857600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610953576020818401810151610100878401015201610935565b5060008482016101000152602089015173ffffffffffffffffffffffffffffffffffffffff811660a0860152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168401915050604088015160c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401526101008382030160608401526109f2610100820185876108d2565b9897505050505050505056fea26469706673582212201600a256a4ffaaa4ceb3b81d9f67be9d8f33665245b35eeba52fdc70200176a764736f6c634300081a0033"; type SystemContractMockConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/TestERC20__factory.ts b/v2/types/factories/TestERC20__factory.ts index eec6897e7..5410c45c0 100644 --- a/v2/types/factories/TestERC20__factory.ts +++ b/v2/types/factories/TestERC20__factory.ts @@ -357,7 +357,7 @@ const _abi = [ ] as const; const _bytecode = - "0x608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212205f76808fb3dc6dacf4bd766b2d0bf9d6beb64856c952cec8e267368511bd936a64736f6c634300081a0033"; + "0x608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220a043c41353215fce25ecb67a8a4f6f724aaa86dea8dcb0a6975bfb1f10ff3beb64736f6c634300081a0033"; type TestERC20ConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/TestUniversalContract__factory.ts b/v2/types/factories/TestUniversalContract__factory.ts index 16d692e93..c16224271 100644 --- a/v2/types/factories/TestUniversalContract__factory.ts +++ b/v2/types/factories/TestUniversalContract__factory.ts @@ -178,7 +178,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6080604052348015600f57600080fd5b5061061b8061001f6000396000f3fe60806040526004361061002a5760003560e01c80635bcfd61614610033578063c9028a361461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e366004610151565b610073565b34801561005f57600080fd5b5061003161006e36600461020e565b6100ee565b6060811561008a576100878284018461027f565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610375565b6100c560408a0160208b016103e1565b896040013533866040516100de96959493929190610445565b60405180910390a1505050505050565b7fd75bb509c8f32a725aac99ac5c4541060dbfb889a3aca8314d6f00395618c4c48160405161011d9190610507565b60405180910390a150565b803573ffffffffffffffffffffffffffffffffffffffff8116811461014c57600080fd5b919050565b60008060008060006080868803121561016957600080fd5b853567ffffffffffffffff81111561018057600080fd5b86016060818903121561019257600080fd5b94506101a060208701610128565b935060408601359250606086013567ffffffffffffffff8111156101c357600080fd5b8601601f810188136101d457600080fd5b803567ffffffffffffffff8111156101eb57600080fd5b8860208284010111156101fd57600080fd5b959894975092955050506020019190565b60006020828403121561022057600080fd5b813567ffffffffffffffff81111561023757600080fd5b82016080818503121561024957600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561029157600080fd5b813567ffffffffffffffff8111156102a857600080fd5b8201601f810184136102b957600080fd5b803567ffffffffffffffff8111156102d3576102d3610250565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033f5761033f610250565b60405281815282820160200186101561035757600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126103aa57600080fd5b83018035915067ffffffffffffffff8211156103c557600080fd5b6020019150368190038213156103da57600080fd5b9250929050565b6000602082840312156103f357600080fd5b61024982610128565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60a08152600061045960a08301888a6103fc565b73ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff851660608401528281036080840152835180825260005b818110156104c3576020818701810151848301820152016104a7565b5060006020828401015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011683010192505050979650505050505050565b6020815273ffffffffffffffffffffffffffffffffffffffff61052983610128565b16602082015273ffffffffffffffffffffffffffffffffffffffff61055060208401610128565b166040820152600080604084013590508060608401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261059c57600080fd5b830160208101903567ffffffffffffffff8111156105b957600080fd5b8036038213156105c857600080fd5b6080808501526105dc60a0850182846103fc565b9594505050505056fea264697066735822122097b135946b5f8ffb91b019442462dc27864bb547c0a533c3cc3e01dd4abecc7964736f6c634300081a0033"; + "0x6080604052348015600f57600080fd5b5061061b8061001f6000396000f3fe60806040526004361061002a5760003560e01c80635bcfd61614610033578063c9028a361461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e366004610151565b610073565b34801561005f57600080fd5b5061003161006e36600461020e565b6100ee565b6060811561008a576100878284018461027f565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610375565b6100c560408a0160208b016103e1565b896040013533866040516100de96959493929190610445565b60405180910390a1505050505050565b7fd75bb509c8f32a725aac99ac5c4541060dbfb889a3aca8314d6f00395618c4c48160405161011d9190610507565b60405180910390a150565b803573ffffffffffffffffffffffffffffffffffffffff8116811461014c57600080fd5b919050565b60008060008060006080868803121561016957600080fd5b853567ffffffffffffffff81111561018057600080fd5b86016060818903121561019257600080fd5b94506101a060208701610128565b935060408601359250606086013567ffffffffffffffff8111156101c357600080fd5b8601601f810188136101d457600080fd5b803567ffffffffffffffff8111156101eb57600080fd5b8860208284010111156101fd57600080fd5b959894975092955050506020019190565b60006020828403121561022057600080fd5b813567ffffffffffffffff81111561023757600080fd5b82016080818503121561024957600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561029157600080fd5b813567ffffffffffffffff8111156102a857600080fd5b8201601f810184136102b957600080fd5b803567ffffffffffffffff8111156102d3576102d3610250565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033f5761033f610250565b60405281815282820160200186101561035757600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126103aa57600080fd5b83018035915067ffffffffffffffff8211156103c557600080fd5b6020019150368190038213156103da57600080fd5b9250929050565b6000602082840312156103f357600080fd5b61024982610128565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60a08152600061045960a08301888a6103fc565b73ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff851660608401528281036080840152835180825260005b818110156104c3576020818701810151848301820152016104a7565b5060006020828401015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011683010192505050979650505050505050565b6020815273ffffffffffffffffffffffffffffffffffffffff61052983610128565b16602082015273ffffffffffffffffffffffffffffffffffffffff61055060208401610128565b166040820152600080604084013590508060608401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261059c57600080fd5b830160208101903567ffffffffffffffff8111156105b957600080fd5b8036038213156105c857600080fd5b6080808501526105dc60a0850182846103fc565b9594505050505056fea264697066735822122034d8711688fa0746c516ebf736804e86c9e1dad5e64788e702413ad1a8eb9ff164736f6c634300081a0033"; type TestUniversalContractConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy__factory.ts b/v2/types/factories/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy__factory.ts index b4764a6e6..841cadf63 100644 --- a/v2/types/factories/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy__factory.ts +++ b/v2/types/factories/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy__factory.ts @@ -129,7 +129,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a060405260405161117a38038061117a8339810160408190526100229161039d565b828161002e828261008f565b50508160405161003d9061033a565b6001600160a01b039091168152602001604051809103906000f080158015610069573d6000803e3d6000fd5b506001600160a01b031660805261008761008260805190565b6100ee565b50505061048f565b6100988261015c565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156100e2576100dd82826101db565b505050565b6100ea610252565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61012e60008051602061115a833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161015981610273565b50565b806001600160a01b03163b60000361019757604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080846001600160a01b0316846040516101f89190610473565b600060405180830381855af49150503d8060008114610233576040519150601f19603f3d011682016040523d82523d6000602084013e610238565b606091505b5090925090506102498583836102b2565b95945050505050565b34156102715760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661029d57604051633173bdd160e11b81526000600482015260240161018e565b8060008051602061115a8339815191526101ba565b6060826102c7576102c282610311565b61030a565b81511580156102de57506001600160a01b0384163b155b1561030757604051639996b31560e01b81526001600160a01b038516600482015260240161018e565b50805b9392505050565b8051156103215780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b61068480610ad683390190565b80516001600160a01b038116811461035e57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561039457818101518382015260200161037c565b50506000910152565b6000806000606084860312156103b257600080fd5b6103bb84610347565b92506103c960208501610347565b60408501519092506001600160401b038111156103e557600080fd5b8401601f810186136103f657600080fd5b80516001600160401b0381111561040f5761040f610363565b604051601f8201601f19908116603f011681016001600160401b038111828210171561043d5761043d610363565b60405281815282820160200188101561045557600080fd5b610466826020830160208601610379565b8093505050509250925092565b60008251610485818460208701610379565b9190910192915050565b60805161062d6104a960003960006010015261062d6000f3fe608060405261000c61000e565b005b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633036100d2576000357fffffffff00000000000000000000000000000000000000000000000000000000167f4f1ef28600000000000000000000000000000000000000000000000000000000146100c8576040517fd2b576ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100d06100da565b565b6100d0610109565b6000806100ea366004818461044d565b8101906100f791906104a6565b915091506101058282610119565b5050565b6100d0610114610181565b6101c6565b610122826101ea565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156101795761017482826102be565b505050565b610105610341565b60006101c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e8080156101e5573d6000f35b3d6000fd5b8073ffffffffffffffffffffffffffffffffffffffff163b600003610258576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60606000808473ffffffffffffffffffffffffffffffffffffffff16846040516102e891906105c8565b600060405180830381855af49150503d8060008114610323576040519150601f19603f3d011682016040523d82523d6000602084013e610328565b606091505b5091509150610338858383610379565b95945050505050565b34156100d0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261038e576103898261040b565b610404565b81511580156103b2575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610401576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161024f565b50805b9392505050565b80511561041b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808585111561045d57600080fd5b8386111561046a57600080fd5b5050820193919092039150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156104b957600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104dd57600080fd5b9150602083013567ffffffffffffffff8111156104f957600080fd5b8301601f8101851361050a57600080fd5b803567ffffffffffffffff81111561052457610524610477565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561059057610590610477565b6040528181528282016020018710156105a857600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000825160005b818110156105e957602081860181015185830152016105cf565b50600092019182525091905056fea2646970667358221220a4ebc0057fc296295a495e12fd7b1928a56a5810665ef2dd8b0464323df419c964736f6c634300081a0033608060405234801561001057600080fd5b5060405161068438038061068483398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610587806100fd6000396000f3fe60806040526004361061005a5760003560e01c80639623609d116100435780639623609d146100b0578063ad3cb1cc146100c3578063f2fde38b1461011957600080fd5b8063715018a61461005f5780638da5cb5b14610076575b600080fd5b34801561006b57600080fd5b50610074610139565b005b34801561008257600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100746100be366004610364565b61014d565b3480156100cf57600080fd5b5061010c6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a791906104e3565b34801561012557600080fd5b506100746101343660046104fd565b6101e2565b61014161024b565b61014b600061029e565b565b61015561024b565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101ab908690869060040161051a565b6000604051808303818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b5050505050505050565b6101ea61024b565b73ffffffffffffffffffffffffffffffffffffffff811661023f576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6102488161029e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461014b576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610236565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461024857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561037957600080fd5b833561038481610313565b9250602084013561039481610313565b9150604084013567ffffffffffffffff8111156103b057600080fd5b8401601f810186136103c157600080fd5b803567ffffffffffffffff8111156103db576103db610335565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561044757610447610335565b60405281815282820160200188101561045f57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000815180845260005b818110156104a557602081850181015186830182015201610489565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104f6602083018461047f565b9392505050565b60006020828403121561050f57600080fd5b81356104f681610313565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610549604083018461047f565b94935050505056fea2646970667358221220bfcb42a89a84dac0635a45bd4013ab76b4d822e9c9c757167dcf256da0cea66f64736f6c634300081a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103"; + "0x60a060405260405161117a38038061117a8339810160408190526100229161039d565b828161002e828261008f565b50508160405161003d9061033a565b6001600160a01b039091168152602001604051809103906000f080158015610069573d6000803e3d6000fd5b506001600160a01b031660805261008761008260805190565b6100ee565b50505061048f565b6100988261015c565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156100e2576100dd82826101db565b505050565b6100ea610252565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61012e60008051602061115a833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161015981610273565b50565b806001600160a01b03163b60000361019757604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080846001600160a01b0316846040516101f89190610473565b600060405180830381855af49150503d8060008114610233576040519150601f19603f3d011682016040523d82523d6000602084013e610238565b606091505b5090925090506102498583836102b2565b95945050505050565b34156102715760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661029d57604051633173bdd160e11b81526000600482015260240161018e565b8060008051602061115a8339815191526101ba565b6060826102c7576102c282610311565b61030a565b81511580156102de57506001600160a01b0384163b155b1561030757604051639996b31560e01b81526001600160a01b038516600482015260240161018e565b50805b9392505050565b8051156103215780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b61068480610ad683390190565b80516001600160a01b038116811461035e57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561039457818101518382015260200161037c565b50506000910152565b6000806000606084860312156103b257600080fd5b6103bb84610347565b92506103c960208501610347565b60408501519092506001600160401b038111156103e557600080fd5b8401601f810186136103f657600080fd5b80516001600160401b0381111561040f5761040f610363565b604051601f8201601f19908116603f011681016001600160401b038111828210171561043d5761043d610363565b60405281815282820160200188101561045557600080fd5b610466826020830160208601610379565b8093505050509250925092565b60008251610485818460208701610379565b9190910192915050565b60805161062d6104a960003960006010015261062d6000f3fe608060405261000c61000e565b005b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633036100d2576000357fffffffff00000000000000000000000000000000000000000000000000000000167f4f1ef28600000000000000000000000000000000000000000000000000000000146100c8576040517fd2b576ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100d06100da565b565b6100d0610109565b6000806100ea366004818461044d565b8101906100f791906104a6565b915091506101058282610119565b5050565b6100d0610114610181565b6101c6565b610122826101ea565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156101795761017482826102be565b505050565b610105610341565b60006101c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e8080156101e5573d6000f35b3d6000fd5b8073ffffffffffffffffffffffffffffffffffffffff163b600003610258576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60606000808473ffffffffffffffffffffffffffffffffffffffff16846040516102e891906105c8565b600060405180830381855af49150503d8060008114610323576040519150601f19603f3d011682016040523d82523d6000602084013e610328565b606091505b5091509150610338858383610379565b95945050505050565b34156100d0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261038e576103898261040b565b610404565b81511580156103b2575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610401576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161024f565b50805b9392505050565b80511561041b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808585111561045d57600080fd5b8386111561046a57600080fd5b5050820193919092039150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156104b957600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104dd57600080fd5b9150602083013567ffffffffffffffff8111156104f957600080fd5b8301601f8101851361050a57600080fd5b803567ffffffffffffffff81111561052457610524610477565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561059057610590610477565b6040528181528282016020018710156105a857600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000825160005b818110156105e957602081860181015185830152016105cf565b50600092019182525091905056fea2646970667358221220253f136e11d5f63ec3563318e55ad57e885108c3ff50fe7c6397f7ecf53edd5a64736f6c634300081a0033608060405234801561001057600080fd5b5060405161068438038061068483398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610587806100fd6000396000f3fe60806040526004361061005a5760003560e01c80639623609d116100435780639623609d146100b0578063ad3cb1cc146100c3578063f2fde38b1461011957600080fd5b8063715018a61461005f5780638da5cb5b14610076575b600080fd5b34801561006b57600080fd5b50610074610139565b005b34801561008257600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100746100be366004610364565b61014d565b3480156100cf57600080fd5b5061010c6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a791906104e3565b34801561012557600080fd5b506100746101343660046104fd565b6101e2565b61014161024b565b61014b600061029e565b565b61015561024b565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101ab908690869060040161051a565b6000604051808303818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b5050505050505050565b6101ea61024b565b73ffffffffffffffffffffffffffffffffffffffff811661023f576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6102488161029e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461014b576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610236565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461024857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561037957600080fd5b833561038481610313565b9250602084013561039481610313565b9150604084013567ffffffffffffffff8111156103b057600080fd5b8401601f810186136103c157600080fd5b803567ffffffffffffffff8111156103db576103db610335565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561044757610447610335565b60405281815282820160200188101561045f57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000815180845260005b818110156104a557602081850181015186830182015201610489565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104f6602083018461047f565b9392505050565b60006020828403121561050f57600080fd5b81356104f681610313565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610549604083018461047f565b94935050505056fea2646970667358221220cc8bbfd5df3920285befce3b27271fc70ad0dfb073ae2b9db9df8353b1cc6fff64736f6c634300081a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103"; type TransparentUpgradeableProxyConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/UpgradeableBeacon__factory.ts b/v2/types/factories/UpgradeableBeacon__factory.ts index 0c7d4d709..4a8a43c0e 100644 --- a/v2/types/factories/UpgradeableBeacon__factory.ts +++ b/v2/types/factories/UpgradeableBeacon__factory.ts @@ -163,7 +163,7 @@ const _abi = [ ] as const; const _bytecode = - "0x608060405234801561001057600080fd5b5060405161054538038061054583398101604081905261002f91610165565b806001600160a01b03811661005f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61006881610079565b50610072826100c9565b5050610198565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b806001600160a01b03163b6000036100ff5760405163211eb15960e21b81526001600160a01b0382166004820152602401610056565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b80516001600160a01b038116811461016057600080fd5b919050565b6000806040838503121561017857600080fd5b61018183610149565b915061018f60208401610149565b90509250929050565b61039e806101a76000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063715018a611610050578063715018a6146100c45780638da5cb5b146100cc578063f2fde38b146100ea57600080fd5b80633659cfe61461006c5780635c60da1b14610081575b600080fd5b61007f61007a36600461032b565b6100fd565b005b60015473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61007f610111565b60005473ffffffffffffffffffffffffffffffffffffffff1661009b565b61007f6100f836600461032b565b610125565b61010561018b565b61010e816101de565b50565b61011961018b565b61012360006102b6565b565b61012d61018b565b73ffffffffffffffffffffffffffffffffffffffff8116610182576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61010e816102b6565b60005473ffffffffffffffffffffffffffffffffffffffff163314610123576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610179565b8073ffffffffffffffffffffffffffffffffffffffff163b600003610247576040517f847ac56400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610179565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561033d57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461036157600080fd5b939250505056fea2646970667358221220a34903c6e0667f087cb6963c1584e20e97a79adf79b1e49dca433f1edfc474c264736f6c634300081a0033"; + "0x608060405234801561001057600080fd5b5060405161054538038061054583398101604081905261002f91610165565b806001600160a01b03811661005f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61006881610079565b50610072826100c9565b5050610198565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b806001600160a01b03163b6000036100ff5760405163211eb15960e21b81526001600160a01b0382166004820152602401610056565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b80516001600160a01b038116811461016057600080fd5b919050565b6000806040838503121561017857600080fd5b61018183610149565b915061018f60208401610149565b90509250929050565b61039e806101a76000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063715018a611610050578063715018a6146100c45780638da5cb5b146100cc578063f2fde38b146100ea57600080fd5b80633659cfe61461006c5780635c60da1b14610081575b600080fd5b61007f61007a36600461032b565b6100fd565b005b60015473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61007f610111565b60005473ffffffffffffffffffffffffffffffffffffffff1661009b565b61007f6100f836600461032b565b610125565b61010561018b565b61010e816101de565b50565b61011961018b565b61012360006102b6565b565b61012d61018b565b73ffffffffffffffffffffffffffffffffffffffff8116610182576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61010e816102b6565b60005473ffffffffffffffffffffffffffffffffffffffff163314610123576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610179565b8073ffffffffffffffffffffffffffffffffffffffff163b600003610247576040517f847ac56400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610179565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561033d57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461036157600080fd5b939250505056fea2646970667358221220c9c7179481a766b085d2da5ae9750f1c78f5bdec74151fc542064690d3a7e39864736f6c634300081a0033"; type UpgradeableBeaconConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/WZETA.sol/WETH9__factory.ts b/v2/types/factories/WZETA.sol/WETH9__factory.ts index f4728502d..33f7e2882 100644 --- a/v2/types/factories/WZETA.sol/WETH9__factory.ts +++ b/v2/types/factories/WZETA.sol/WETH9__factory.ts @@ -299,7 +299,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea2646970667358221220c069e4cb3e16bcddc5b07d6ba4019a062fbae92d695877ad19f66fc9ac6047fd64736f6c634300081a0033"; + "0x60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea2646970667358221220b09c98b42d894b1b92a74ecc691587bcc17012fff7ef3bcfa6fe755f9b6255a564736f6c634300081a0033"; type WETH9ConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/ZRC20.sol/ZRC20__factory.ts b/v2/types/factories/ZRC20.sol/ZRC20__factory.ts index ca9fbcb84..754fa0068 100644 --- a/v2/types/factories/ZRC20.sol/ZRC20__factory.ts +++ b/v2/types/factories/ZRC20.sol/ZRC20__factory.ts @@ -721,7 +721,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60c060405234801561001057600080fd5b5060405161207238038061207283398101604081905261002f916101f0565b6001600160a01b038216158061004c57506001600160a01b038116155b1561006a5760405163d92e233d60e01b815260040160405180910390fd5b60066100768982610342565b5060076100838882610342565b506008805460ff191660ff881617905560808590528360028111156100aa576100aa610400565b60a08160028111156100be576100be610400565b905250600192909255600080546001600160a01b039283166001600160a01b0319909116179055600880549190921661010002610100600160a81b0319909116179055506104169350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261013357600080fd5b81516001600160401b0381111561014c5761014c61010c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561017a5761017a61010c565b60405281815283820160200185101561019257600080fd5b60005b828110156101b157602081860181015183830182015201610195565b506000918101602001919091529392505050565b8051600381106101d457600080fd5b919050565b80516001600160a01b03811681146101d457600080fd5b600080600080600080600080610100898b03121561020d57600080fd5b88516001600160401b0381111561022357600080fd5b61022f8b828c01610122565b60208b015190995090506001600160401b0381111561024d57600080fd5b6102598b828c01610122565b975050604089015160ff8116811461027057600080fd5b60608a0151909650945061028660808a016101c5565b60a08a0151909450925061029c60c08a016101d9565b91506102aa60e08a016101d9565b90509295985092959890939650565b600181811c908216806102cd57607f821691505b6020821081036102ed57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561033d57806000526020600020601f840160051c8101602085101561031a5750805b601f840160051c820191505b8181101561033a5760008155600101610326565b50505b505050565b81516001600160401b0381111561035b5761035b61010c565b61036f8161036984546102b9565b846102f3565b6020601f8211600181146103a3576000831561038b5750848201515b600019600385901b1c1916600184901b17845561033a565b600084815260208120601f198516915b828110156103d357878501518255602094850194600190920191016103b3565b50848210156103f15786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a051611c1b61045760003960006103440152600081816102f001528181610bdc01528181610ce201528181610efe01526110040152611c1b6000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c806395d89b41116100f9578063ccc7759911610097578063eddeb12311610071578063eddeb12314610461578063f2441b3214610474578063f687d12a14610494578063fc5fecd5146104a757600080fd5b8063ccc77599146103d4578063d9eeebed146103e7578063dd62ed3e1461041b57600080fd5b8063b84c8246116100d3578063b84c824614610386578063c47f00271461039b578063c7012626146103ae578063c835d7cc146103c157600080fd5b806395d89b4114610337578063a3413d031461033f578063a9059cbb1461037357600080fd5b80633ce4a5bc116101665780634d8943bb116101405780634d8943bb146102ac57806370a08231146102b557806385e1f4d0146102eb5780638b851b951461031257600080fd5b80633ce4a5bc1461024657806342966c681461028657806347e7ef241461029957600080fd5b806318160ddd1161019757806318160ddd1461021657806323b872dd1461021e578063313ce5671461023157600080fd5b806306fdde03146101be578063091d2788146101dc578063095ea7b3146101f3575b600080fd5b6101c66104ba565b6040516101d39190611648565b60405180910390f35b6101e560015481565b6040519081526020016101d3565b610206610201366004611687565b61054c565b60405190151581526020016101d3565b6005546101e5565b61020661022c3660046116b3565b610563565b60085460405160ff90911681526020016101d3565b61026173735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d3565b6102066102943660046116f4565b6105fa565b6102066102a7366004611687565b61060e565b6101e560025481565b6101e56102c336600461170d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6101e57f000000000000000000000000000000000000000000000000000000000000000081565b60085461026190610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6101c6610767565b6103667f000000000000000000000000000000000000000000000000000000000000000081565b6040516101d3919061172a565b610206610381366004611687565b610776565b610399610394366004611832565b610783565b005b6103996103a9366004611832565b6107e0565b6102066103bc366004611883565b610839565b6103996103cf36600461170d565b610988565b6103996103e236600461170d565b610a9c565b6103ef610bb0565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101d3565b6101e56104293660046118dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205490565b61039961046f3660046116f4565b610dce565b6000546102619073ffffffffffffffffffffffffffffffffffffffff1681565b6103996104a23660046116f4565b610e50565b6103ef6104b53660046116f4565b610ed2565b6060600680546104c990611915565b80601f01602080910402602001604051908101604052809291908181526020018280546104f590611915565b80156105425780601f1061051757610100808354040283529160200191610542565b820191906000526020600020905b81548152906001019060200180831161052557829003601f168201915b5050505050905090565b60006105593384846110ee565b5060015b92915050565b60006105708484846111f7565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460209081526040808320338452909152902054828110156105db576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105ef85336105ea8685611997565b6110ee565b506001949350505050565b600061060633836113b2565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab1480159061064c575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156106755750600854610100900473ffffffffffffffffffffffffffffffffffffffff163314155b156106ac576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106b683836114f4565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526107569186906119aa565b60405180910390a250600192915050565b6060600780546104c990611915565b60006105593384846111f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab146107d0576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60076107dc8282611a1b565b5050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461082d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60066107dc8282611a1b565b6000806000610846610bb0565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156108d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fc9190611b34565b610932576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61093c33856113b2565b60025460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161097591899189918791611b56565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146109d5576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a22576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610ae9576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610b36576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c679190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610cb6576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d699190611ba2565b905080600003610da5576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060025460015483610db89190611bbb565b610dc29190611bd2565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e1b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610a91565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e9d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610f65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f899190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610fd8576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015611067573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108b9190611ba2565b9050806000036110c7576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000906110d78784611bbb565b6110e19190611bd2565b9296929550919350505050565b73ffffffffffffffffffffffffffffffffffffffff831661113b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611188576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611244576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611291576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040902054818110156112f1576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112fb8282611997565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260036020526040808220939093559085168152908120805484929061133e908490611bd2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113a491815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff82166113ff576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260409020548181101561145f576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114698282611997565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260036020526040812091909155600580548492906114a4908490611997565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016111ea565b73ffffffffffffffffffffffffffffffffffffffff8216611541576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008282546115539190611bd2565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805483929061158d908490611bd2565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561160a576020818501810151868301820152016115ee565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061165b60208301846115e4565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461168457600080fd5b50565b6000806040838503121561169a57600080fd5b82356116a581611662565b946020939093013593505050565b6000806000606084860312156116c857600080fd5b83356116d381611662565b925060208401356116e381611662565b929592945050506040919091013590565b60006020828403121561170657600080fd5b5035919050565b60006020828403121561171f57600080fd5b813561165b81611662565b6020810160038310611765577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff8411156117b5576117b561176b565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff821117156118025761180261176b565b60405283815290508082840185101561181a57600080fd5b83836020830137600060208583010152509392505050565b60006020828403121561184457600080fd5b813567ffffffffffffffff81111561185b57600080fd5b8201601f8101841361186c57600080fd5b61187b8482356020840161179a565b949350505050565b6000806040838503121561189657600080fd5b823567ffffffffffffffff8111156118ad57600080fd5b8301601f810185136118be57600080fd5b6118cd8582356020840161179a565b95602094909401359450505050565b600080604083850312156118ef57600080fd5b82356118fa81611662565b9150602083013561190a81611662565b809150509250929050565b600181811c9082168061192957607f821691505b602082108103611962577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561055d5761055d611968565b6040815260006119bd60408301856115e4565b90508260208301529392505050565b601f821115611a1657806000526020600020601f840160051c810160208510156119f35750805b601f840160051c820191505b81811015611a1357600081556001016119ff565b50505b505050565b815167ffffffffffffffff811115611a3557611a3561176b565b611a4981611a438454611915565b846119cc565b6020601f821160018114611a9b5760008315611a655750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611a13565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015611ae95787850151825560209485019460019092019101611ac9565b5084821015611b2557868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b600060208284031215611b4657600080fd5b8151801515811461165b57600080fd5b608081526000611b6960808301876115e4565b6020830195909552506040810192909252606090910152919050565b600060208284031215611b9757600080fd5b815161165b81611662565b600060208284031215611bb457600080fd5b5051919050565b808202811582820484141761055d5761055d611968565b8082018082111561055d5761055d61196856fea26469706673582212202a06c5d72036d88c206ff2bfdd016b3ce8555bc0090e8bb5487bc61ea043732b64736f6c634300081a0033"; + "0x60c060405234801561001057600080fd5b5060405161207238038061207283398101604081905261002f916101f0565b6001600160a01b038216158061004c57506001600160a01b038116155b1561006a5760405163d92e233d60e01b815260040160405180910390fd5b60066100768982610342565b5060076100838882610342565b506008805460ff191660ff881617905560808590528360028111156100aa576100aa610400565b60a08160028111156100be576100be610400565b905250600192909255600080546001600160a01b039283166001600160a01b0319909116179055600880549190921661010002610100600160a81b0319909116179055506104169350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261013357600080fd5b81516001600160401b0381111561014c5761014c61010c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561017a5761017a61010c565b60405281815283820160200185101561019257600080fd5b60005b828110156101b157602081860181015183830182015201610195565b506000918101602001919091529392505050565b8051600381106101d457600080fd5b919050565b80516001600160a01b03811681146101d457600080fd5b600080600080600080600080610100898b03121561020d57600080fd5b88516001600160401b0381111561022357600080fd5b61022f8b828c01610122565b60208b015190995090506001600160401b0381111561024d57600080fd5b6102598b828c01610122565b975050604089015160ff8116811461027057600080fd5b60608a0151909650945061028660808a016101c5565b60a08a0151909450925061029c60c08a016101d9565b91506102aa60e08a016101d9565b90509295985092959890939650565b600181811c908216806102cd57607f821691505b6020821081036102ed57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561033d57806000526020600020601f840160051c8101602085101561031a5750805b601f840160051c820191505b8181101561033a5760008155600101610326565b50505b505050565b81516001600160401b0381111561035b5761035b61010c565b61036f8161036984546102b9565b846102f3565b6020601f8211600181146103a3576000831561038b5750848201515b600019600385901b1c1916600184901b17845561033a565b600084815260208120601f198516915b828110156103d357878501518255602094850194600190920191016103b3565b50848210156103f15786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a051611c1b61045760003960006103440152600081816102f001528181610bdc01528181610ce201528181610efe01526110040152611c1b6000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c806395d89b41116100f9578063ccc7759911610097578063eddeb12311610071578063eddeb12314610461578063f2441b3214610474578063f687d12a14610494578063fc5fecd5146104a757600080fd5b8063ccc77599146103d4578063d9eeebed146103e7578063dd62ed3e1461041b57600080fd5b8063b84c8246116100d3578063b84c824614610386578063c47f00271461039b578063c7012626146103ae578063c835d7cc146103c157600080fd5b806395d89b4114610337578063a3413d031461033f578063a9059cbb1461037357600080fd5b80633ce4a5bc116101665780634d8943bb116101405780634d8943bb146102ac57806370a08231146102b557806385e1f4d0146102eb5780638b851b951461031257600080fd5b80633ce4a5bc1461024657806342966c681461028657806347e7ef241461029957600080fd5b806318160ddd1161019757806318160ddd1461021657806323b872dd1461021e578063313ce5671461023157600080fd5b806306fdde03146101be578063091d2788146101dc578063095ea7b3146101f3575b600080fd5b6101c66104ba565b6040516101d39190611648565b60405180910390f35b6101e560015481565b6040519081526020016101d3565b610206610201366004611687565b61054c565b60405190151581526020016101d3565b6005546101e5565b61020661022c3660046116b3565b610563565b60085460405160ff90911681526020016101d3565b61026173735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d3565b6102066102943660046116f4565b6105fa565b6102066102a7366004611687565b61060e565b6101e560025481565b6101e56102c336600461170d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6101e57f000000000000000000000000000000000000000000000000000000000000000081565b60085461026190610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6101c6610767565b6103667f000000000000000000000000000000000000000000000000000000000000000081565b6040516101d3919061172a565b610206610381366004611687565b610776565b610399610394366004611832565b610783565b005b6103996103a9366004611832565b6107e0565b6102066103bc366004611883565b610839565b6103996103cf36600461170d565b610988565b6103996103e236600461170d565b610a9c565b6103ef610bb0565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101d3565b6101e56104293660046118dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205490565b61039961046f3660046116f4565b610dce565b6000546102619073ffffffffffffffffffffffffffffffffffffffff1681565b6103996104a23660046116f4565b610e50565b6103ef6104b53660046116f4565b610ed2565b6060600680546104c990611915565b80601f01602080910402602001604051908101604052809291908181526020018280546104f590611915565b80156105425780601f1061051757610100808354040283529160200191610542565b820191906000526020600020905b81548152906001019060200180831161052557829003601f168201915b5050505050905090565b60006105593384846110ee565b5060015b92915050565b60006105708484846111f7565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460209081526040808320338452909152902054828110156105db576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105ef85336105ea8685611997565b6110ee565b506001949350505050565b600061060633836113b2565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab1480159061064c575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156106755750600854610100900473ffffffffffffffffffffffffffffffffffffffff163314155b156106ac576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106b683836114f4565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526107569186906119aa565b60405180910390a250600192915050565b6060600780546104c990611915565b60006105593384846111f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab146107d0576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60076107dc8282611a1b565b5050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461082d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60066107dc8282611a1b565b6000806000610846610bb0565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156108d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fc9190611b34565b610932576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61093c33856113b2565b60025460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161097591899189918791611b56565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146109d5576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a22576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610ae9576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610b36576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c679190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610cb6576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d699190611ba2565b905080600003610da5576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060025460015483610db89190611bbb565b610dc29190611bd2565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e1b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610a91565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e9d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610f65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f899190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610fd8576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015611067573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108b9190611ba2565b9050806000036110c7576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000906110d78784611bbb565b6110e19190611bd2565b9296929550919350505050565b73ffffffffffffffffffffffffffffffffffffffff831661113b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611188576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611244576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611291576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040902054818110156112f1576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112fb8282611997565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260036020526040808220939093559085168152908120805484929061133e908490611bd2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113a491815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff82166113ff576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260409020548181101561145f576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114698282611997565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260036020526040812091909155600580548492906114a4908490611997565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016111ea565b73ffffffffffffffffffffffffffffffffffffffff8216611541576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008282546115539190611bd2565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805483929061158d908490611bd2565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561160a576020818501810151868301820152016115ee565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061165b60208301846115e4565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461168457600080fd5b50565b6000806040838503121561169a57600080fd5b82356116a581611662565b946020939093013593505050565b6000806000606084860312156116c857600080fd5b83356116d381611662565b925060208401356116e381611662565b929592945050506040919091013590565b60006020828403121561170657600080fd5b5035919050565b60006020828403121561171f57600080fd5b813561165b81611662565b6020810160038310611765577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff8411156117b5576117b561176b565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff821117156118025761180261176b565b60405283815290508082840185101561181a57600080fd5b83836020830137600060208583010152509392505050565b60006020828403121561184457600080fd5b813567ffffffffffffffff81111561185b57600080fd5b8201601f8101841361186c57600080fd5b61187b8482356020840161179a565b949350505050565b6000806040838503121561189657600080fd5b823567ffffffffffffffff8111156118ad57600080fd5b8301601f810185136118be57600080fd5b6118cd8582356020840161179a565b95602094909401359450505050565b600080604083850312156118ef57600080fd5b82356118fa81611662565b9150602083013561190a81611662565b809150509250929050565b600181811c9082168061192957607f821691505b602082108103611962577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561055d5761055d611968565b6040815260006119bd60408301856115e4565b90508260208301529392505050565b601f821115611a1657806000526020600020601f840160051c810160208510156119f35750805b601f840160051c820191505b81811015611a1357600081556001016119ff565b50505b505050565b815167ffffffffffffffff811115611a3557611a3561176b565b611a4981611a438454611915565b846119cc565b6020601f821160018114611a9b5760008315611a655750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611a13565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015611ae95787850151825560209485019460019092019101611ac9565b5084821015611b2557868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b600060208284031215611b4657600080fd5b8151801515811461165b57600080fd5b608081526000611b6960808301876115e4565b6020830195909552506040810192909252606090910152919050565b600060208284031215611b9757600080fd5b815161165b81611662565b600060208284031215611bb457600080fd5b5051919050565b808202811582820484141761055d5761055d611968565b8082018082111561055d5761055d61196856fea2646970667358221220d6ba834f25782689ed13bffb6ac9ff2c8d3b5342c94a515aea8197a76070ad3f64736f6c634300081a0033"; type ZRC20ConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/Zeta.non-eth.sol/ZetaNonEth__factory.ts b/v2/types/factories/Zeta.non-eth.sol/ZetaNonEth__factory.ts index 4363a1a73..9677f67ba 100644 --- a/v2/types/factories/Zeta.non-eth.sol/ZetaNonEth__factory.ts +++ b/v2/types/factories/Zeta.non-eth.sol/ZetaNonEth__factory.ts @@ -620,7 +620,7 @@ const _abi = [ ] as const; const _bytecode = - "0x608060405234801561001057600080fd5b506040516112a63803806112a683398101604081905261002f91610110565b604051806040016040528060048152602001635a65746160e01b815250604051806040016040528060048152602001635a45544160e01b815250816003908161007891906101e2565b50600461008582826101e2565b5050506001600160a01b03821615806100a557506001600160a01b038116155b156100c35760405163e6c4247b60e01b815260040160405180910390fd5b600680546001600160a01b039384166001600160a01b031991821617909155600780549290931691161790556102a0565b80516001600160a01b038116811461010b57600080fd5b919050565b6000806040838503121561012357600080fd5b61012c836100f4565b915061013a602084016100f4565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061016d57607f821691505b60208210810361018d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101dd57806000526020600020601f840160051c810160208510156101ba5750805b601f840160051c820191505b818110156101da57600081556001016101c6565b50505b505050565b81516001600160401b038111156101fb576101fb610143565b61020f816102098454610159565b84610193565b6020601f821160018114610243576000831561022b5750848201515b600019600385901b1c1916600184901b1784556101da565b600084815260208120601f198516915b828110156102735787850151825560209485019460019092019101610253565b50848210156102915786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610ff7806102af6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806342966c68116100b257806379cc679011610081578063a9059cbb11610066578063a9059cbb1461028e578063bff9662a146102a1578063dd62ed3e146102c157600080fd5b806379cc67901461027357806395d89b411461028657600080fd5b806342966c68146102025780635b1125911461021557806370a0823114610235578063779e3b631461026b57600080fd5b80631e458bee116100ee5780631e458bee1461018857806323b872dd1461019b578063313ce567146101ae578063328a01d0146101bd57600080fd5b806306fdde0314610120578063095ea7b31461013e57806315d57fd41461016157806318160ddd14610176575b600080fd5b610128610307565b6040516101359190610d97565b60405180910390f35b61015161014c366004610e2c565b610399565b6040519015158152602001610135565b61017461016f366004610e56565b6103b3565b005b6002545b604051908152602001610135565b610174610196366004610e89565b61057e565b6101516101a9366004610ebc565b610631565b60405160128152602001610135565b6007546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610135565b610174610210366004610ef9565b610655565b6006546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a610243366004610f12565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b610174610662565b610174610281366004610e2c565b610786565b610128610837565b61015161029c366004610e2c565b610846565b6005546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a6102cf366004610e56565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461031690610f34565b80601f016020809104026020016040519081016040528092919081815260200182805461034290610f34565b801561038f5780601f106103645761010080835404028352916020019161038f565b820191906000526020600020905b81548152906001019060200180831161037257829003601f168201915b5050505050905090565b6000336103a7818585610854565b60019150505b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff1633148015906103f3575060065473ffffffffffffffffffffffffffffffffffffffff163314155b15610431576040517fcdfcef970000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82161580610468575073ffffffffffffffffffffffffffffffffffffffff8116155b1561049f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006805473ffffffffffffffffffffffffffffffffffffffff8481167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316811790935560058054918516919092161790556040805133815260208101929092527fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff910160405180910390a16040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f1b9352454524a57a51f24f67dc66d898f616922cd1f7a12d73570ece12b1975c910160405180910390a15050565b60055473ffffffffffffffffffffffffffffffffffffffff1633146105d1576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6105db8383610866565b808373ffffffffffffffffffffffffffffffffffffffff167fc263b302aec62d29105026245f19e16f8e0137066ccd4a8bd941f716bd4096bb8460405161062491815260200190565b60405180910390a3505050565b60003361063f8582856108c6565b61064a858585610995565b506001949350505050565b61065f3382610a40565b50565b60075473ffffffffffffffffffffffffffffffffffffffff1633146106b5576040517fe700765e000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b60065473ffffffffffffffffffffffffffffffffffffffff16610704576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0910160405180910390a1565b60055473ffffffffffffffffffffffffffffffffffffffff1633146107d9576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6107e38282610a9c565b8173ffffffffffffffffffffffffffffffffffffffff167f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b18260405161082b91815260200190565b60405180910390a25050565b60606004805461031690610f34565b6000336103a7818585610995565b6108618383836001610ab1565b505050565b73ffffffffffffffffffffffffffffffffffffffff82166108b6576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c260008383610bf9565b5050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461098f5781811015610980576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401610428565b61098f84848484036000610ab1565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166109e5576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8216610a35576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b610861838383610bf9565b73ffffffffffffffffffffffffffffffffffffffff8216610a90576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c282600083610bf9565b610aa78233836108c6565b6108c28282610a40565b73ffffffffffffffffffffffffffffffffffffffff8416610b01576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8316610b51576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160209081526040808320938716835292905220829055801561098f578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610beb91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8316610c31578060026000828254610c269190610f87565b90915550610ce39050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610cb7576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810182905260448101839052606401610428565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff8216610d0c57600280548290039055610d38565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161062491815260200190565b602081526000825180602084015260005b81811015610dc55760208186018101516040868401015201610da8565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e2757600080fd5b919050565b60008060408385031215610e3f57600080fd5b610e4883610e03565b946020939093013593505050565b60008060408385031215610e6957600080fd5b610e7283610e03565b9150610e8060208401610e03565b90509250929050565b600080600060608486031215610e9e57600080fd5b610ea784610e03565b95602085013595506040909401359392505050565b600080600060608486031215610ed157600080fd5b610eda84610e03565b9250610ee860208501610e03565b929592945050506040919091013590565b600060208284031215610f0b57600080fd5b5035919050565b600060208284031215610f2457600080fd5b610f2d82610e03565b9392505050565b600181811c90821680610f4857607f821691505b602082108103610f81577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156103ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220e8a1f6a00b1b9c77fd6d8724e3829463441aaedd6b65190c6dc6c18bcc5810e364736f6c634300081a0033"; + "0x608060405234801561001057600080fd5b506040516112a63803806112a683398101604081905261002f91610110565b604051806040016040528060048152602001635a65746160e01b815250604051806040016040528060048152602001635a45544160e01b815250816003908161007891906101e2565b50600461008582826101e2565b5050506001600160a01b03821615806100a557506001600160a01b038116155b156100c35760405163e6c4247b60e01b815260040160405180910390fd5b600680546001600160a01b039384166001600160a01b031991821617909155600780549290931691161790556102a0565b80516001600160a01b038116811461010b57600080fd5b919050565b6000806040838503121561012357600080fd5b61012c836100f4565b915061013a602084016100f4565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061016d57607f821691505b60208210810361018d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101dd57806000526020600020601f840160051c810160208510156101ba5750805b601f840160051c820191505b818110156101da57600081556001016101c6565b50505b505050565b81516001600160401b038111156101fb576101fb610143565b61020f816102098454610159565b84610193565b6020601f821160018114610243576000831561022b5750848201515b600019600385901b1c1916600184901b1784556101da565b600084815260208120601f198516915b828110156102735787850151825560209485019460019092019101610253565b50848210156102915786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610ff7806102af6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806342966c68116100b257806379cc679011610081578063a9059cbb11610066578063a9059cbb1461028e578063bff9662a146102a1578063dd62ed3e146102c157600080fd5b806379cc67901461027357806395d89b411461028657600080fd5b806342966c68146102025780635b1125911461021557806370a0823114610235578063779e3b631461026b57600080fd5b80631e458bee116100ee5780631e458bee1461018857806323b872dd1461019b578063313ce567146101ae578063328a01d0146101bd57600080fd5b806306fdde0314610120578063095ea7b31461013e57806315d57fd41461016157806318160ddd14610176575b600080fd5b610128610307565b6040516101359190610d97565b60405180910390f35b61015161014c366004610e2c565b610399565b6040519015158152602001610135565b61017461016f366004610e56565b6103b3565b005b6002545b604051908152602001610135565b610174610196366004610e89565b61057e565b6101516101a9366004610ebc565b610631565b60405160128152602001610135565b6007546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610135565b610174610210366004610ef9565b610655565b6006546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a610243366004610f12565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b610174610662565b610174610281366004610e2c565b610786565b610128610837565b61015161029c366004610e2c565b610846565b6005546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a6102cf366004610e56565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461031690610f34565b80601f016020809104026020016040519081016040528092919081815260200182805461034290610f34565b801561038f5780601f106103645761010080835404028352916020019161038f565b820191906000526020600020905b81548152906001019060200180831161037257829003601f168201915b5050505050905090565b6000336103a7818585610854565b60019150505b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff1633148015906103f3575060065473ffffffffffffffffffffffffffffffffffffffff163314155b15610431576040517fcdfcef970000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82161580610468575073ffffffffffffffffffffffffffffffffffffffff8116155b1561049f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006805473ffffffffffffffffffffffffffffffffffffffff8481167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316811790935560058054918516919092161790556040805133815260208101929092527fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff910160405180910390a16040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f1b9352454524a57a51f24f67dc66d898f616922cd1f7a12d73570ece12b1975c910160405180910390a15050565b60055473ffffffffffffffffffffffffffffffffffffffff1633146105d1576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6105db8383610866565b808373ffffffffffffffffffffffffffffffffffffffff167fc263b302aec62d29105026245f19e16f8e0137066ccd4a8bd941f716bd4096bb8460405161062491815260200190565b60405180910390a3505050565b60003361063f8582856108c6565b61064a858585610995565b506001949350505050565b61065f3382610a40565b50565b60075473ffffffffffffffffffffffffffffffffffffffff1633146106b5576040517fe700765e000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b60065473ffffffffffffffffffffffffffffffffffffffff16610704576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0910160405180910390a1565b60055473ffffffffffffffffffffffffffffffffffffffff1633146107d9576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6107e38282610a9c565b8173ffffffffffffffffffffffffffffffffffffffff167f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b18260405161082b91815260200190565b60405180910390a25050565b60606004805461031690610f34565b6000336103a7818585610995565b6108618383836001610ab1565b505050565b73ffffffffffffffffffffffffffffffffffffffff82166108b6576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c260008383610bf9565b5050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461098f5781811015610980576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401610428565b61098f84848484036000610ab1565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166109e5576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8216610a35576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b610861838383610bf9565b73ffffffffffffffffffffffffffffffffffffffff8216610a90576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c282600083610bf9565b610aa78233836108c6565b6108c28282610a40565b73ffffffffffffffffffffffffffffffffffffffff8416610b01576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8316610b51576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160209081526040808320938716835292905220829055801561098f578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610beb91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8316610c31578060026000828254610c269190610f87565b90915550610ce39050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610cb7576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810182905260448101839052606401610428565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff8216610d0c57600280548290039055610d38565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161062491815260200190565b602081526000825180602084015260005b81811015610dc55760208186018101516040868401015201610da8565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e2757600080fd5b919050565b60008060408385031215610e3f57600080fd5b610e4883610e03565b946020939093013593505050565b60008060408385031215610e6957600080fd5b610e7283610e03565b9150610e8060208401610e03565b90509250929050565b600080600060608486031215610e9e57600080fd5b610ea784610e03565b95602085013595506040909401359392505050565b600080600060608486031215610ed157600080fd5b610eda84610e03565b9250610ee860208501610e03565b929592945050506040919091013590565b600060208284031215610f0b57600080fd5b5035919050565b600060208284031215610f2457600080fd5b610f2d82610e03565b9392505050565b600181811c90821680610f4857607f821691505b602082108103610f81577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156103ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea264697066735822122001ec0ce060384773f3d3389fab7bed652c6b8ee389a7471cce10d00d87a75a0c64736f6c634300081a0033"; type ZetaNonEthConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/ZetaConnectorNativeUpgradeTest__factory.ts b/v2/types/factories/ZetaConnectorNativeUpgradeTest__factory.ts index 0df4e9a56..f12ed9060 100644 --- a/v2/types/factories/ZetaConnectorNativeUpgradeTest__factory.ts +++ b/v2/types/factories/ZetaConnectorNativeUpgradeTest__factory.ts @@ -839,7 +839,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a060405230608052348015601357600080fd5b5060805161248461003d6000396000818161125d01528181611286015261145c01526124846000f3fe6080604052600436106101965760003560e01c80635e3e9fef116100e1578063950837aa1161008a578063ad3cb1cc11610064578063ad3cb1cc146104f2578063d547741f14610548578063e63ab1e914610568578063f8c8765e1461059c57600080fd5b8063950837aa14610489578063a217fddf146104a9578063a783c789146104be57600080fd5b80638456cb59116100bb5780638456cb59146103db57806385f438c1146103f057806391d148541461042457600080fd5b80635e3e9fef1461037b5780636f8728ad1461039b578063743e0c9b146103bb57600080fd5b806336568abe1161014357806352d1902d1161011d57806352d1902d1461030f5780635b112591146103245780635c975abb1461034457600080fd5b806336568abe146102c75780633f4ba83a146102e75780634f1ef286146102fc57600080fd5b806321e093b11161017457806321e093b11461022a578063248a9ca31461024a5780632f2ff15d146102a757600080fd5b806301ffc9a71461019b578063106e6290146101d0578063116191b6146101f2575b600080fd5b3480156101a757600080fd5b506101bb6101b6366004611dea565b6105bc565b60405190151581526020015b60405180910390f35b3480156101dc57600080fd5b506101f06101eb366004611e48565b610655565b005b3480156101fe57600080fd5b50600054610212906001600160a01b031681565b6040516001600160a01b0390911681526020016101c7565b34801561023657600080fd5b50600154610212906001600160a01b031681565b34801561025657600080fd5b50610299610265366004611e7b565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101c7565b3480156102b357600080fd5b506101f06102c2366004611e94565b610718565b3480156102d357600080fd5b506101f06102e2366004611e94565b610762565b3480156102f357600080fd5b506101f06107ae565b6101f061030a366004611eef565b6107e3565b34801561031b57600080fd5b50610299610802565b34801561033057600080fd5b50600254610212906001600160a01b031681565b34801561035057600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101bb565b34801561038757600080fd5b506101f061039636600461203f565b610831565b3480156103a757600080fd5b506101f06103b63660046120a1565b610985565b3480156103c757600080fd5b506101f06103d6366004611e7b565b610ade565b3480156103e757600080fd5b506101f0610afe565b3480156103fc57600080fd5b506102997f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b34801561043057600080fd5b506101bb61043f366004611e94565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561049557600080fd5b506101f06104a4366004612139565b610b30565b3480156104b557600080fd5b50610299600081565b3480156104ca57600080fd5b506102997f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b3480156104fe57600080fd5b5061053b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101c79190612178565b34801561055457600080fd5b506101f0610563366004611e94565b610cc3565b34801561057457600080fd5b506102997f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b3480156105a857600080fd5b506101f06105b73660046121c9565b610d07565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061064f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61065d610e8e565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461068781610f0f565b61068f610f19565b6001546106a6906001600160a01b03168585610f77565b836001600160a01b03167f3e35ef4326151011878c9e8e968a0f3913fe98ca68f72a1e0c2e9be13ffb3ee9846040516106e191815260200190565b60405180910390a25061071360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461075281610f0f565b61075c8383611011565b50505050565b6001600160a01b03811633146107a4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61071382826110fe565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6107d881610f0f565b6107e06111c2565b50565b6107eb611252565b6107f482611322565b6107fe828261132d565b5050565b600061080c611451565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610839610e8e565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461086381610f0f565b61086b610f19565b600054600154610888916001600160a01b03918216911687610f77565b6000546001546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692635131ab59926108dd929116908a908a908a908a90600401612266565b600060405180830381600087803b1580156108f757600080fd5b505af115801561090b573d6000803e3d6000fd5b50505050856001600160a01b03167f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d86868660405161094c939291906122a9565b60405180910390a25061097e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b61098d610e8e565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46109b781610f0f565b6109bf610f19565b6000546001546109dc916001600160a01b03918216911688610f77565b6000546001546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526001600160a01b039283169263aa0c0fc192610a33929116908b908b908b908b908a90600401612374565b600060405180830381600087803b158015610a4d57600080fd5b505af1158015610a61573d6000803e3d6000fd5b50505050866001600160a01b03167f5272d2fee39bff41b2e763562526315906046373ce08a7bacf76c3080d731ff087878786604051610aa494939291906123cb565b60405180910390a250610ad660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b610ae6610f19565b6001546107e0906001600160a01b03163330846114b3565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610b2881610f0f565b6107e06114ec565b6000610b3b81610f0f565b6001600160a01b038216610b7b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254610bb2907f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4906001600160a01b03166110fe565b50600254610bea907f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb906001600160a01b03166110fe565b50610c157f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483611011565b50610c407f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb83611011565b50600254604080516001600160a01b03928316815291841660208301527f33770ab682353c17917ad3e667f05905fc8dda00671ef1ed33bef9bc8db0323e910160405180910390a150600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610cfd81610f0f565b61075c83836110fe565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610d525750825b905060008267ffffffffffffffff166001148015610d6f5750303b155b905081158015610d7d575080155b15610db4576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610e155784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610e2189898989611565565b8315610e835784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b505050505050505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01610f09576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6107e08133611870565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615610f75576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040516001600160a01b0383811660248301526044820183905261071391859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506118fd565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166110f4576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556110aa3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061064f565b600091505061064f565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156110f4576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061064f565b6111ca611979565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806112eb57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166112df7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610f75576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006107fe81610f0f565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156113a5575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526113a2918101906123f7565b60015b6113eb576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611447576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016113e2565b61071383836119d4565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f75576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040516001600160a01b03848116602483015283811660448301526064820183905261075c9186918216906323b872dd90608401610fa4565b6114f4610f19565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611234565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156115b05750825b905060008267ffffffffffffffff1660011480156115cd5750303b155b9050811580156115db575080155b15611612576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156116735784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038916158061169057506001600160a01b038816155b806116a257506001600160a01b038716155b806116b457506001600160a01b038616155b156116eb576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116f3611a2a565b6116fb611a32565b611703611a2a565b61170b611a42565b600080546001600160a01b03808c167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316178355600180548c831690841617905560028054918b16919092161790556117669087611011565b506117917f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e488611011565b506117bc7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb88611011565b506117e77f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611011565b506118127f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a88611011565b508315610e835784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001610e7a565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166107fe576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016113e2565b60006119126001600160a01b03841683611a52565b905080516000141580156119375750808060200190518101906119359190612410565b155b15610713576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016113e2565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610f75576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119dd82611a67565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611a22576107138282611b0f565b6107fe611b85565b610f75611bbd565b611a3a611bbd565b610f75611c24565b611a4a611bbd565b610f75611c2c565b6060611a6083836000611c7d565b9392505050565b806001600160a01b03163b600003611ab6576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016113e2565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611b2c9190612432565b600060405180830381855af49150503d8060008114611b67576040519150601f19603f3d011682016040523d82523d6000602084013e611b6c565b606091505b5091509150611b7c858383611d33565b95945050505050565b3415610f75576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610f75576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610feb611bbd565b611c34611bbd565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b606081471015611cbb576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016113e2565b600080856001600160a01b03168486604051611cd79190612432565b60006040518083038185875af1925050503d8060008114611d14576040519150601f19603f3d011682016040523d82523d6000602084013e611d19565b606091505b5091509150611d29868383611d33565b9695505050505050565b606082611d4857611d4382611da8565b611a60565b8151158015611d5f57506001600160a01b0384163b155b15611da1576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016113e2565b5080611a60565b805115611db85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215611dfc57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611a6057600080fd5b80356001600160a01b0381168114611e4357600080fd5b919050565b600080600060608486031215611e5d57600080fd5b611e6684611e2c565b95602085013595506040909401359392505050565b600060208284031215611e8d57600080fd5b5035919050565b60008060408385031215611ea757600080fd5b82359150611eb760208401611e2c565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215611f0257600080fd5b611f0b83611e2c565b9150602083013567ffffffffffffffff811115611f2757600080fd5b8301601f81018513611f3857600080fd5b803567ffffffffffffffff811115611f5257611f52611ec0565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715611fbe57611fbe611ec0565b604052818152828201602001871015611fd657600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008083601f84011261200857600080fd5b50813567ffffffffffffffff81111561202057600080fd5b60208301915083602082850101111561203857600080fd5b9250929050565b60008060008060006080868803121561205757600080fd5b61206086611e2c565b945060208601359350604086013567ffffffffffffffff81111561208357600080fd5b61208f88828901611ff6565b96999598509660600135949350505050565b60008060008060008060a087890312156120ba57600080fd5b6120c387611e2c565b955060208701359450604087013567ffffffffffffffff8111156120e657600080fd5b6120f289828a01611ff6565b90955093505060608701359150608087013567ffffffffffffffff81111561211957600080fd5b87016080818a03121561212b57600080fd5b809150509295509295509295565b60006020828403121561214b57600080fd5b611a6082611e2c565b60005b8381101561216f578181015183820152602001612157565b50506000910152565b6020815260008251806020840152612197816040850160208701612154565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b600080600080608085870312156121df57600080fd5b6121e885611e2c565b93506121f660208601611e2c565b925061220460408601611e2c565b915061221260608601611e2c565b905092959194509250565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015260806060820152600061229e60808301848661221d565b979650505050505050565b838152604060208201526000611b7c60408301848661221d565b6001600160a01b036122d482611e2c565b1682526001600160a01b036122eb60208301611e2c565b1660208301526040818101359083015260006060820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe101811261233357600080fd5b820160208101903567ffffffffffffffff81111561235057600080fd5b80360382131561235f57600080fd5b60806060860152611b7c60808601828461221d565b6001600160a01b03871681526001600160a01b038616602082015284604082015260a0606082015260006123ac60a08301858761221d565b82810360808401526123be81856122c3565b9998505050505050505050565b8481526060602082015260006123e560608301858761221d565b828103604084015261229e81856122c3565b60006020828403121561240957600080fd5b5051919050565b60006020828403121561242257600080fd5b81518015158114611a6057600080fd5b60008251612444818460208701612154565b919091019291505056fea26469706673582212202f9a6f6081eedb42be5da327ff3d1d7d400e5676531c1adc96bcfc57737cb71c64736f6c634300081a0033"; + "0x60a060405230608052348015601357600080fd5b5060805161248461003d6000396000818161125d01528181611286015261145c01526124846000f3fe6080604052600436106101965760003560e01c80635e3e9fef116100e1578063950837aa1161008a578063ad3cb1cc11610064578063ad3cb1cc146104f2578063d547741f14610548578063e63ab1e914610568578063f8c8765e1461059c57600080fd5b8063950837aa14610489578063a217fddf146104a9578063a783c789146104be57600080fd5b80638456cb59116100bb5780638456cb59146103db57806385f438c1146103f057806391d148541461042457600080fd5b80635e3e9fef1461037b5780636f8728ad1461039b578063743e0c9b146103bb57600080fd5b806336568abe1161014357806352d1902d1161011d57806352d1902d1461030f5780635b112591146103245780635c975abb1461034457600080fd5b806336568abe146102c75780633f4ba83a146102e75780634f1ef286146102fc57600080fd5b806321e093b11161017457806321e093b11461022a578063248a9ca31461024a5780632f2ff15d146102a757600080fd5b806301ffc9a71461019b578063106e6290146101d0578063116191b6146101f2575b600080fd5b3480156101a757600080fd5b506101bb6101b6366004611dea565b6105bc565b60405190151581526020015b60405180910390f35b3480156101dc57600080fd5b506101f06101eb366004611e48565b610655565b005b3480156101fe57600080fd5b50600054610212906001600160a01b031681565b6040516001600160a01b0390911681526020016101c7565b34801561023657600080fd5b50600154610212906001600160a01b031681565b34801561025657600080fd5b50610299610265366004611e7b565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101c7565b3480156102b357600080fd5b506101f06102c2366004611e94565b610718565b3480156102d357600080fd5b506101f06102e2366004611e94565b610762565b3480156102f357600080fd5b506101f06107ae565b6101f061030a366004611eef565b6107e3565b34801561031b57600080fd5b50610299610802565b34801561033057600080fd5b50600254610212906001600160a01b031681565b34801561035057600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101bb565b34801561038757600080fd5b506101f061039636600461203f565b610831565b3480156103a757600080fd5b506101f06103b63660046120a1565b610985565b3480156103c757600080fd5b506101f06103d6366004611e7b565b610ade565b3480156103e757600080fd5b506101f0610afe565b3480156103fc57600080fd5b506102997f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b34801561043057600080fd5b506101bb61043f366004611e94565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561049557600080fd5b506101f06104a4366004612139565b610b30565b3480156104b557600080fd5b50610299600081565b3480156104ca57600080fd5b506102997f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b3480156104fe57600080fd5b5061053b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101c79190612178565b34801561055457600080fd5b506101f0610563366004611e94565b610cc3565b34801561057457600080fd5b506102997f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b3480156105a857600080fd5b506101f06105b73660046121c9565b610d07565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061064f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61065d610e8e565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461068781610f0f565b61068f610f19565b6001546106a6906001600160a01b03168585610f77565b836001600160a01b03167f3e35ef4326151011878c9e8e968a0f3913fe98ca68f72a1e0c2e9be13ffb3ee9846040516106e191815260200190565b60405180910390a25061071360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461075281610f0f565b61075c8383611011565b50505050565b6001600160a01b03811633146107a4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61071382826110fe565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6107d881610f0f565b6107e06111c2565b50565b6107eb611252565b6107f482611322565b6107fe828261132d565b5050565b600061080c611451565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610839610e8e565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461086381610f0f565b61086b610f19565b600054600154610888916001600160a01b03918216911687610f77565b6000546001546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692635131ab59926108dd929116908a908a908a908a90600401612266565b600060405180830381600087803b1580156108f757600080fd5b505af115801561090b573d6000803e3d6000fd5b50505050856001600160a01b03167f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d86868660405161094c939291906122a9565b60405180910390a25061097e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b61098d610e8e565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46109b781610f0f565b6109bf610f19565b6000546001546109dc916001600160a01b03918216911688610f77565b6000546001546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526001600160a01b039283169263aa0c0fc192610a33929116908b908b908b908b908a90600401612374565b600060405180830381600087803b158015610a4d57600080fd5b505af1158015610a61573d6000803e3d6000fd5b50505050866001600160a01b03167f5272d2fee39bff41b2e763562526315906046373ce08a7bacf76c3080d731ff087878786604051610aa494939291906123cb565b60405180910390a250610ad660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b610ae6610f19565b6001546107e0906001600160a01b03163330846114b3565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610b2881610f0f565b6107e06114ec565b6000610b3b81610f0f565b6001600160a01b038216610b7b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254610bb2907f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4906001600160a01b03166110fe565b50600254610bea907f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb906001600160a01b03166110fe565b50610c157f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483611011565b50610c407f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb83611011565b50600254604080516001600160a01b03928316815291841660208301527f33770ab682353c17917ad3e667f05905fc8dda00671ef1ed33bef9bc8db0323e910160405180910390a150600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610cfd81610f0f565b61075c83836110fe565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610d525750825b905060008267ffffffffffffffff166001148015610d6f5750303b155b905081158015610d7d575080155b15610db4576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610e155784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610e2189898989611565565b8315610e835784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b505050505050505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01610f09576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6107e08133611870565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615610f75576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040516001600160a01b0383811660248301526044820183905261071391859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506118fd565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166110f4576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556110aa3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061064f565b600091505061064f565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156110f4576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061064f565b6111ca611979565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806112eb57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166112df7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610f75576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006107fe81610f0f565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156113a5575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526113a2918101906123f7565b60015b6113eb576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611447576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016113e2565b61071383836119d4565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f75576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040516001600160a01b03848116602483015283811660448301526064820183905261075c9186918216906323b872dd90608401610fa4565b6114f4610f19565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611234565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156115b05750825b905060008267ffffffffffffffff1660011480156115cd5750303b155b9050811580156115db575080155b15611612576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156116735784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038916158061169057506001600160a01b038816155b806116a257506001600160a01b038716155b806116b457506001600160a01b038616155b156116eb576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116f3611a2a565b6116fb611a32565b611703611a2a565b61170b611a42565b600080546001600160a01b03808c167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316178355600180548c831690841617905560028054918b16919092161790556117669087611011565b506117917f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e488611011565b506117bc7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb88611011565b506117e77f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611011565b506118127f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a88611011565b508315610e835784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001610e7a565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166107fe576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016113e2565b60006119126001600160a01b03841683611a52565b905080516000141580156119375750808060200190518101906119359190612410565b155b15610713576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016113e2565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610f75576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119dd82611a67565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611a22576107138282611b0f565b6107fe611b85565b610f75611bbd565b611a3a611bbd565b610f75611c24565b611a4a611bbd565b610f75611c2c565b6060611a6083836000611c7d565b9392505050565b806001600160a01b03163b600003611ab6576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016113e2565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611b2c9190612432565b600060405180830381855af49150503d8060008114611b67576040519150601f19603f3d011682016040523d82523d6000602084013e611b6c565b606091505b5091509150611b7c858383611d33565b95945050505050565b3415610f75576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610f75576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610feb611bbd565b611c34611bbd565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b606081471015611cbb576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016113e2565b600080856001600160a01b03168486604051611cd79190612432565b60006040518083038185875af1925050503d8060008114611d14576040519150601f19603f3d011682016040523d82523d6000602084013e611d19565b606091505b5091509150611d29868383611d33565b9695505050505050565b606082611d4857611d4382611da8565b611a60565b8151158015611d5f57506001600160a01b0384163b155b15611da1576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016113e2565b5080611a60565b805115611db85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215611dfc57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611a6057600080fd5b80356001600160a01b0381168114611e4357600080fd5b919050565b600080600060608486031215611e5d57600080fd5b611e6684611e2c565b95602085013595506040909401359392505050565b600060208284031215611e8d57600080fd5b5035919050565b60008060408385031215611ea757600080fd5b82359150611eb760208401611e2c565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215611f0257600080fd5b611f0b83611e2c565b9150602083013567ffffffffffffffff811115611f2757600080fd5b8301601f81018513611f3857600080fd5b803567ffffffffffffffff811115611f5257611f52611ec0565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715611fbe57611fbe611ec0565b604052818152828201602001871015611fd657600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008083601f84011261200857600080fd5b50813567ffffffffffffffff81111561202057600080fd5b60208301915083602082850101111561203857600080fd5b9250929050565b60008060008060006080868803121561205757600080fd5b61206086611e2c565b945060208601359350604086013567ffffffffffffffff81111561208357600080fd5b61208f88828901611ff6565b96999598509660600135949350505050565b60008060008060008060a087890312156120ba57600080fd5b6120c387611e2c565b955060208701359450604087013567ffffffffffffffff8111156120e657600080fd5b6120f289828a01611ff6565b90955093505060608701359150608087013567ffffffffffffffff81111561211957600080fd5b87016080818a03121561212b57600080fd5b809150509295509295509295565b60006020828403121561214b57600080fd5b611a6082611e2c565b60005b8381101561216f578181015183820152602001612157565b50506000910152565b6020815260008251806020840152612197816040850160208701612154565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b600080600080608085870312156121df57600080fd5b6121e885611e2c565b93506121f660208601611e2c565b925061220460408601611e2c565b915061221260608601611e2c565b905092959194509250565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015260806060820152600061229e60808301848661221d565b979650505050505050565b838152604060208201526000611b7c60408301848661221d565b6001600160a01b036122d482611e2c565b1682526001600160a01b036122eb60208301611e2c565b1660208301526040818101359083015260006060820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe101811261233357600080fd5b820160208101903567ffffffffffffffff81111561235057600080fd5b80360382131561235f57600080fd5b60806060860152611b7c60808601828461221d565b6001600160a01b03871681526001600160a01b038616602082015284604082015260a0606082015260006123ac60a08301858761221d565b82810360808401526123be81856122c3565b9998505050505050505050565b8481526060602082015260006123e560608301858761221d565b828103604084015261229e81856122c3565b60006020828403121561240957600080fd5b5051919050565b60006020828403121561242257600080fd5b81518015158114611a6057600080fd5b60008251612444818460208701612154565b919091019291505056fea264697066735822122088a3c4caa6fac6e05897ea5aa5d2d7bfd7475716ebc3036a69e9eb83e9e72f2c64736f6c634300081a0033"; type ZetaConnectorNativeUpgradeTestConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/ZetaConnectorNative__factory.ts b/v2/types/factories/ZetaConnectorNative__factory.ts index 57e90d030..228ac8124 100644 --- a/v2/types/factories/ZetaConnectorNative__factory.ts +++ b/v2/types/factories/ZetaConnectorNative__factory.ts @@ -820,7 +820,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a060405230608052348015601357600080fd5b5060805161248461003d6000396000818161125d01528181611286015261145c01526124846000f3fe6080604052600436106101965760003560e01c80635e3e9fef116100e1578063950837aa1161008a578063ad3cb1cc11610064578063ad3cb1cc146104f2578063d547741f14610548578063e63ab1e914610568578063f8c8765e1461059c57600080fd5b8063950837aa14610489578063a217fddf146104a9578063a783c789146104be57600080fd5b80638456cb59116100bb5780638456cb59146103db57806385f438c1146103f057806391d148541461042457600080fd5b80635e3e9fef1461037b5780636f8728ad1461039b578063743e0c9b146103bb57600080fd5b806336568abe1161014357806352d1902d1161011d57806352d1902d1461030f5780635b112591146103245780635c975abb1461034457600080fd5b806336568abe146102c75780633f4ba83a146102e75780634f1ef286146102fc57600080fd5b806321e093b11161017457806321e093b11461022a578063248a9ca31461024a5780632f2ff15d146102a757600080fd5b806301ffc9a71461019b578063106e6290146101d0578063116191b6146101f2575b600080fd5b3480156101a757600080fd5b506101bb6101b6366004611dea565b6105bc565b60405190151581526020015b60405180910390f35b3480156101dc57600080fd5b506101f06101eb366004611e48565b610655565b005b3480156101fe57600080fd5b50600054610212906001600160a01b031681565b6040516001600160a01b0390911681526020016101c7565b34801561023657600080fd5b50600154610212906001600160a01b031681565b34801561025657600080fd5b50610299610265366004611e7b565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101c7565b3480156102b357600080fd5b506101f06102c2366004611e94565b610718565b3480156102d357600080fd5b506101f06102e2366004611e94565b610762565b3480156102f357600080fd5b506101f06107ae565b6101f061030a366004611eef565b6107e3565b34801561031b57600080fd5b50610299610802565b34801561033057600080fd5b50600254610212906001600160a01b031681565b34801561035057600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101bb565b34801561038757600080fd5b506101f061039636600461203f565b610831565b3480156103a757600080fd5b506101f06103b63660046120a1565b610985565b3480156103c757600080fd5b506101f06103d6366004611e7b565b610ade565b3480156103e757600080fd5b506101f0610afe565b3480156103fc57600080fd5b506102997f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b34801561043057600080fd5b506101bb61043f366004611e94565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561049557600080fd5b506101f06104a4366004612139565b610b30565b3480156104b557600080fd5b50610299600081565b3480156104ca57600080fd5b506102997f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b3480156104fe57600080fd5b5061053b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101c79190612178565b34801561055457600080fd5b506101f0610563366004611e94565b610cc3565b34801561057457600080fd5b506102997f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b3480156105a857600080fd5b506101f06105b73660046121c9565b610d07565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061064f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61065d610e8e565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461068781610f0f565b61068f610f19565b6001546106a6906001600160a01b03168585610f77565b836001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5846040516106e191815260200190565b60405180910390a25061071360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461075281610f0f565b61075c8383611011565b50505050565b6001600160a01b03811633146107a4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61071382826110fe565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6107d881610f0f565b6107e06111c2565b50565b6107eb611252565b6107f482611322565b6107fe828261132d565b5050565b600061080c611451565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610839610e8e565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461086381610f0f565b61086b610f19565b600054600154610888916001600160a01b03918216911687610f77565b6000546001546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692635131ab59926108dd929116908a908a908a908a90600401612266565b600060405180830381600087803b1580156108f757600080fd5b505af115801561090b573d6000803e3d6000fd5b50505050856001600160a01b03167f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d86868660405161094c939291906122a9565b60405180910390a25061097e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b61098d610e8e565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46109b781610f0f565b6109bf610f19565b6000546001546109dc916001600160a01b03918216911688610f77565b6000546001546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526001600160a01b039283169263aa0c0fc192610a33929116908b908b908b908b908a90600401612374565b600060405180830381600087803b158015610a4d57600080fd5b505af1158015610a61573d6000803e3d6000fd5b50505050866001600160a01b03167f5272d2fee39bff41b2e763562526315906046373ce08a7bacf76c3080d731ff087878786604051610aa494939291906123cb565b60405180910390a250610ad660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b610ae6610f19565b6001546107e0906001600160a01b03163330846114b3565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610b2881610f0f565b6107e06114ec565b6000610b3b81610f0f565b6001600160a01b038216610b7b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254610bb2907f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4906001600160a01b03166110fe565b50600254610bea907f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb906001600160a01b03166110fe565b50610c157f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483611011565b50610c407f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb83611011565b50600254604080516001600160a01b03928316815291841660208301527f33770ab682353c17917ad3e667f05905fc8dda00671ef1ed33bef9bc8db0323e910160405180910390a150600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610cfd81610f0f565b61075c83836110fe565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610d525750825b905060008267ffffffffffffffff166001148015610d6f5750303b155b905081158015610d7d575080155b15610db4576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610e155784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610e2189898989611565565b8315610e835784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b505050505050505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01610f09576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6107e08133611870565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615610f75576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040516001600160a01b0383811660248301526044820183905261071391859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506118fd565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166110f4576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556110aa3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061064f565b600091505061064f565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156110f4576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061064f565b6111ca611979565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806112eb57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166112df7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610f75576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006107fe81610f0f565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156113a5575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526113a2918101906123f7565b60015b6113eb576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611447576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016113e2565b61071383836119d4565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f75576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040516001600160a01b03848116602483015283811660448301526064820183905261075c9186918216906323b872dd90608401610fa4565b6114f4610f19565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611234565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156115b05750825b905060008267ffffffffffffffff1660011480156115cd5750303b155b9050811580156115db575080155b15611612576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156116735784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038916158061169057506001600160a01b038816155b806116a257506001600160a01b038716155b806116b457506001600160a01b038616155b156116eb576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116f3611a2a565b6116fb611a32565b611703611a2a565b61170b611a42565b600080546001600160a01b03808c167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316178355600180548c831690841617905560028054918b16919092161790556117669087611011565b506117917f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e488611011565b506117bc7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb88611011565b506117e77f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611011565b506118127f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a88611011565b508315610e835784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001610e7a565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166107fe576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016113e2565b60006119126001600160a01b03841683611a52565b905080516000141580156119375750808060200190518101906119359190612410565b155b15610713576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016113e2565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610f75576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119dd82611a67565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611a22576107138282611b0f565b6107fe611b85565b610f75611bbd565b611a3a611bbd565b610f75611c24565b611a4a611bbd565b610f75611c2c565b6060611a6083836000611c7d565b9392505050565b806001600160a01b03163b600003611ab6576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016113e2565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611b2c9190612432565b600060405180830381855af49150503d8060008114611b67576040519150601f19603f3d011682016040523d82523d6000602084013e611b6c565b606091505b5091509150611b7c858383611d33565b95945050505050565b3415610f75576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610f75576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610feb611bbd565b611c34611bbd565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b606081471015611cbb576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016113e2565b600080856001600160a01b03168486604051611cd79190612432565b60006040518083038185875af1925050503d8060008114611d14576040519150601f19603f3d011682016040523d82523d6000602084013e611d19565b606091505b5091509150611d29868383611d33565b9695505050505050565b606082611d4857611d4382611da8565b611a60565b8151158015611d5f57506001600160a01b0384163b155b15611da1576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016113e2565b5080611a60565b805115611db85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215611dfc57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611a6057600080fd5b80356001600160a01b0381168114611e4357600080fd5b919050565b600080600060608486031215611e5d57600080fd5b611e6684611e2c565b95602085013595506040909401359392505050565b600060208284031215611e8d57600080fd5b5035919050565b60008060408385031215611ea757600080fd5b82359150611eb760208401611e2c565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215611f0257600080fd5b611f0b83611e2c565b9150602083013567ffffffffffffffff811115611f2757600080fd5b8301601f81018513611f3857600080fd5b803567ffffffffffffffff811115611f5257611f52611ec0565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715611fbe57611fbe611ec0565b604052818152828201602001871015611fd657600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008083601f84011261200857600080fd5b50813567ffffffffffffffff81111561202057600080fd5b60208301915083602082850101111561203857600080fd5b9250929050565b60008060008060006080868803121561205757600080fd5b61206086611e2c565b945060208601359350604086013567ffffffffffffffff81111561208357600080fd5b61208f88828901611ff6565b96999598509660600135949350505050565b60008060008060008060a087890312156120ba57600080fd5b6120c387611e2c565b955060208701359450604087013567ffffffffffffffff8111156120e657600080fd5b6120f289828a01611ff6565b90955093505060608701359150608087013567ffffffffffffffff81111561211957600080fd5b87016080818a03121561212b57600080fd5b809150509295509295509295565b60006020828403121561214b57600080fd5b611a6082611e2c565b60005b8381101561216f578181015183820152602001612157565b50506000910152565b6020815260008251806020840152612197816040850160208701612154565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b600080600080608085870312156121df57600080fd5b6121e885611e2c565b93506121f660208601611e2c565b925061220460408601611e2c565b915061221260608601611e2c565b905092959194509250565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015260806060820152600061229e60808301848661221d565b979650505050505050565b838152604060208201526000611b7c60408301848661221d565b6001600160a01b036122d482611e2c565b1682526001600160a01b036122eb60208301611e2c565b1660208301526040818101359083015260006060820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe101811261233357600080fd5b820160208101903567ffffffffffffffff81111561235057600080fd5b80360382131561235f57600080fd5b60806060860152611b7c60808601828461221d565b6001600160a01b03871681526001600160a01b038616602082015284604082015260a0606082015260006123ac60a08301858761221d565b82810360808401526123be81856122c3565b9998505050505050505050565b8481526060602082015260006123e560608301858761221d565b828103604084015261229e81856122c3565b60006020828403121561240957600080fd5b5051919050565b60006020828403121561242257600080fd5b81518015158114611a6057600080fd5b60008251612444818460208701612154565b919091019291505056fea2646970667358221220e3592dbb2042321b3c2916a43fd004de5bbfb294ec39d5ed1282e8b320867a7764736f6c634300081a0033"; + "0x60a060405230608052348015601357600080fd5b5060805161248461003d6000396000818161125d01528181611286015261145c01526124846000f3fe6080604052600436106101965760003560e01c80635e3e9fef116100e1578063950837aa1161008a578063ad3cb1cc11610064578063ad3cb1cc146104f2578063d547741f14610548578063e63ab1e914610568578063f8c8765e1461059c57600080fd5b8063950837aa14610489578063a217fddf146104a9578063a783c789146104be57600080fd5b80638456cb59116100bb5780638456cb59146103db57806385f438c1146103f057806391d148541461042457600080fd5b80635e3e9fef1461037b5780636f8728ad1461039b578063743e0c9b146103bb57600080fd5b806336568abe1161014357806352d1902d1161011d57806352d1902d1461030f5780635b112591146103245780635c975abb1461034457600080fd5b806336568abe146102c75780633f4ba83a146102e75780634f1ef286146102fc57600080fd5b806321e093b11161017457806321e093b11461022a578063248a9ca31461024a5780632f2ff15d146102a757600080fd5b806301ffc9a71461019b578063106e6290146101d0578063116191b6146101f2575b600080fd5b3480156101a757600080fd5b506101bb6101b6366004611dea565b6105bc565b60405190151581526020015b60405180910390f35b3480156101dc57600080fd5b506101f06101eb366004611e48565b610655565b005b3480156101fe57600080fd5b50600054610212906001600160a01b031681565b6040516001600160a01b0390911681526020016101c7565b34801561023657600080fd5b50600154610212906001600160a01b031681565b34801561025657600080fd5b50610299610265366004611e7b565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101c7565b3480156102b357600080fd5b506101f06102c2366004611e94565b610718565b3480156102d357600080fd5b506101f06102e2366004611e94565b610762565b3480156102f357600080fd5b506101f06107ae565b6101f061030a366004611eef565b6107e3565b34801561031b57600080fd5b50610299610802565b34801561033057600080fd5b50600254610212906001600160a01b031681565b34801561035057600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101bb565b34801561038757600080fd5b506101f061039636600461203f565b610831565b3480156103a757600080fd5b506101f06103b63660046120a1565b610985565b3480156103c757600080fd5b506101f06103d6366004611e7b565b610ade565b3480156103e757600080fd5b506101f0610afe565b3480156103fc57600080fd5b506102997f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b34801561043057600080fd5b506101bb61043f366004611e94565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561049557600080fd5b506101f06104a4366004612139565b610b30565b3480156104b557600080fd5b50610299600081565b3480156104ca57600080fd5b506102997f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b3480156104fe57600080fd5b5061053b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101c79190612178565b34801561055457600080fd5b506101f0610563366004611e94565b610cc3565b34801561057457600080fd5b506102997f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b3480156105a857600080fd5b506101f06105b73660046121c9565b610d07565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061064f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61065d610e8e565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461068781610f0f565b61068f610f19565b6001546106a6906001600160a01b03168585610f77565b836001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5846040516106e191815260200190565b60405180910390a25061071360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461075281610f0f565b61075c8383611011565b50505050565b6001600160a01b03811633146107a4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61071382826110fe565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6107d881610f0f565b6107e06111c2565b50565b6107eb611252565b6107f482611322565b6107fe828261132d565b5050565b600061080c611451565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610839610e8e565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e461086381610f0f565b61086b610f19565b600054600154610888916001600160a01b03918216911687610f77565b6000546001546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692635131ab59926108dd929116908a908a908a908a90600401612266565b600060405180830381600087803b1580156108f757600080fd5b505af115801561090b573d6000803e3d6000fd5b50505050856001600160a01b03167f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d86868660405161094c939291906122a9565b60405180910390a25061097e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b61098d610e8e565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46109b781610f0f565b6109bf610f19565b6000546001546109dc916001600160a01b03918216911688610f77565b6000546001546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526001600160a01b039283169263aa0c0fc192610a33929116908b908b908b908b908a90600401612374565b600060405180830381600087803b158015610a4d57600080fd5b505af1158015610a61573d6000803e3d6000fd5b50505050866001600160a01b03167f5272d2fee39bff41b2e763562526315906046373ce08a7bacf76c3080d731ff087878786604051610aa494939291906123cb565b60405180910390a250610ad660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b610ae6610f19565b6001546107e0906001600160a01b03163330846114b3565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610b2881610f0f565b6107e06114ec565b6000610b3b81610f0f565b6001600160a01b038216610b7b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254610bb2907f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4906001600160a01b03166110fe565b50600254610bea907f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb906001600160a01b03166110fe565b50610c157f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483611011565b50610c407f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb83611011565b50600254604080516001600160a01b03928316815291841660208301527f33770ab682353c17917ad3e667f05905fc8dda00671ef1ed33bef9bc8db0323e910160405180910390a150600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610cfd81610f0f565b61075c83836110fe565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610d525750825b905060008267ffffffffffffffff166001148015610d6f5750303b155b905081158015610d7d575080155b15610db4576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610e155784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610e2189898989611565565b8315610e835784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b505050505050505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01610f09576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6107e08133611870565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615610f75576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040516001600160a01b0383811660248301526044820183905261071391859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506118fd565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166110f4576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556110aa3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061064f565b600091505061064f565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156110f4576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061064f565b6111ca611979565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806112eb57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166112df7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610f75576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006107fe81610f0f565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156113a5575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526113a2918101906123f7565b60015b6113eb576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611447576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016113e2565b61071383836119d4565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f75576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040516001600160a01b03848116602483015283811660448301526064820183905261075c9186918216906323b872dd90608401610fa4565b6114f4610f19565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611234565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156115b05750825b905060008267ffffffffffffffff1660011480156115cd5750303b155b9050811580156115db575080155b15611612576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156116735784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038916158061169057506001600160a01b038816155b806116a257506001600160a01b038716155b806116b457506001600160a01b038616155b156116eb576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116f3611a2a565b6116fb611a32565b611703611a2a565b61170b611a42565b600080546001600160a01b03808c167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316178355600180548c831690841617905560028054918b16919092161790556117669087611011565b506117917f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e488611011565b506117bc7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb88611011565b506117e77f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611011565b506118127f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a88611011565b508315610e835784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001610e7a565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166107fe576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016113e2565b60006119126001600160a01b03841683611a52565b905080516000141580156119375750808060200190518101906119359190612410565b155b15610713576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016113e2565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610f75576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119dd82611a67565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611a22576107138282611b0f565b6107fe611b85565b610f75611bbd565b611a3a611bbd565b610f75611c24565b611a4a611bbd565b610f75611c2c565b6060611a6083836000611c7d565b9392505050565b806001600160a01b03163b600003611ab6576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016113e2565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611b2c9190612432565b600060405180830381855af49150503d8060008114611b67576040519150601f19603f3d011682016040523d82523d6000602084013e611b6c565b606091505b5091509150611b7c858383611d33565b95945050505050565b3415610f75576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610f75576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610feb611bbd565b611c34611bbd565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b606081471015611cbb576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016113e2565b600080856001600160a01b03168486604051611cd79190612432565b60006040518083038185875af1925050503d8060008114611d14576040519150601f19603f3d011682016040523d82523d6000602084013e611d19565b606091505b5091509150611d29868383611d33565b9695505050505050565b606082611d4857611d4382611da8565b611a60565b8151158015611d5f57506001600160a01b0384163b155b15611da1576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016113e2565b5080611a60565b805115611db85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215611dfc57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611a6057600080fd5b80356001600160a01b0381168114611e4357600080fd5b919050565b600080600060608486031215611e5d57600080fd5b611e6684611e2c565b95602085013595506040909401359392505050565b600060208284031215611e8d57600080fd5b5035919050565b60008060408385031215611ea757600080fd5b82359150611eb760208401611e2c565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215611f0257600080fd5b611f0b83611e2c565b9150602083013567ffffffffffffffff811115611f2757600080fd5b8301601f81018513611f3857600080fd5b803567ffffffffffffffff811115611f5257611f52611ec0565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715611fbe57611fbe611ec0565b604052818152828201602001871015611fd657600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008083601f84011261200857600080fd5b50813567ffffffffffffffff81111561202057600080fd5b60208301915083602082850101111561203857600080fd5b9250929050565b60008060008060006080868803121561205757600080fd5b61206086611e2c565b945060208601359350604086013567ffffffffffffffff81111561208357600080fd5b61208f88828901611ff6565b96999598509660600135949350505050565b60008060008060008060a087890312156120ba57600080fd5b6120c387611e2c565b955060208701359450604087013567ffffffffffffffff8111156120e657600080fd5b6120f289828a01611ff6565b90955093505060608701359150608087013567ffffffffffffffff81111561211957600080fd5b87016080818a03121561212b57600080fd5b809150509295509295509295565b60006020828403121561214b57600080fd5b611a6082611e2c565b60005b8381101561216f578181015183820152602001612157565b50506000910152565b6020815260008251806020840152612197816040850160208701612154565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b600080600080608085870312156121df57600080fd5b6121e885611e2c565b93506121f660208601611e2c565b925061220460408601611e2c565b915061221260608601611e2c565b905092959194509250565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015260806060820152600061229e60808301848661221d565b979650505050505050565b838152604060208201526000611b7c60408301848661221d565b6001600160a01b036122d482611e2c565b1682526001600160a01b036122eb60208301611e2c565b1660208301526040818101359083015260006060820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe101811261233357600080fd5b820160208101903567ffffffffffffffff81111561235057600080fd5b80360382131561235f57600080fd5b60806060860152611b7c60808601828461221d565b6001600160a01b03871681526001600160a01b038616602082015284604082015260a0606082015260006123ac60a08301858761221d565b82810360808401526123be81856122c3565b9998505050505050505050565b8481526060602082015260006123e560608301858761221d565b828103604084015261229e81856122c3565b60006020828403121561240957600080fd5b5051919050565b60006020828403121561242257600080fd5b81518015158114611a6057600080fd5b60008251612444818460208701612154565b919091019291505056fea26469706673582212204ec109dc2211b9bb584bcf097d6201f1b7f8e8c32266e62be879ded339e643b164736f6c634300081a0033"; type ZetaConnectorNativeConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/ZetaConnectorNonNativeUpgradeTest__factory.ts b/v2/types/factories/ZetaConnectorNonNativeUpgradeTest__factory.ts index c40532431..e8f05c94b 100644 --- a/v2/types/factories/ZetaConnectorNonNativeUpgradeTest__factory.ts +++ b/v2/types/factories/ZetaConnectorNonNativeUpgradeTest__factory.ts @@ -861,7 +861,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a060405230608052348015601357600080fd5b5060805161251961003d6000396000818161145701528181611480015261165601526125196000f3fe6080604052600436106101ac5760003560e01c80636f8728ad116100ec578063a217fddf1161008a578063d547741f11610064578063d547741f1461057e578063d5abeb011461059e578063e63ab1e9146105b4578063f8c8765e146105e857600080fd5b8063a217fddf146104df578063a783c789146104f4578063ad3cb1cc1461052857600080fd5b80638456cb59116100c65780638456cb591461041157806385f438c11461042657806391d148541461045a578063950837aa146104bf57600080fd5b80636f8728ad146103b15780636f8b44b0146103d1578063743e0c9b146103f157600080fd5b806336568abe1161015957806352d1902d1161013357806352d1902d146103255780635b1125911461033a5780635c975abb1461035a5780635e3e9fef1461039157600080fd5b806336568abe146102dd5780633f4ba83a146102fd5780634f1ef2861461031257600080fd5b806321e093b11161018a57806321e093b114610240578063248a9ca3146102605780632f2ff15d146102bd57600080fd5b806301ffc9a7146101b1578063106e6290146101e6578063116191b614610208575b600080fd5b3480156101bd57600080fd5b506101d16101cc366004611e67565b610608565b60405190151581526020015b60405180910390f35b3480156101f257600080fd5b50610206610201366004611ec5565b6106a1565b005b34801561021457600080fd5b50600054610228906001600160a01b031681565b6040516001600160a01b0390911681526020016101dd565b34801561024c57600080fd5b50600154610228906001600160a01b031681565b34801561026c57600080fd5b506102af61027b366004611ef8565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101dd565b3480156102c957600080fd5b506102066102d8366004611f11565b610758565b3480156102e957600080fd5b506102066102f8366004611f11565b6107a2565b34801561030957600080fd5b506102066107ee565b610206610320366004611f6c565b610823565b34801561033157600080fd5b506102af610842565b34801561034657600080fd5b50600254610228906001600160a01b031681565b34801561036657600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101d1565b34801561039d57600080fd5b506102066103ac3660046120bc565b610871565b3480156103bd57600080fd5b506102066103cc36600461211e565b6109bf565b3480156103dd57600080fd5b506102066103ec366004611ef8565b610b12565b3480156103fd57600080fd5b5061020661040c366004611ef8565b610b80565b34801561041d57600080fd5b50610206610c01565b34801561043257600080fd5b506102af7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b34801561046657600080fd5b506101d1610475366004611f11565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156104cb57600080fd5b506102066104da3660046121b6565b610c33565b3480156104eb57600080fd5b506102af600081565b34801561050057600080fd5b506102af7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561053457600080fd5b506105716040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101dd91906121f5565b34801561058a57600080fd5b50610206610599366004611f11565b610dc6565b3480156105aa57600080fd5b506102af60035481565b3480156105c057600080fd5b506102af7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b3480156105f457600080fd5b50610206610603366004612246565b610e0a565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061069b57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6106a9610fb5565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46106d381611036565b6106db611040565b6106e684848461109e565b836001600160a01b03167f3e35ef4326151011878c9e8e968a0f3913fe98ca68f72a1e0c2e9be13ffb3ee98460405161072191815260200190565b60405180910390a25061075360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461079281611036565b61079c838361120b565b50505050565b6001600160a01b03811633146107e4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61075382826112f8565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61081881611036565b6108206113bc565b50565b61082b61144c565b6108348261151c565b61083e8282611527565b5050565b600061084c61164b565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610879610fb5565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46108a381611036565b6108ab611040565b6000546108c2906001600160a01b0316868461109e565b6000546001546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692635131ab5992610917929116908a908a908a908a906004016122e3565b600060405180830381600087803b15801561093157600080fd5b505af1158015610945573d6000803e3d6000fd5b50505050856001600160a01b03167f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d86868660405161098693929190612326565b60405180910390a2506109b860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6109c7610fb5565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46109f181611036565b6109f9611040565b600054610a10906001600160a01b0316878561109e565b6000546001546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526001600160a01b039283169263aa0c0fc192610a67929116908b908b908b908b908a906004016123f1565b600060405180830381600087803b158015610a8157600080fd5b505af1158015610a95573d6000803e3d6000fd5b50505050866001600160a01b03167f5272d2fee39bff41b2e763562526315906046373ce08a7bacf76c3080d731ff087878786604051610ad89493929190612448565b60405180910390a250610b0a60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610b3c81611036565b610b44611040565b60038290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610b88611040565b6001546040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018390526001600160a01b03909116906379cc679090604401600060405180830381600087803b158015610bed57600080fd5b505af11580156109b8573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610c2b81611036565b6108206116ad565b6000610c3e81611036565b6001600160a01b038216610c7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254610cb5907f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4906001600160a01b03166112f8565b50600254610ced907f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb906001600160a01b03166112f8565b50610d187f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48361120b565b50610d437f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb8361120b565b50600254604080516001600160a01b03928316815291841660208301527f33770ab682353c17917ad3e667f05905fc8dda00671ef1ed33bef9bc8db0323e910160405180910390a150600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610e0081611036565b61079c83836112f8565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610e555750825b905060008267ffffffffffffffff166001148015610e725750303b155b905081158015610e80575080155b15610eb7576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610f185784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610f2489898989611726565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6003558315610faa5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b505050505050505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611030576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6108208133611a31565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff161561109c576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600354600160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111189190612474565b611122908461248d565b111561115a576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040517f1e458bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018590526044820184905290911690631e458bee90606401600060405180830381600087803b1580156111c857600080fd5b505af11580156111dc573d6000803e3d6000fd5b50505050505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166112ee576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556112a43390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061069b565b600091505061069b565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156112ee576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061069b565b6113c4611abe565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806114e557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114d97f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b1561109c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061083e81611036565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561159f575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261159c91810190612474565b60015b6115e5576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611641576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016115dc565b6107538383611b19565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461109c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116b5611040565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361142e565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156117715750825b905060008267ffffffffffffffff16600114801561178e5750303b155b90508115801561179c575080155b156117d3576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156118345784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038916158061185157506001600160a01b038816155b8061186357506001600160a01b038716155b8061187557506001600160a01b038616155b156118ac576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118b4611b6f565b6118bc611b77565b6118c4611b6f565b6118cc611b87565b600080546001600160a01b03808c167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316178355600180548c831690841617905560028054918b1691909216179055611927908761120b565b506119527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48861120b565b5061197d7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb8861120b565b506119a87f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8761120b565b506119d37f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8861120b565b508315610faa5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001610fa1565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff1661083e576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016115dc565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1661109c576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b2282611b97565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b67576107538282611c3f565b61083e611cb5565b61109c611ced565b611b7f611ced565b61109c611d54565b611b8f611ced565b61109c611d5c565b806001600160a01b03163b600003611be6576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016115dc565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611c5c91906124c7565b600060405180830381855af49150503d8060008114611c97576040519150601f19603f3d011682016040523d82523d6000602084013e611c9c565b606091505b5091509150611cac858383611dad565b95945050505050565b341561109c576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661109c576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111e5611ced565b611d64611ced565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b606082611dc257611dbd82611e25565b611e1e565b8151158015611dd957506001600160a01b0384163b155b15611e1b576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016115dc565b50805b9392505050565b805115611e355780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215611e7957600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611e1e57600080fd5b80356001600160a01b0381168114611ec057600080fd5b919050565b600080600060608486031215611eda57600080fd5b611ee384611ea9565b95602085013595506040909401359392505050565b600060208284031215611f0a57600080fd5b5035919050565b60008060408385031215611f2457600080fd5b82359150611f3460208401611ea9565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215611f7f57600080fd5b611f8883611ea9565b9150602083013567ffffffffffffffff811115611fa457600080fd5b8301601f81018513611fb557600080fd5b803567ffffffffffffffff811115611fcf57611fcf611f3d565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561203b5761203b611f3d565b60405281815282820160200187101561205357600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008083601f84011261208557600080fd5b50813567ffffffffffffffff81111561209d57600080fd5b6020830191508360208285010111156120b557600080fd5b9250929050565b6000806000806000608086880312156120d457600080fd5b6120dd86611ea9565b945060208601359350604086013567ffffffffffffffff81111561210057600080fd5b61210c88828901612073565b96999598509660600135949350505050565b60008060008060008060a0878903121561213757600080fd5b61214087611ea9565b955060208701359450604087013567ffffffffffffffff81111561216357600080fd5b61216f89828a01612073565b90955093505060608701359150608087013567ffffffffffffffff81111561219657600080fd5b87016080818a0312156121a857600080fd5b809150509295509295509295565b6000602082840312156121c857600080fd5b611e1e82611ea9565b60005b838110156121ec5781810151838201526020016121d4565b50506000910152565b60208152600082518060208401526122148160408501602087016121d1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000806000806080858703121561225c57600080fd5b61226585611ea9565b935061227360208601611ea9565b925061228160408601611ea9565b915061228f60608601611ea9565b905092959194509250565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015260806060820152600061231b60808301848661229a565b979650505050505050565b838152604060208201526000611cac60408301848661229a565b6001600160a01b0361235182611ea9565b1682526001600160a01b0361236860208301611ea9565b1660208301526040818101359083015260006060820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe10181126123b057600080fd5b820160208101903567ffffffffffffffff8111156123cd57600080fd5b8036038213156123dc57600080fd5b60806060860152611cac60808601828461229a565b6001600160a01b03871681526001600160a01b038616602082015284604082015260a06060820152600061242960a08301858761229a565b828103608084015261243b8185612340565b9998505050505050505050565b84815260606020820152600061246260608301858761229a565b828103604084015261231b8185612340565b60006020828403121561248657600080fd5b5051919050565b8082018082111561069b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082516124d98184602087016121d1565b919091019291505056fea26469706673582212204813daad458b8c103dfebd07f6ec74ee1d40a7eec885cae6963c827c7daf36af64736f6c634300081a0033"; + "0x60a060405230608052348015601357600080fd5b5060805161251961003d6000396000818161145701528181611480015261165601526125196000f3fe6080604052600436106101ac5760003560e01c80636f8728ad116100ec578063a217fddf1161008a578063d547741f11610064578063d547741f1461057e578063d5abeb011461059e578063e63ab1e9146105b4578063f8c8765e146105e857600080fd5b8063a217fddf146104df578063a783c789146104f4578063ad3cb1cc1461052857600080fd5b80638456cb59116100c65780638456cb591461041157806385f438c11461042657806391d148541461045a578063950837aa146104bf57600080fd5b80636f8728ad146103b15780636f8b44b0146103d1578063743e0c9b146103f157600080fd5b806336568abe1161015957806352d1902d1161013357806352d1902d146103255780635b1125911461033a5780635c975abb1461035a5780635e3e9fef1461039157600080fd5b806336568abe146102dd5780633f4ba83a146102fd5780634f1ef2861461031257600080fd5b806321e093b11161018a57806321e093b114610240578063248a9ca3146102605780632f2ff15d146102bd57600080fd5b806301ffc9a7146101b1578063106e6290146101e6578063116191b614610208575b600080fd5b3480156101bd57600080fd5b506101d16101cc366004611e67565b610608565b60405190151581526020015b60405180910390f35b3480156101f257600080fd5b50610206610201366004611ec5565b6106a1565b005b34801561021457600080fd5b50600054610228906001600160a01b031681565b6040516001600160a01b0390911681526020016101dd565b34801561024c57600080fd5b50600154610228906001600160a01b031681565b34801561026c57600080fd5b506102af61027b366004611ef8565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101dd565b3480156102c957600080fd5b506102066102d8366004611f11565b610758565b3480156102e957600080fd5b506102066102f8366004611f11565b6107a2565b34801561030957600080fd5b506102066107ee565b610206610320366004611f6c565b610823565b34801561033157600080fd5b506102af610842565b34801561034657600080fd5b50600254610228906001600160a01b031681565b34801561036657600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101d1565b34801561039d57600080fd5b506102066103ac3660046120bc565b610871565b3480156103bd57600080fd5b506102066103cc36600461211e565b6109bf565b3480156103dd57600080fd5b506102066103ec366004611ef8565b610b12565b3480156103fd57600080fd5b5061020661040c366004611ef8565b610b80565b34801561041d57600080fd5b50610206610c01565b34801561043257600080fd5b506102af7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b34801561046657600080fd5b506101d1610475366004611f11565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156104cb57600080fd5b506102066104da3660046121b6565b610c33565b3480156104eb57600080fd5b506102af600081565b34801561050057600080fd5b506102af7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561053457600080fd5b506105716040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101dd91906121f5565b34801561058a57600080fd5b50610206610599366004611f11565b610dc6565b3480156105aa57600080fd5b506102af60035481565b3480156105c057600080fd5b506102af7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b3480156105f457600080fd5b50610206610603366004612246565b610e0a565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061069b57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6106a9610fb5565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46106d381611036565b6106db611040565b6106e684848461109e565b836001600160a01b03167f3e35ef4326151011878c9e8e968a0f3913fe98ca68f72a1e0c2e9be13ffb3ee98460405161072191815260200190565b60405180910390a25061075360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461079281611036565b61079c838361120b565b50505050565b6001600160a01b03811633146107e4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61075382826112f8565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61081881611036565b6108206113bc565b50565b61082b61144c565b6108348261151c565b61083e8282611527565b5050565b600061084c61164b565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610879610fb5565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46108a381611036565b6108ab611040565b6000546108c2906001600160a01b0316868461109e565b6000546001546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692635131ab5992610917929116908a908a908a908a906004016122e3565b600060405180830381600087803b15801561093157600080fd5b505af1158015610945573d6000803e3d6000fd5b50505050856001600160a01b03167f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d86868660405161098693929190612326565b60405180910390a2506109b860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6109c7610fb5565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46109f181611036565b6109f9611040565b600054610a10906001600160a01b0316878561109e565b6000546001546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526001600160a01b039283169263aa0c0fc192610a67929116908b908b908b908b908a906004016123f1565b600060405180830381600087803b158015610a8157600080fd5b505af1158015610a95573d6000803e3d6000fd5b50505050866001600160a01b03167f5272d2fee39bff41b2e763562526315906046373ce08a7bacf76c3080d731ff087878786604051610ad89493929190612448565b60405180910390a250610b0a60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610b3c81611036565b610b44611040565b60038290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610b88611040565b6001546040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018390526001600160a01b03909116906379cc679090604401600060405180830381600087803b158015610bed57600080fd5b505af11580156109b8573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610c2b81611036565b6108206116ad565b6000610c3e81611036565b6001600160a01b038216610c7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254610cb5907f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4906001600160a01b03166112f8565b50600254610ced907f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb906001600160a01b03166112f8565b50610d187f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48361120b565b50610d437f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb8361120b565b50600254604080516001600160a01b03928316815291841660208301527f33770ab682353c17917ad3e667f05905fc8dda00671ef1ed33bef9bc8db0323e910160405180910390a150600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610e0081611036565b61079c83836112f8565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610e555750825b905060008267ffffffffffffffff166001148015610e725750303b155b905081158015610e80575080155b15610eb7576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610f185784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610f2489898989611726565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6003558315610faa5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b505050505050505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611030576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6108208133611a31565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff161561109c576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600354600160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111189190612474565b611122908461248d565b111561115a576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040517f1e458bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018590526044820184905290911690631e458bee90606401600060405180830381600087803b1580156111c857600080fd5b505af11580156111dc573d6000803e3d6000fd5b50505050505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166112ee576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556112a43390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061069b565b600091505061069b565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156112ee576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061069b565b6113c4611abe565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806114e557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114d97f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b1561109c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061083e81611036565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561159f575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261159c91810190612474565b60015b6115e5576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611641576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016115dc565b6107538383611b19565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461109c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116b5611040565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361142e565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156117715750825b905060008267ffffffffffffffff16600114801561178e5750303b155b90508115801561179c575080155b156117d3576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156118345784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038916158061185157506001600160a01b038816155b8061186357506001600160a01b038716155b8061187557506001600160a01b038616155b156118ac576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118b4611b6f565b6118bc611b77565b6118c4611b6f565b6118cc611b87565b600080546001600160a01b03808c167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316178355600180548c831690841617905560028054918b1691909216179055611927908761120b565b506119527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48861120b565b5061197d7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb8861120b565b506119a87f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8761120b565b506119d37f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8861120b565b508315610faa5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001610fa1565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff1661083e576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016115dc565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1661109c576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b2282611b97565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b67576107538282611c3f565b61083e611cb5565b61109c611ced565b611b7f611ced565b61109c611d54565b611b8f611ced565b61109c611d5c565b806001600160a01b03163b600003611be6576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016115dc565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611c5c91906124c7565b600060405180830381855af49150503d8060008114611c97576040519150601f19603f3d011682016040523d82523d6000602084013e611c9c565b606091505b5091509150611cac858383611dad565b95945050505050565b341561109c576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661109c576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111e5611ced565b611d64611ced565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b606082611dc257611dbd82611e25565b611e1e565b8151158015611dd957506001600160a01b0384163b155b15611e1b576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016115dc565b50805b9392505050565b805115611e355780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215611e7957600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611e1e57600080fd5b80356001600160a01b0381168114611ec057600080fd5b919050565b600080600060608486031215611eda57600080fd5b611ee384611ea9565b95602085013595506040909401359392505050565b600060208284031215611f0a57600080fd5b5035919050565b60008060408385031215611f2457600080fd5b82359150611f3460208401611ea9565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215611f7f57600080fd5b611f8883611ea9565b9150602083013567ffffffffffffffff811115611fa457600080fd5b8301601f81018513611fb557600080fd5b803567ffffffffffffffff811115611fcf57611fcf611f3d565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561203b5761203b611f3d565b60405281815282820160200187101561205357600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008083601f84011261208557600080fd5b50813567ffffffffffffffff81111561209d57600080fd5b6020830191508360208285010111156120b557600080fd5b9250929050565b6000806000806000608086880312156120d457600080fd5b6120dd86611ea9565b945060208601359350604086013567ffffffffffffffff81111561210057600080fd5b61210c88828901612073565b96999598509660600135949350505050565b60008060008060008060a0878903121561213757600080fd5b61214087611ea9565b955060208701359450604087013567ffffffffffffffff81111561216357600080fd5b61216f89828a01612073565b90955093505060608701359150608087013567ffffffffffffffff81111561219657600080fd5b87016080818a0312156121a857600080fd5b809150509295509295509295565b6000602082840312156121c857600080fd5b611e1e82611ea9565b60005b838110156121ec5781810151838201526020016121d4565b50506000910152565b60208152600082518060208401526122148160408501602087016121d1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000806000806080858703121561225c57600080fd5b61226585611ea9565b935061227360208601611ea9565b925061228160408601611ea9565b915061228f60608601611ea9565b905092959194509250565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015260806060820152600061231b60808301848661229a565b979650505050505050565b838152604060208201526000611cac60408301848661229a565b6001600160a01b0361235182611ea9565b1682526001600160a01b0361236860208301611ea9565b1660208301526040818101359083015260006060820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe10181126123b057600080fd5b820160208101903567ffffffffffffffff8111156123cd57600080fd5b8036038213156123dc57600080fd5b60806060860152611cac60808601828461229a565b6001600160a01b03871681526001600160a01b038616602082015284604082015260a06060820152600061242960a08301858761229a565b828103608084015261243b8185612340565b9998505050505050505050565b84815260606020820152600061246260608301858761229a565b828103604084015261231b8185612340565b60006020828403121561248657600080fd5b5051919050565b8082018082111561069b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082516124d98184602087016121d1565b919091019291505056fea2646970667358221220eba4c2f5dade5ff34217048d440008758a00a1202245b68fa99aa106f7b708de64736f6c634300081a0033"; type ZetaConnectorNonNativeUpgradeTestConstructorParams = | [signer?: Signer] diff --git a/v2/types/factories/ZetaConnectorNonNative__factory.ts b/v2/types/factories/ZetaConnectorNonNative__factory.ts index 89cce6586..c3e4f1f3c 100644 --- a/v2/types/factories/ZetaConnectorNonNative__factory.ts +++ b/v2/types/factories/ZetaConnectorNonNative__factory.ts @@ -842,7 +842,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a060405230608052348015601357600080fd5b5060805161251961003d6000396000818161145701528181611480015261165601526125196000f3fe6080604052600436106101ac5760003560e01c80636f8728ad116100ec578063a217fddf1161008a578063d547741f11610064578063d547741f1461057e578063d5abeb011461059e578063e63ab1e9146105b4578063f8c8765e146105e857600080fd5b8063a217fddf146104df578063a783c789146104f4578063ad3cb1cc1461052857600080fd5b80638456cb59116100c65780638456cb591461041157806385f438c11461042657806391d148541461045a578063950837aa146104bf57600080fd5b80636f8728ad146103b15780636f8b44b0146103d1578063743e0c9b146103f157600080fd5b806336568abe1161015957806352d1902d1161013357806352d1902d146103255780635b1125911461033a5780635c975abb1461035a5780635e3e9fef1461039157600080fd5b806336568abe146102dd5780633f4ba83a146102fd5780634f1ef2861461031257600080fd5b806321e093b11161018a57806321e093b114610240578063248a9ca3146102605780632f2ff15d146102bd57600080fd5b806301ffc9a7146101b1578063106e6290146101e6578063116191b614610208575b600080fd5b3480156101bd57600080fd5b506101d16101cc366004611e67565b610608565b60405190151581526020015b60405180910390f35b3480156101f257600080fd5b50610206610201366004611ec5565b6106a1565b005b34801561021457600080fd5b50600054610228906001600160a01b031681565b6040516001600160a01b0390911681526020016101dd565b34801561024c57600080fd5b50600154610228906001600160a01b031681565b34801561026c57600080fd5b506102af61027b366004611ef8565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101dd565b3480156102c957600080fd5b506102066102d8366004611f11565b610758565b3480156102e957600080fd5b506102066102f8366004611f11565b6107a2565b34801561030957600080fd5b506102066107ee565b610206610320366004611f6c565b610823565b34801561033157600080fd5b506102af610842565b34801561034657600080fd5b50600254610228906001600160a01b031681565b34801561036657600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101d1565b34801561039d57600080fd5b506102066103ac3660046120bc565b610871565b3480156103bd57600080fd5b506102066103cc36600461211e565b6109bf565b3480156103dd57600080fd5b506102066103ec366004611ef8565b610b12565b3480156103fd57600080fd5b5061020661040c366004611ef8565b610b80565b34801561041d57600080fd5b50610206610c01565b34801561043257600080fd5b506102af7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b34801561046657600080fd5b506101d1610475366004611f11565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156104cb57600080fd5b506102066104da3660046121b6565b610c33565b3480156104eb57600080fd5b506102af600081565b34801561050057600080fd5b506102af7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561053457600080fd5b506105716040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101dd91906121f5565b34801561058a57600080fd5b50610206610599366004611f11565b610dc6565b3480156105aa57600080fd5b506102af60035481565b3480156105c057600080fd5b506102af7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b3480156105f457600080fd5b50610206610603366004612246565b610e0a565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061069b57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6106a9610fb5565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46106d381611036565b6106db611040565b6106e684848461109e565b836001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d58460405161072191815260200190565b60405180910390a25061075360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461079281611036565b61079c838361120b565b50505050565b6001600160a01b03811633146107e4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61075382826112f8565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61081881611036565b6108206113bc565b50565b61082b61144c565b6108348261151c565b61083e8282611527565b5050565b600061084c61164b565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610879610fb5565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46108a381611036565b6108ab611040565b6000546108c2906001600160a01b0316868461109e565b6000546001546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692635131ab5992610917929116908a908a908a908a906004016122e3565b600060405180830381600087803b15801561093157600080fd5b505af1158015610945573d6000803e3d6000fd5b50505050856001600160a01b03167f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d86868660405161098693929190612326565b60405180910390a2506109b860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6109c7610fb5565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46109f181611036565b6109f9611040565b600054610a10906001600160a01b0316878561109e565b6000546001546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526001600160a01b039283169263aa0c0fc192610a67929116908b908b908b908b908a906004016123f1565b600060405180830381600087803b158015610a8157600080fd5b505af1158015610a95573d6000803e3d6000fd5b50505050866001600160a01b03167f5272d2fee39bff41b2e763562526315906046373ce08a7bacf76c3080d731ff087878786604051610ad89493929190612448565b60405180910390a250610b0a60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610b3c81611036565b610b44611040565b60038290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610b88611040565b6001546040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018390526001600160a01b03909116906379cc679090604401600060405180830381600087803b158015610bed57600080fd5b505af11580156109b8573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610c2b81611036565b6108206116ad565b6000610c3e81611036565b6001600160a01b038216610c7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254610cb5907f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4906001600160a01b03166112f8565b50600254610ced907f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb906001600160a01b03166112f8565b50610d187f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48361120b565b50610d437f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb8361120b565b50600254604080516001600160a01b03928316815291841660208301527f33770ab682353c17917ad3e667f05905fc8dda00671ef1ed33bef9bc8db0323e910160405180910390a150600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610e0081611036565b61079c83836112f8565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610e555750825b905060008267ffffffffffffffff166001148015610e725750303b155b905081158015610e80575080155b15610eb7576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610f185784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610f2489898989611726565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6003558315610faa5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b505050505050505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611030576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6108208133611a31565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff161561109c576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600354600160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111189190612474565b611122908461248d565b111561115a576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040517f1e458bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018590526044820184905290911690631e458bee90606401600060405180830381600087803b1580156111c857600080fd5b505af11580156111dc573d6000803e3d6000fd5b50505050505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166112ee576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556112a43390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061069b565b600091505061069b565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156112ee576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061069b565b6113c4611abe565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806114e557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114d97f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b1561109c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061083e81611036565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561159f575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261159c91810190612474565b60015b6115e5576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611641576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016115dc565b6107538383611b19565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461109c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116b5611040565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361142e565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156117715750825b905060008267ffffffffffffffff16600114801561178e5750303b155b90508115801561179c575080155b156117d3576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156118345784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038916158061185157506001600160a01b038816155b8061186357506001600160a01b038716155b8061187557506001600160a01b038616155b156118ac576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118b4611b6f565b6118bc611b77565b6118c4611b6f565b6118cc611b87565b600080546001600160a01b03808c167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316178355600180548c831690841617905560028054918b1691909216179055611927908761120b565b506119527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48861120b565b5061197d7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb8861120b565b506119a87f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8761120b565b506119d37f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8861120b565b508315610faa5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001610fa1565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff1661083e576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016115dc565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1661109c576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b2282611b97565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b67576107538282611c3f565b61083e611cb5565b61109c611ced565b611b7f611ced565b61109c611d54565b611b8f611ced565b61109c611d5c565b806001600160a01b03163b600003611be6576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016115dc565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611c5c91906124c7565b600060405180830381855af49150503d8060008114611c97576040519150601f19603f3d011682016040523d82523d6000602084013e611c9c565b606091505b5091509150611cac858383611dad565b95945050505050565b341561109c576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661109c576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111e5611ced565b611d64611ced565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b606082611dc257611dbd82611e25565b611e1e565b8151158015611dd957506001600160a01b0384163b155b15611e1b576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016115dc565b50805b9392505050565b805115611e355780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215611e7957600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611e1e57600080fd5b80356001600160a01b0381168114611ec057600080fd5b919050565b600080600060608486031215611eda57600080fd5b611ee384611ea9565b95602085013595506040909401359392505050565b600060208284031215611f0a57600080fd5b5035919050565b60008060408385031215611f2457600080fd5b82359150611f3460208401611ea9565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215611f7f57600080fd5b611f8883611ea9565b9150602083013567ffffffffffffffff811115611fa457600080fd5b8301601f81018513611fb557600080fd5b803567ffffffffffffffff811115611fcf57611fcf611f3d565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561203b5761203b611f3d565b60405281815282820160200187101561205357600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008083601f84011261208557600080fd5b50813567ffffffffffffffff81111561209d57600080fd5b6020830191508360208285010111156120b557600080fd5b9250929050565b6000806000806000608086880312156120d457600080fd5b6120dd86611ea9565b945060208601359350604086013567ffffffffffffffff81111561210057600080fd5b61210c88828901612073565b96999598509660600135949350505050565b60008060008060008060a0878903121561213757600080fd5b61214087611ea9565b955060208701359450604087013567ffffffffffffffff81111561216357600080fd5b61216f89828a01612073565b90955093505060608701359150608087013567ffffffffffffffff81111561219657600080fd5b87016080818a0312156121a857600080fd5b809150509295509295509295565b6000602082840312156121c857600080fd5b611e1e82611ea9565b60005b838110156121ec5781810151838201526020016121d4565b50506000910152565b60208152600082518060208401526122148160408501602087016121d1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000806000806080858703121561225c57600080fd5b61226585611ea9565b935061227360208601611ea9565b925061228160408601611ea9565b915061228f60608601611ea9565b905092959194509250565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015260806060820152600061231b60808301848661229a565b979650505050505050565b838152604060208201526000611cac60408301848661229a565b6001600160a01b0361235182611ea9565b1682526001600160a01b0361236860208301611ea9565b1660208301526040818101359083015260006060820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe10181126123b057600080fd5b820160208101903567ffffffffffffffff8111156123cd57600080fd5b8036038213156123dc57600080fd5b60806060860152611cac60808601828461229a565b6001600160a01b03871681526001600160a01b038616602082015284604082015260a06060820152600061242960a08301858761229a565b828103608084015261243b8185612340565b9998505050505050505050565b84815260606020820152600061246260608301858761229a565b828103604084015261231b8185612340565b60006020828403121561248657600080fd5b5051919050565b8082018082111561069b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082516124d98184602087016121d1565b919091019291505056fea2646970667358221220dcdae3d1abcc1e59c760855979066a21bc8e8a92347b22dd5e8b2fe90f3a69a864736f6c634300081a0033"; + "0x60a060405230608052348015601357600080fd5b5060805161251961003d6000396000818161145701528181611480015261165601526125196000f3fe6080604052600436106101ac5760003560e01c80636f8728ad116100ec578063a217fddf1161008a578063d547741f11610064578063d547741f1461057e578063d5abeb011461059e578063e63ab1e9146105b4578063f8c8765e146105e857600080fd5b8063a217fddf146104df578063a783c789146104f4578063ad3cb1cc1461052857600080fd5b80638456cb59116100c65780638456cb591461041157806385f438c11461042657806391d148541461045a578063950837aa146104bf57600080fd5b80636f8728ad146103b15780636f8b44b0146103d1578063743e0c9b146103f157600080fd5b806336568abe1161015957806352d1902d1161013357806352d1902d146103255780635b1125911461033a5780635c975abb1461035a5780635e3e9fef1461039157600080fd5b806336568abe146102dd5780633f4ba83a146102fd5780634f1ef2861461031257600080fd5b806321e093b11161018a57806321e093b114610240578063248a9ca3146102605780632f2ff15d146102bd57600080fd5b806301ffc9a7146101b1578063106e6290146101e6578063116191b614610208575b600080fd5b3480156101bd57600080fd5b506101d16101cc366004611e67565b610608565b60405190151581526020015b60405180910390f35b3480156101f257600080fd5b50610206610201366004611ec5565b6106a1565b005b34801561021457600080fd5b50600054610228906001600160a01b031681565b6040516001600160a01b0390911681526020016101dd565b34801561024c57600080fd5b50600154610228906001600160a01b031681565b34801561026c57600080fd5b506102af61027b366004611ef8565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101dd565b3480156102c957600080fd5b506102066102d8366004611f11565b610758565b3480156102e957600080fd5b506102066102f8366004611f11565b6107a2565b34801561030957600080fd5b506102066107ee565b610206610320366004611f6c565b610823565b34801561033157600080fd5b506102af610842565b34801561034657600080fd5b50600254610228906001600160a01b031681565b34801561036657600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101d1565b34801561039d57600080fd5b506102066103ac3660046120bc565b610871565b3480156103bd57600080fd5b506102066103cc36600461211e565b6109bf565b3480156103dd57600080fd5b506102066103ec366004611ef8565b610b12565b3480156103fd57600080fd5b5061020661040c366004611ef8565b610b80565b34801561041d57600080fd5b50610206610c01565b34801561043257600080fd5b506102af7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b34801561046657600080fd5b506101d1610475366004611f11565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156104cb57600080fd5b506102066104da3660046121b6565b610c33565b3480156104eb57600080fd5b506102af600081565b34801561050057600080fd5b506102af7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561053457600080fd5b506105716040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101dd91906121f5565b34801561058a57600080fd5b50610206610599366004611f11565b610dc6565b3480156105aa57600080fd5b506102af60035481565b3480156105c057600080fd5b506102af7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b3480156105f457600080fd5b50610206610603366004612246565b610e0a565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061069b57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6106a9610fb5565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46106d381611036565b6106db611040565b6106e684848461109e565b836001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d58460405161072191815260200190565b60405180910390a25061075360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461079281611036565b61079c838361120b565b50505050565b6001600160a01b03811633146107e4576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61075382826112f8565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61081881611036565b6108206113bc565b50565b61082b61144c565b6108348261151c565b61083e8282611527565b5050565b600061084c61164b565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610879610fb5565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46108a381611036565b6108ab611040565b6000546108c2906001600160a01b0316868461109e565b6000546001546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692635131ab5992610917929116908a908a908a908a906004016122e3565b600060405180830381600087803b15801561093157600080fd5b505af1158015610945573d6000803e3d6000fd5b50505050856001600160a01b03167f23b9573b29ff81f01c7aa1968188e1cb7d5858b08582e111fdaf386d9ef9bd8d86868660405161098693929190612326565b60405180910390a2506109b860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6109c7610fb5565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46109f181611036565b6109f9611040565b600054610a10906001600160a01b0316878561109e565b6000546001546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526001600160a01b039283169263aa0c0fc192610a67929116908b908b908b908b908a906004016123f1565b600060405180830381600087803b158015610a8157600080fd5b505af1158015610a95573d6000803e3d6000fd5b50505050866001600160a01b03167f5272d2fee39bff41b2e763562526315906046373ce08a7bacf76c3080d731ff087878786604051610ad89493929190612448565b60405180910390a250610b0a60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610b3c81611036565b610b44611040565b60038290556040518281527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a15050565b610b88611040565b6001546040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018390526001600160a01b03909116906379cc679090604401600060405180830381600087803b158015610bed57600080fd5b505af11580156109b8573d6000803e3d6000fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610c2b81611036565b6108206116ad565b6000610c3e81611036565b6001600160a01b038216610c7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254610cb5907f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4906001600160a01b03166112f8565b50600254610ced907f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb906001600160a01b03166112f8565b50610d187f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48361120b565b50610d437f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb8361120b565b50600254604080516001600160a01b03928316815291841660208301527f33770ab682353c17917ad3e667f05905fc8dda00671ef1ed33bef9bc8db0323e910160405180910390a150600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610e0081611036565b61079c83836112f8565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610e555750825b905060008267ffffffffffffffff166001148015610e725750303b155b905081158015610e80575080155b15610eb7576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610f185784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610f2489898989611726565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6003558315610faa5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b505050505050505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611030576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6108208133611a31565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff161561109c576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600354600160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111189190612474565b611122908461248d565b111561115a576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040517f1e458bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018590526044820184905290911690631e458bee90606401600060405180830381600087803b1580156111c857600080fd5b505af11580156111dc573d6000803e3d6000fd5b50505050505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166112ee576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556112a43390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061069b565b600091505061069b565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156112ee576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061069b565b6113c4611abe565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806114e557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114d97f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b1561109c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061083e81611036565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561159f575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261159c91810190612474565b60015b6115e5576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611641576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016115dc565b6107538383611b19565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461109c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116b5611040565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361142e565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156117715750825b905060008267ffffffffffffffff16600114801561178e5750303b155b90508115801561179c575080155b156117d3576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156118345784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038916158061185157506001600160a01b038816155b8061186357506001600160a01b038716155b8061187557506001600160a01b038616155b156118ac576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118b4611b6f565b6118bc611b77565b6118c4611b6f565b6118cc611b87565b600080546001600160a01b03808c167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316178355600180548c831690841617905560028054918b1691909216179055611927908761120b565b506119527f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48861120b565b5061197d7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb8861120b565b506119a87f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8761120b565b506119d37f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8861120b565b508315610faa5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001610fa1565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff1661083e576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016115dc565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1661109c576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b2282611b97565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b67576107538282611c3f565b61083e611cb5565b61109c611ced565b611b7f611ced565b61109c611d54565b611b8f611ced565b61109c611d5c565b806001600160a01b03163b600003611be6576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016115dc565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611c5c91906124c7565b600060405180830381855af49150503d8060008114611c97576040519150601f19603f3d011682016040523d82523d6000602084013e611c9c565b606091505b5091509150611cac858383611dad565b95945050505050565b341561109c576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661109c576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111e5611ced565b611d64611ced565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b606082611dc257611dbd82611e25565b611e1e565b8151158015611dd957506001600160a01b0384163b155b15611e1b576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016115dc565b50805b9392505050565b805115611e355780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215611e7957600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611e1e57600080fd5b80356001600160a01b0381168114611ec057600080fd5b919050565b600080600060608486031215611eda57600080fd5b611ee384611ea9565b95602085013595506040909401359392505050565b600060208284031215611f0a57600080fd5b5035919050565b60008060408385031215611f2457600080fd5b82359150611f3460208401611ea9565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215611f7f57600080fd5b611f8883611ea9565b9150602083013567ffffffffffffffff811115611fa457600080fd5b8301601f81018513611fb557600080fd5b803567ffffffffffffffff811115611fcf57611fcf611f3d565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561203b5761203b611f3d565b60405281815282820160200187101561205357600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008083601f84011261208557600080fd5b50813567ffffffffffffffff81111561209d57600080fd5b6020830191508360208285010111156120b557600080fd5b9250929050565b6000806000806000608086880312156120d457600080fd5b6120dd86611ea9565b945060208601359350604086013567ffffffffffffffff81111561210057600080fd5b61210c88828901612073565b96999598509660600135949350505050565b60008060008060008060a0878903121561213757600080fd5b61214087611ea9565b955060208701359450604087013567ffffffffffffffff81111561216357600080fd5b61216f89828a01612073565b90955093505060608701359150608087013567ffffffffffffffff81111561219657600080fd5b87016080818a0312156121a857600080fd5b809150509295509295509295565b6000602082840312156121c857600080fd5b611e1e82611ea9565b60005b838110156121ec5781810151838201526020016121d4565b50506000910152565b60208152600082518060208401526122148160408501602087016121d1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000806000806080858703121561225c57600080fd5b61226585611ea9565b935061227360208601611ea9565b925061228160408601611ea9565b915061228f60608601611ea9565b905092959194509250565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015260806060820152600061231b60808301848661229a565b979650505050505050565b838152604060208201526000611cac60408301848661229a565b6001600160a01b0361235182611ea9565b1682526001600160a01b0361236860208301611ea9565b1660208301526040818101359083015260006060820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe10181126123b057600080fd5b820160208101903567ffffffffffffffff8111156123cd57600080fd5b8036038213156123dc57600080fd5b60806060860152611cac60808601828461229a565b6001600160a01b03871681526001600160a01b038616602082015284604082015260a06060820152600061242960a08301858761229a565b828103608084015261243b8185612340565b9998505050505050505050565b84815260606020820152600061246260608301858761229a565b828103604084015261231b8185612340565b60006020828403121561248657600080fd5b5051919050565b8082018082111561069b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082516124d98184602087016121d1565b919091019291505056fea2646970667358221220ecaeeab5029e9c664da04ee2fdaf2e0659e1740805c1791257cff702c4072f4664736f6c634300081a0033"; type ZetaConnectorNonNativeConstructorParams = | [signer?: Signer] From 98b9a4ca70eca9a01b1c4198852c0b3f05adfe19 Mon Sep 17 00:00:00 2001 From: lumtis Date: Thu, 17 Oct 2024 10:31:13 +0200 Subject: [PATCH 15/17] remove outdated logs --- .github/workflows/generated-files_v2.yaml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.github/workflows/generated-files_v2.yaml b/.github/workflows/generated-files_v2.yaml index 6879315fa..078f2241c 100644 --- a/.github/workflows/generated-files_v2.yaml +++ b/.github/workflows/generated-files_v2.yaml @@ -50,12 +50,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: Run forge --version - run: forge --version - - - name: Run soldeer --version - run: forge soldeer version - - name: Generate Go packages and types run: | yarn generate From db23d91b348d442b02bcb870e459d65dd56104a5 Mon Sep 17 00:00:00 2001 From: lumtis Date: Thu, 17 Oct 2024 20:19:07 +0200 Subject: [PATCH 16/17] remove unused line --- v2/test/GatewayZEVM.t.sol | 1 - 1 file changed, 1 deletion(-) diff --git a/v2/test/GatewayZEVM.t.sol b/v2/test/GatewayZEVM.t.sol index ed648b3bb..8f8336d6b 100644 --- a/v2/test/GatewayZEVM.t.sol +++ b/v2/test/GatewayZEVM.t.sol @@ -419,7 +419,6 @@ contract GatewayZEVMInboundTest is Test, IGatewayZEVMEvents, IGatewayZEVMErrors function testWithdrawZETA() public { uint256 amount = 1; - // uint256 ownerBalanceBefore = zetaToken.balanceOf(owner); // uint256 gatewayBalanceBefore = zetaToken.balanceOf(address(gateway)); // uint256 protocolBalanceBefore = protocolAddress.balance; uint256 chainId = 1; From 271267bf4aeceb4ce61e09eb975ee534f57726a8 Mon Sep 17 00:00:00 2001 From: lumtis Date: Thu, 17 Oct 2024 20:51:14 +0200 Subject: [PATCH 17/17] regener --- v2/pkg/gatewayzevm.t.sol/gatewayzevminboundtest.go | 2 +- v2/pkg/gatewayzevm.t.sol/gatewayzevmoutboundtest.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/v2/pkg/gatewayzevm.t.sol/gatewayzevminboundtest.go b/v2/pkg/gatewayzevm.t.sol/gatewayzevminboundtest.go index 2be4fd3b8..d922763c4 100644 --- a/v2/pkg/gatewayzevm.t.sol/gatewayzevminboundtest.go +++ b/v2/pkg/gatewayzevm.t.sol/gatewayzevminboundtest.go @@ -65,7 +65,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\":\"testCallWithCallOpts\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testCallWithCallOptsFailsIfGasLimitIsZero\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testCallWithCallOptsFailsIfMessageSizeExceeded\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testCallWithCallOptsFailsIfReceiverIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testUpgradeAndWithdrawZRC20\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallZETAWithCallOptsFailsIfAmountIsReceiverIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallZETAWithCallOptsFailsIfAmountIsZero\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallZETAWithCallOptsFailsIfMessageSizeExceeded\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallZRC20FailsIfAmountIsZero\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallZRC20FailsIfGasLimitIsZero\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallZRC20FailsIfMessageSizeExceeded\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallZRC20FailsIfReceiverIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallZRC20WithCallOptsFailsIfAmountIsZero\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallZRC20WithCallOptsFailsIfGasLimitIsZero\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallZRC20WithCallOptsFailsIfMessageSizeExceeded\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallZRC20WithCallOptsFailsIfReceiverIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETA\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAFailsIfAmountIsZero\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAFailsIfMessageSizeExceeded\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAFailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAFailsIfNoBalance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAFailsIfReceiverIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAWithCallOptsWithMessage\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAWithCallOptsWithMessageFailsIfGasLimitIsZero\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAWithCallOptsWithMessageFailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20FailsIfMessageSizeExceeded\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20FailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20FailsIfNoBalanceForGasFee\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20FailsIfNoBalanceForTransfer\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20FailsIfReceiverIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20FailsIsAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20WithCallOptsWithMessage\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20WithMessage\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20WithMessageFailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20WithMessageWithCallOptsFailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Called\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"callOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structCallOptions\",\"components\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"isArbitraryCall\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawn\",\"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\"},{\"name\":\"callOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structCallOptions\",\"components\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"isArbitraryCall\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawnV2\",\"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\"},{\"name\":\"callOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structCallOptions\",\"components\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"isArbitraryCall\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\":\"CallerIsNotProtocol\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedZetaSent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientGasLimit\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZetaAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LowBalance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"MessageSizeExceeded\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrProtocol\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZETANotSupported\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20BurnFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20TransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5062010bd9806200003e6000396000f3fe608060405234801561001057600080fd5b506004361061032b5760003560e01c80636dfcbc50116101b2578063bed3e813116100f9578063e51c6388116100a2578063eb7a2fac1161007c578063eb7a2fac146104ec578063fa7626d4146104f4578063fbc611c814610501578063fdad0ad01461050957600080fd5b8063e51c6388146104dc578063e804a4061461035a578063ea37902f146104e457600080fd5b8063dc749dd7116100d3578063dc749dd7146104c4578063dde7e967146104cc578063e20c9f71146104d457600080fd5b8063bed3e813146104ac578063c946d7c0146104b4578063ceccfab3146104bc57600080fd5b8063b0464fdc1161015b578063ba414fa611610135578063ba414fa614610484578063ba800c911461049c578063ba9adeef146104a457600080fd5b8063b0464fdc1461046c578063b51ac07114610474578063b5508aa91461047c57600080fd5b806385226c811161018c57806385226c811461043a578063916a17c61461044f578063a721b2d31461046457600080fd5b80636dfcbc50146104225780637ae697301461042a57806383ababa91461043257600080fd5b80633e5e3c23116102765780635efe72a91161021f57806364002a1f116101f957806364002a1f146103fd57806366d9a9a0146104055780636d6ce0d01461041a57600080fd5b80635efe72a9146103e55780636198fb19146103ed5780636221b509146103f557600080fd5b8063431814371161025057806343181437146103cd5780634ffab9de146103d55780635d72228f146103dd57600080fd5b80633e5e3c23146103b55780633f7286f4146103bd57806342752d41146103c557600080fd5b80631ed7831c116102d8578063264b524c116102b2578063264b524c146103905780632ade38801461039857806336431b3f146103ad57600080fd5b80631ed7831c1461036257806320dee15f1461038057806321aeb18c1461038857600080fd5b80631475976611610309578063147597661461034a5780631b9641bf146103525780631e63d2b91461035a57600080fd5b80630a9254e4146103305780630b5ad28d1461033a5780631238212c14610342575b600080fd5b610338610511565b005b6103386110a6565b610338611259565b610338611625565b610338611853565b6103386119ca565b61036a611de4565b604051610377919061ac5e565b60405180910390f35b610338611e46565b610338612234565b610338612354565b6103a0612548565b604051610377919061acfa565b61033861268a565b61036a6127f1565b61036a612851565b6103386128b1565b610338612a03565b610338612b36565b610338612dba565b61033861310c565b610338613289565b61033861344f565b61033861363d565b61040d613819565b604051610377919061ae60565b61033861399b565b610338613ca0565b610338613eb9565b610338614087565b61044261416b565b604051610377919061aefe565b61045761423b565b604051610377919061af75565b610338614336565b61045761454f565b61033861464a565b610442614749565b61048c614819565b6040519015158152602001610377565b6103386148ed565b610338614a03565b610338614b89565b610338614d02565b610338614f86565b6103386152d2565b610338615375565b61036a6157b4565b610338615814565b610338615cbf565b610338615e52565b601f5461048c9060ff1681565b610338615f51565b6103386162de565b602580547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602680549091166112341790556040516105579061ab6d565b604051809103906000f080158015610573573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600f81527f476174657761795a45564d2e736f6c000000000000000000000000000000000060208201526025549151602481019390935292166044820152610657919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc95500000000000000000000000000000000000000000000000000000000179052616454565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b039384168102919091179182905560208054919092049092167fffffffffffffffffffffffff000000000000000000000000000000000000000090921682178155604080517f2722feee0000000000000000000000000000000000000000000000000000000081529051632722feee926004808401939192918290030181865afa158015610719573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073d919061b00c565b602780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516107819061ab7b565b604051809103906000f08015801561079d573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161781556027546040517f06447d5600000000000000000000000000000000000000000000000000000000815292166004830152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d569101600060405180830381600087803b15801561083957600080fd5b505af115801561084d573d6000803e3d6000fd5b5050505060008060006040516108629061ab89565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801561089e573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556020546040516012936001938493600093919216906108f49061ab97565b6109039695949392919061b035565b604051809103906000f08015801561091f573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556023546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b1580156109b657600080fd5b505af11580156109ca573d6000803e3d6000fd5b50506023546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b158015610a3457600080fd5b505af1158015610a48573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610ac857600080fd5b505af1158015610adc573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610b3157600080fd5b505af1158015610b45573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610bb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bdd919061b12a565b506021546025546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116906347e7ef24906044016020604051808303816000875af1158015610c4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c72919061b12a565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610cd157600080fd5b505af1158015610ce5573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610d5b57600080fd5b505af1158015610d6f573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116925063095ea7b391506044016020604051808303816000875af1158015610de3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e07919061b12a565b50602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610e5957600080fd5b505af1158015610e6d573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610ee1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f05919061b12a565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610f6457600080fd5b505af1158015610f78573d6000803e3d6000fd5b50506040805160a08101825261032180825260016020808401918252838501928352845190810190945260008085526060840185905260808401528251602880549251151574010000000000000000000000000000000000000000027fffffffffffffffffffffff0000000000000000000000000000000000000000009093166001600160a01b0392831617929092178255915160298054919093167fffffffffffffffffffffffff000000000000000000000000000000000000000091909116179091559093509150602a9061104f908261b20f565b50608091909101516003909101556040805180820190915260018082526020909101819052602c819055602d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b1790526000602c5551630618f58760e51b81527f60ee1247000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015b600060405180830381600087803b15801561117457600080fd5b505af1158015611188573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637b15118b91506034015b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168352611224926001916001600160a01b0316908790602c9060289060040161b3bd565b600060405180830381600087803b15801561123e57600080fd5b505af1158015611252573d6000803e3d6000fd5b5050505050565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa1580156112aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ce919061b42f565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561134357600080fd5b505af1158015611357573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af11580156113c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ed919061b12a565b506026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905280517ff48448140000000000000000000000000000000000000000000000000000000081529051919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f48448149160048082019260009290919082900301818387803b1580156114b057600080fd5b505af11580156114c4573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637b15118b915060340160408051601f198184030181526021548383018352600184526000602085015291517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815261156e93919289926001600160a01b039091169188919060289060040161b448565b600060405180830381600087803b15801561158857600080fd5b505af115801561159c573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156115ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611613919061b42f565b905061161f8382616473565b50505050565b6026546040516001600160a01b03909116602482015260019060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b179052602554602654925193945060019384936001600160a01b03928316937f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c936116e7939216910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f198184030181529082905260225461171f926001600160a01b0390911690899060009081908b90602c9060289061b49c565b60405180910390a3604051630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015b600060405180830381600087803b15801561179457600080fd5b505af11580156117a8573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250632810ae639150603401604051602081830303815290604052858486602c60286040518763ffffffff1660e01b815260040161181c9695949392919061b510565b600060405180830381600087803b15801561183657600080fd5b505af115801561184a573d6000803e3d6000fd5b50505050505050565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905251630618f58760e51b81527f5d67094f000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561191b57600080fd5b505af115801561192f573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637b15118b915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168352611224926000916001600160a01b0316908790602c9060289060040161b3bd565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611a1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3f919061b42f565b6026546040516001600160a01b03909116602482015290915060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b1790525490517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482018190526001600160a01b039092166084820152919250908190737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611b3157600080fd5b505af1158015611b45573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff19166020820152600093506001600160a01b0390911691507f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c9060340160408051601f198184030181528282526021547f4d8943bb000000000000000000000000000000000000000000000000000000008452915190926001600160a01b03909216918b9189918491634d8943bb916004808201926020929091908290030181865afa158015611c17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c3b919061b42f565b6040805180820182528a8152600160208201529051611c639695949392918d9160289061b541565b60405180910390a3602080546026546040516001600160a01b0392831693637b15118b93611cab9316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815260215483830183528684526001602085015291517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b168152611d179391928b926001600160a01b03909116918a919060289060040161b448565b600060405180830381600087803b158015611d3157600080fd5b505af1158015611d45573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611d98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbc919061b42f565b9050611ddc83611dcc888861b5d2565b611dd6919061b5d2565b82616473565b505050505050565b60606016805480602002602001604051908101604052809291908181526020018280548015611e3c57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611e1e575b5050505050905090565b601f54604080518082018252601a81527f476174657761795a45564d55706772616465546573742e736f6c000000000000602080830191909152825190810190925260008252602554611eab936001600160a01b0361010090910481169391166164f2565b601f546021546025546040516370a0823160e01b81526001600160a01b03918216600482015261010090930481169260019260009216906370a0823190602401602060405180830381865afa158015611f08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f2c919061b42f565b6040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b0385166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611fb957600080fd5b505af1158015611fcd573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff19166020820152600093506001600160a01b0390911691507f5d7cd8ae449a6b25de63f10534ddd17d8dd3e79c7aa5f28964b7a7c760258d979060340160408051601f198184030181528282526021547f4d8943bb000000000000000000000000000000000000000000000000000000008452915190926001600160a01b039092169188916000918491634d8943bb916004808201926020929091908290030181865afa1580156120a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c4919061b42f565b604080518082018252600081526001602082015290516120ec9695949392919060289061b5e5565b60405180910390a360265460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b03841690637c0dcb5f9060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526121809287916001600160a01b03169060289060040161b667565b600060405180830381600087803b15801561219a57600080fd5b505af11580156121ae573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015612201573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612225919061b42f565b905061161f611dd6848461b5d2565b604051630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156122a057600080fd5b505af11580156122b4573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b031692506397a1cef191506034015b6040516020818303038152906040526000600160286040518563ffffffff1660e01b8152600401612326949392919061b6a1565b600060405180830381600087803b15801561234057600080fd5b505af115801561161f573d6000803e3d6000fd5b60208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290516001600160a01b03909216926397d340f5926004808401938290030181865afa1580156123b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d6919061b42f565b6123e190600161b6d2565b67ffffffffffffffff8111156123f9576123f961b14c565b6040519080825280601f01601f191660200182016040528015612423576020820181803683370190505b50602a90612431908261b20f565b50604051630618f58760e51b81527f9507fb3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561249e57600080fd5b505af11580156124b2573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637c0dcb5f915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168352612326926002916001600160a01b03169060289060040161b667565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561268157600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561266a5783829060005260206000200180546125dd9061b17b565b80601f01602080910402602001604051908101604052809291908181526020018280546126099061b17b565b80156126565780601f1061262b57610100808354040283529160200191612656565b820191906000526020600020905b81548152906001019060200180831161263957829003601f168201915b5050505050815260200190600101906125be565b50505050815250508152602001906001019061256c565b50505050905090565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905251630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561275257600080fd5b505af1158015612766573d6000803e3d6000fd5b5050602080546040516001600160a01b039091169350637b15118b9250015b60408051601f19818403018152602154838301835260018085526000602086015292517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b168152611224949293926001600160a01b0390921691889160289060040161b448565b60606018805480602002602001604051908101604052809291908181526020018280548015611e3c576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611e1e575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015611e3c576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611e1e575050505050905090565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905251630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561297957600080fd5b505af115801561298d573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250632810ae6391506034016040516020818303038152906040526000600185602c60286040518763ffffffff1660e01b81526004016112249695949392919061b510565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905251630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015612acb57600080fd5b505af1158015612adf573d6000803e3d6000fd5b5050602080546040516001600160a01b039091169350632810ae639250015b60405160208183030381529060405260018085602c60286040518763ffffffff1660e01b81526004016112249695949392919061b510565b60208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290516000936002936001600160a01b0316926397d340f592600480830193928290030181865afa158015612b99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bbd919061b42f565b612bc7919061b6e5565b67ffffffffffffffff811115612bdf57612bdf61b14c565b6040519080825280601f01601f191660200182016040528015612c09576020820181803683370190505b5060208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290519394506002936001600160a01b03909216926397d340f5926004808401938290030181865afa158015612c6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c92919061b42f565b612c9c919061b6e5565b612ca790600161b6d2565b67ffffffffffffffff811115612cbf57612cbf61b14c565b6040519080825280601f01601f191660200182016040528015612ce9576020820181803683370190505b50602a90612cf7908261b20f565b50604051630618f58760e51b81527f9507fb3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015612d6457600080fd5b505af1158015612d78573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637b15118b9150603401612785565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015612e0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e2f919061b42f565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612ea457600080fd5b505af1158015612eb8573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015612f2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f4e919061b12a565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612fad57600080fd5b505af1158015612fc1573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637c0dcb5f915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526130569287916001600160a01b03169060289060040161b667565b600060405180830381600087803b15801561307057600080fd5b505af1158015613084573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156130d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130fb919061b42f565b90506131078282616473565b505050565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b1790526000602c5551630618f58760e51b81527f60ee1247000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015b600060405180830381600087803b1580156131da57600080fd5b505af11580156131ee573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b031692506306cb898391506034015b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168352611224926001600160a01b03909116908690602c9060289060040161b720565b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b1790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561337357600080fd5b505af1158015613387573d6000803e3d6000fd5b505060215460255460265460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039283169450911691507f306ee13f48319a123b222c69908e44dcf91abffc20cacc502e3cf5a4ff23e0e49060340160408051601f1981840301815290829052613407918690602c9060289061b78a565b60405180910390a3602080546026546040516001600160a01b03928316936306cb89839361322c9316910160609190911b6bffffffffffffffffffffffff1916815260140190565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa1580156134a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134c4919061b42f565b6022546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526101236004820152602481018390529192506001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015613531573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613555919061b12a565b506000600190507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156135ba57600080fd5b505af11580156135ce573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b031692506397a1cef19150603401604051602081830303815290604052858460286040518563ffffffff1660e01b815260040161181c949392919061b6a1565b6026546040516001600160a01b03909116602482015260019060009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905260255490517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561371257600080fd5b505af1158015613726573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015613798573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137bc919061b12a565b506000602c55604051630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e09060240161177a565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561268157838290600052602060002090600202016040518060400160405290816000820180546138709061b17b565b80601f016020809104026020016040519081016040528092919081815260200182805461389c9061b17b565b80156138e95780601f106138be576101008083540402835291602001916138e9565b820191906000526020600020905b8154815290600101906020018083116138cc57829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561398357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116139305790505b5050505050815250508152602001906001019061383d565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa1580156139ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a10919061b42f565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613a8557600080fd5b505af1158015613a99573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015613b0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b2f919061b12a565b506026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905280517ff48448140000000000000000000000000000000000000000000000000000000081529051919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f48448149160048082019260009290919082900301818387803b158015613bf257600080fd5b505af1158015613c06573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637b15118b915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261156e9288916001600160a01b0316908790602c9060289060040161b3bd565b60208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290516000936002936001600160a01b0316926397d340f592600480830193928290030181865afa158015613d03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d27919061b42f565b613d31919061b6e5565b67ffffffffffffffff811115613d4957613d4961b14c565b6040519080825280601f01601f191660200182016040528015613d73576020820181803683370190505b5060208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290519394506002936001600160a01b03909216926397d340f5926004808401938290030181865afa158015613dd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dfc919061b42f565b613e06919061b6e5565b613e1190600161b6d2565b67ffffffffffffffff811115613e2957613e2961b14c565b6040519080825280601f01601f191660200182016040528015613e53576020820181803683370190505b50602a90613e61908261b20f565b50604051630618f58760e51b81527f9507fb3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024016131c0565b60208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290516001600160a01b03909216926397d340f5926004808401938290030181865afa158015613f17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f3b919061b42f565b613f4690600161b6d2565b67ffffffffffffffff811115613f5e57613f5e61b14c565b6040519080825280601f01601f191660200182016040528015613f88576020820181803683370190505b50602a90613f96908261b20f565b50604051630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561400357600080fd5b505af1158015614017573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b031692506397a1cef1915060340160405160208183030381529060405260018060286040518563ffffffff1660e01b8152600401612326949392919061b6a1565b604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156140f357600080fd5b505af1158015614107573d6000803e3d6000fd5b5050602080546040805160008152928301908190526021547f7c0dcb5f000000000000000000000000000000000000000000000000000000009091526001600160a01b039182169450637c0dcb5f935061232692916001911660286024840161b667565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156126815783829060005260206000200180546141ae9061b17b565b80601f01602080910402602001604051908101604052809291908181526020018280546141da9061b17b565b80156142275780601f106141fc57610100808354040283529160200191614227565b820191906000526020600020905b81548152906001019060200180831161420a57829003601f168201915b50505050508152602001906001019061418f565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156126815760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561431e57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116142cb5790505b5050505050815250508152602001906001019061425f565b60208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290516000936002936001600160a01b0316926397d340f592600480830193928290030181865afa158015614399573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143bd919061b42f565b6143c7919061b6e5565b67ffffffffffffffff8111156143df576143df61b14c565b6040519080825280601f01601f191660200182016040528015614409576020820181803683370190505b5060208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290519394506002936001600160a01b03909216926397d340f5926004808401938290030181865afa15801561446e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614492919061b42f565b61449c919061b6e5565b6144a790600161b6d2565b67ffffffffffffffff8111156144bf576144bf61b14c565b6040519080825280601f01601f1916602001820160405280156144e9576020820181803683370190505b50602a906144f7908261b20f565b50604051630618f58760e51b81527f9507fb3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e09060240161115a565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156126815760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561463257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116145df5790505b50505050508152505081526020019060010190614573565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905251630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561471257600080fd5b505af1158015614726573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911693506306cb898392500161322c565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101561268157838290600052602060002001805461478c9061b17b565b80601f01602080910402602001604051908101604052809291908181526020018280546147b89061b17b565b80156148055780601f106147da57610100808354040283529160200191614805565b820191906000526020600020905b8154815290600101906020018083116147e857829003601f168201915b50505050508152602001906001019061476d565b60085460009060ff1615614831575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa1580156148c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148e6919061b42f565b1415905090565b604051630618f58760e51b81527f5d67094f000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561495957600080fd5b505af115801561496d573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637c0dcb5f915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168352612326926000916001600160a01b03169060289060040161b667565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905251630618f58760e51b81527f5d67094f000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015614acb57600080fd5b505af1158015614adf573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637b15118b915060340160408051601f1981840301815260215483830183526001845260006020850181905292517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b168152611224949293926001600160a01b0390921691889160289060040161b448565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905251630618f58760e51b81527f60ee1247000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015614c5157600080fd5b505af1158015614c65573d6000803e3d6000fd5b5050602080546026546040805160609290921b6bffffffffffffffffffffffff1916938201939093528251808203601401815260215460748301855260006034840181815260549094015293517f7b15118b0000000000000000000000000000000000000000000000000000000081526001600160a01b039384169650637b15118b9550611224949193600193921691889160289060040161b448565b60208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290516000936002936001600160a01b0316926397d340f592600480830193928290030181865afa158015614d65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614d89919061b42f565b614d93919061b6e5565b67ffffffffffffffff811115614dab57614dab61b14c565b6040519080825280601f01601f191660200182016040528015614dd5576020820181803683370190505b5060208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290519394506002936001600160a01b03909216926397d340f5926004808401938290030181865afa158015614e3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614e5e919061b42f565b614e68919061b6e5565b614e7390600161b6d2565b67ffffffffffffffff811115614e8b57614e8b61b14c565b6040519080825280601f01601f191660200182016040528015614eb5576020820181803683370190505b50602a90614ec3908261b20f565b50604051630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015614f3057600080fd5b505af1158015614f44573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250632810ae639150603401612afe565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015614fd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614ffb919061b42f565b6021546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526101236004820152602481018390529192506001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015615068573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061508c919061b12a565b506027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156150ff57600080fd5b505af1158015615113573d6000803e3d6000fd5b50506021546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a60048201526001600160a01b03909116925063f687d12a9150602401600060405180830381600087803b15801561517657600080fd5b505af115801561518a573d6000803e3d6000fd5b5050604051630618f58760e51b81527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b1580156151fb57600080fd5b505af115801561520f573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637c0dcb5f915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526152a49287916001600160a01b03169060289060040161b667565b600060405180830381600087803b1580156152be57600080fd5b505af1158015611ddc573d6000803e3d6000fd5b604051630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561533e57600080fd5b505af1158015615352573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911693506397a1cef19250016122f2565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa1580156153c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906153ea919061b42f565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa15801561543c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615460919061b42f565b6027546025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152929350163190600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156154de57600080fd5b505af11580156154f2573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015615564573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615588919061b12a565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156155e757600080fd5b505af11580156155fb573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b031692506397a1cef19150603401604051602081830303815290604052878460286040518563ffffffff1660e01b815260040161566a949392919061b6a1565b600060405180830381600087803b15801561568457600080fd5b505af1158015615698573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156156eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061570f919061b42f565b905061571b8582616473565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801561576c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615790919061b42f565b905061579c8582616473565b60275461184a9085906001600160a01b031631616473565b60606015805480602002602001604051908101604052809291908181526020018280548015611e3c576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611e1e575050505050905090565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015615865573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615889919061b42f565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa1580156158db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906158ff919061b42f565b6027546026546040516001600160a01b03918216602482015292935016319060009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905260255490517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156159da57600080fd5b505af11580156159ee573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015615a60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615a84919061b12a565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015615ae357600080fd5b505af1158015615af7573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250632810ae639150603401604051602081830303815290604052888486602c60286040518763ffffffff1660e01b8152600401615b6b9695949392919061b510565b600060405180830381600087803b158015615b8557600080fd5b505af1158015615b99573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015615bec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615c10919061b42f565b9050615c1c8682616473565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015615c6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615c91919061b42f565b9050615c9d8682616473565b602754615cb59086906001600160a01b031631616473565b5050505050505050565b60255460265460405160609190911b6bffffffffffffffffffffffff19166020820152600191829182916001600160a01b0316907f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c9060340160408051601f1981840301815260225483830183526000808552600160208601529251615d5b9492936001600160a01b03909216928a929182919060289061b5e5565b60405180910390a3604051630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015615dcf57600080fd5b505af1158015615de3573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b031692506397a1cef19150603401604051602081830303815290604052848460286040518563ffffffff1660e01b81526004016152a4949392919061b6a1565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905251630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015615f1a57600080fd5b505af1158015615f2e573d6000803e3d6000fd5b5050602080546040516001600160a01b039091169350637b15118b9250016111c6565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015615fa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615fc6919061b42f565b6020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561605757600080fd5b505af115801561606b573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff19166020820152600093506001600160a01b0390911691507f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c9060340160408051601f198184030181528282526021547f4d8943bb000000000000000000000000000000000000000000000000000000008452915190926001600160a01b039092169188916000918491634d8943bb916004808201926020929091908290030181865afa15801561613e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616162919061b42f565b6040805180820182526000815260016020820152905161618a9695949392919060289061b5e5565b60405180910390a3602080546026546040516001600160a01b0392831693637c0dcb5f936161d29316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261622a9287916001600160a01b03169060289060040161b667565b600060405180830381600087803b15801561624457600080fd5b505af1158015616258573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156162ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906162cf919061b42f565b9050613107611dd6848461b5d2565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260029260009216906370a0823190602401602060405180830381865afa15801561632f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616353919061b42f565b6021549091506001600160a01b031663a9059cbb61012361637560018561b5d2565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156163d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906163fc919061b12a565b50604051630618f58760e51b81527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024016151e1565b600061645e61aba5565b616469848483616507565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b1580156164de57600080fd5b505afa158015611ddc573d6000803e3d6000fd5b6164fa61aba5565b6112528585858486616582565b6000806165148584616682565b90506165776040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f7879000000815250828660405160200161656292919061b7d9565b6040516020818303038152906040528561668e565b9150505b9392505050565b6040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201528190737109709ecfa91a80626ff3989d68f67f5b1dd12d9081906306447d5690602401600060405180830381600087803b1580156165f457600080fd5b505af1925050508015616605575060015b61661a57616615878787876166bc565b61184a565b616626878787876166bc565b806001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561666157600080fd5b505af1158015616675573d6000803e3d6000fd5b5050505050505050505050565b600061657b83836166d5565b60c081015151600090156166b2576166ab84848460c001516166f0565b905061657b565b6166ab8484616896565b60006166c88483616981565b905061125285828561698d565b60006166e18383616d57565b61657b8383602001518461668e565b6000806166fb616d67565b905060006167098683616e3a565b9050600061672082606001518360200151856172e0565b90506000616730838389896174f2565b9050600061673d8261836f565b602081015181519192509060030b156167b05789826040015160405160200161676792919061b7fb565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526167a79160040161b87c565b60405180910390fd5b60006167f36040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a20000000000000000000000081525083600161853e565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d9061684690849060040161b87c565b602060405180830381865afa158015616863573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616887919061b00c565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc925906168eb90879060040161b87c565b600060405180830381865afa158015616908573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616930919081019061b948565b9050600061695e828560405160200161694a92919061b97d565b60405160208183030381529060405261873e565b90506001600160a01b03811661646957848460405160200161676792919061b9ac565b60006166e18383618751565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201527fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61036024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90600090829063667f9d7090604401602060405180830381865afa158015616a29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616a4d919061b42f565b905080616bf4576000616a5f8661875d565b604080518082018252600581527f352e302e3000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150616aea905b60408051808201825260008082526020918201528151808301909252845182528085019082015290618855565b80616af6575060008451115b15616b79576040517f4f1ef2860000000000000000000000000000000000000000000000000000000081526001600160a01b03871690634f1ef28690616b42908890889060040161b7d9565b600060405180830381600087803b158015616b5c57600080fd5b505af1158015616b70573d6000803e3d6000fd5b50505050616bee565b6040517f3659cfe60000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152871690633659cfe690602401600060405180830381600087803b158015616bd557600080fd5b505af1158015616be9573d6000803e3d6000fd5b505050505b50611252565b806000616c008261875d565b604080518082018252600581527f352e302e3000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150616c6290616abd565b80616c6e575060008551115b15616cf3576040517f9623609d0000000000000000000000000000000000000000000000000000000081526001600160a01b03831690639623609d90616cbc908a908a908a9060040161ba57565b600060405180830381600087803b158015616cd657600080fd5b505af1158015616cea573d6000803e3d6000fd5b5050505061184a565b6040517f99a88ec40000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015287811660248301528316906399a88ec490604401600060405180830381600087803b15801561666157600080fd5b616d6382826000618869565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90616dee90849060040161ba88565b600060405180830381865afa158015616e0b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616e33919081019061bacf565b9250505090565b616e6c6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050616eb76040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b616ec08561896c565b60208201526000616ed086618d51565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015616f12573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616f3a919081019061bacf565b86838560200151604051602001616f54949392919061bb18565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190616fac90859060040161b87c565b600060405180830381865afa158015616fc9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616ff1919081019061bacf565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f69061703990849060040161bc1c565b602060405180830381865afa158015617056573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061707a919061b12a565b61708f5781604051602001616767919061bc6e565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906170d490849060040161bd00565b600060405180830381865afa1580156170f1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617119919081019061bacf565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f69061716090849060040161bd52565b602060405180830381865afa15801561717d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906171a1919061b12a565b15617236576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906171eb90849060040161bd52565b600060405180830381865afa158015617208573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617230919081019061bacf565b60408501525b846001600160a01b03166349c4fac882866000015160405160200161725b919061bda4565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161728792919061be10565b600060405180830381865afa1580156172a4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526172cc919081019061bacf565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816172fc5790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061735c5761735c61be35565b60200260200101819052506040518060400160405280600381526020017f2d726c0000000000000000000000000000000000000000000000000000000000815250816001815181106173b0576173b061be35565b6020026020010181905250846040516020016173cc919061be64565b604051602081830303815290604052816002815181106173ee576173ee61be35565b60200260200101819052508260405160200161740a919061bed0565b6040516020818303038152906040528160038151811061742c5761742c61be35565b602002602001018190525060006174428261836f565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506174d39060408051808201825260008082526020918201528151808301909252845182528085019082015290618fd4565b6174e85785604051602001616767919061bf11565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015617542565b511590565b6176b6578260200151156175fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a4016167a7565b8260c00151156176b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a4016167a7565b6040805160ff8082526120008201909252600091816020015b60608152602001906001900390816176cf57905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061772a9061bfa2565b935060ff168151811061773f5761773f61be35565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001617790919061bfc1565b6040516020818303038152906040528282806177ab9061bfa2565b935060ff16815181106177c0576177c061be35565b60200260200101819052506040518060400160405280600681526020017f6465706c6f79000000000000000000000000000000000000000000000000000081525082828061780d9061bfa2565b935060ff16815181106178225761782261be35565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d6500000000000000000000000000000000000081525082828061786f9061bfa2565b935060ff16815181106178845761788461be35565b602002602001018190525087602001518282806178a09061bfa2565b935060ff16815181106178b5576178b561be35565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806179029061bfa2565b935060ff16815181106179175761791761be35565b60209081029190910101528751828261792f8161bfa2565b935060ff16815181106179445761794461be35565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806179919061bfa2565b935060ff16815181106179a6576179a661be35565b60200260200101819052506179ba46619035565b82826179c58161bfa2565b935060ff16815181106179da576179da61be35565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280617a279061bfa2565b935060ff1681518110617a3c57617a3c61be35565b602002602001018190525086828280617a549061bfa2565b935060ff1681518110617a6957617a6961be35565b6020908102919091010152855115617b905760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f6465000000000000000000000060208201528282617aba8161bfa2565b935060ff1681518110617acf57617acf61be35565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90617b1f90899060040161b87c565b600060405180830381865afa158015617b3c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617b64919081019061bacf565b8282617b6f8161bfa2565b935060ff1681518110617b8457617b8461be35565b60200260200101819052505b846020015115617c605760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282617bd98161bfa2565b935060ff1681518110617bee57617bee61be35565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280617c3b9061bfa2565b935060ff1681518110617c5057617c5061be35565b6020026020010181905250617e27565b617c9861753d8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b617d2b5760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282617cdb8161bfa2565b935060ff1681518110617cf057617cf061be35565b60200260200101819052508460a00151604051602001617d10919061be64565b604051602081830303815290604052828280617c3b9061bfa2565b8460c00151158015617d6e575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152617d6c90511590565b155b15617e275760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282617db28161bfa2565b935060ff1681518110617dc757617dc761be35565b6020026020010181905250617ddb886190d5565b604051602001617deb919061be64565b604051602081830303815290604052828280617e069061bfa2565b935060ff1681518110617e1b57617e1b61be35565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152617e5b90511590565b617ef05760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282617e9e8161bfa2565b935060ff1681518110617eb357617eb361be35565b60200260200101819052508460400151828280617ecf9061bfa2565b935060ff1681518110617ee457617ee461be35565b60200260200101819052505b6060850151156180115760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282617f398161bfa2565b935060ff1681518110617f4e57617f4e61be35565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015617fbd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617fe5919081019061bacf565b8282617ff08161bfa2565b935060ff16815181106180055761800561be35565b60200260200101819052505b60e085015151156180b85760408051808201909152600a81527f2d2d6761734c696d6974000000000000000000000000000000000000000000006020820152828261805b8161bfa2565b935060ff16815181106180705761807061be35565b602002602001018190525061808c8560e0015160000151619035565b82826180978161bfa2565b935060ff16815181106180ac576180ac61be35565b60200260200101819052505b60e085015160200151156181625760408051808201909152600a81527f2d2d676173507269636500000000000000000000000000000000000000000000602082015282826181058161bfa2565b935060ff168151811061811a5761811a61be35565b60200260200101819052506181368560e0015160200151619035565b82826181418161bfa2565b935060ff16815181106181565761815661be35565b60200260200101819052505b60e0850151604001511561820c5760408051808201909152600e81527f2d2d6d6178466565506572476173000000000000000000000000000000000000602082015282826181af8161bfa2565b935060ff16815181106181c4576181c461be35565b60200260200101819052506181e08560e0015160400151619035565b82826181eb8161bfa2565b935060ff16815181106182005761820061be35565b60200260200101819052505b60e085015160600151156182b65760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826182598161bfa2565b935060ff168151811061826e5761826e61be35565b602002602001018190525061828a8560e0015160600151619035565b82826182958161bfa2565b935060ff16815181106182aa576182aa61be35565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156182d4576182d461b14c565b60405190808252806020026020018201604052801561830757816020015b60608152602001906001900390816182f25790505b50905060005b8260ff168160ff16101561836057838160ff16815181106183305761833061be35565b6020026020010151828260ff168151811061834d5761834d61be35565b602090810291909101015260010161830d565b5093505050505b949350505050565b6183966040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c9161841c9186910161c02c565b600060405180830381865afa158015618439573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052618461919081019061bacf565b9050600061846f8683619bc4565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161849f919061aefe565b6000604051808303816000875af11580156184be573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526184e6919081019061c073565b805190915060030b158015906184ff5750602081015151155b801561850e5750604081015151155b156174e857816000815181106185265761852661be35565b6020026020010151604051602001616767919061c129565b606060006185738560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506185aa9082905b90619d19565b15618707576000618627826186218461861b6185ed8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90619d40565b90619da2565b604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061868b908290619d19565b156186f557604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526186f2905b8290619e27565b90505b6186fe81619e4d565b9250505061657b565b821561872057848460405160200161676792919061c315565b505060408051602081019091526000815261657b565b509392505050565b6000808251602084016000f09392505050565b616d6382826001618869565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fad3cb1cc00000000000000000000000000000000000000000000000000000000179052905160609160009182916001600160a01b038616916187d2919061c3bc565b600060405180830381855afa9150503d806000811461880d576040519150601f19603f3d011682016040523d82523d6000602084013e618812565b606091505b5091509150818015618825575060208151115b1561883e5780806020019051810190618367919061bacf565b505060408051602081019091526000815292915050565b60006188618383619eb6565b159392505050565b8160a001511561887857505050565b6000618885848484619f91565b905060006188928261836f565b602081015181519192509060030b15801561892e5750604080518082018252600781527f53554343455353000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261892e906040805180820182526000808252602091820152815180830190925284518252808501908201526185a4565b1561893b57505050505050565b6040820151511561895b578160400151604051602001616767919061c3d8565b80604051602001616767919061c436565b606060006189a18360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150618a06905b8290618fd4565b15618a7557604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261657b90618a7090839061a52c565b619e4d565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618ad7905b829061a5b6565b600103618ba457604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618b3d906186eb565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261657b90618a70905b8390619e27565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618c03906189ff565b15618d3a57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290618c6b90839061a650565b905060008160018351618c7e919061b5d2565b81518110618c8e57618c8e61be35565b60200260200101519050618d31618a70618d046040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529061a52c565b95945050505050565b82604051602001616767919061c4a1565b50919050565b60606000618d868360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150618de8906189ff565b15618df65761657b81619e4d565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618e5590618ad0565b600103618ebf57604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261657b90618a7090618b9d565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618f1e906189ff565b15618d3a57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290618f8690839061a650565b9050600181511115618fc2578060028251618fa1919061b5d2565b81518110618fb157618fb161be35565b602002602001015192505050919050565b5082604051602001616767919061c4a1565b805182516000911115618fe95750600061646d565b81518351602085015160009291618fff9161b6d2565b619009919061b5d2565b90508260200151810361902057600191505061646d565b82516020840151819020912014905092915050565b606060006190428361a6f5565b600101905060008167ffffffffffffffff8111156190625761906261b14c565b6040519080825280601f01601f19166020018201604052801561908c576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461909657509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091619161905b8290618855565b156191a157505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e73650000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526192009061915a565b1561924057505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d495400000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261929f9061915a565b156192df57505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261933e9061915a565b806193a35750604080518082018252601081527f47504c2d322e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526193a39061915a565b156193e357505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526194429061915a565b806194a75750604080518082018252601081527f47504c2d332e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526194a79061915a565b156194e757505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526195469061915a565b806195ab5750604080518082018252601181527f4c47504c2d322e312d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526195ab9061915a565b156195eb57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261964a9061915a565b806196af5750604080518082018252601181527f4c47504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526196af9061915a565b156196ef57505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261974e9061915a565b1561978e57505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526197ed9061915a565b1561982d57505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261988c9061915a565b156198cc57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261992b9061915a565b1561996b57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e3000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526199ca9061915a565b15619a0a57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152619a699061915a565b80619ace5750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152619ace9061915a565b15619b0e57505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e3100000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152619b6d9061915a565b15619bad57505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151616767929060200161c57f565b60608060005b8451811015619c4f5781858281518110619be657619be661be35565b6020026020010151604051602001619bff92919061b97d565b604051602081830303815290604052915060018551619c1e919061b5d2565b8114619c475781604051602001619c35919061c6e8565b60405160208183030381529060405291505b600101619bca565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081619c685790505090508381600081518110619c9357619c9361be35565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110619ce757619ce761be35565b60200260200101819052508181600281518110619d0657619d0661be35565b6020908102919091010152949350505050565b6020808301518351835192840151600093619d37929184919061a7d7565b14159392505050565b60408051808201909152600080825260208201526000619d72846000015185602001518560000151866020015161a8e8565b9050836020015181619d84919061b5d2565b84518590619d9390839061b5d2565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015619dc757508161646d565b6020808301519084015160019114619dee5750815160208481015190840151829020919020145b8015619e1f57825184518590619e0590839061b5d2565b9052508251602085018051619e1b90839061b6d2565b9052505b509192915050565b6040805180820190915260008082526020820152619e4683838361aa08565b5092915050565b60606000826000015167ffffffffffffffff811115619e6e57619e6e61b14c565b6040519080825280601f01601f191660200182016040528015619e98576020820181803683370190505b5090506000602082019050619e46818560200151866000015161aab3565b8151815160009190811115619ec9575081515b6020808501519084015160005b83811015619f825782518251808214619f52576000196020871015619f3157600184619f0389602061b5d2565b619f0d919061b6d2565b619f1890600861c729565b619f2390600261c827565b619f2d919061b5d2565b1990505b8181168382168181039114619f4f57975061646d9650505050505050565b50505b619f5d60208661b6d2565b9450619f6a60208561b6d2565b93505050602081619f7b919061b6d2565b9050619ed6565b50845186516174e8919061c833565b60606000619f9d616d67565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081619fba57905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061a0159061bfa2565b935060ff168151811061a02a5761a02a61be35565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e330000000000000000000000000000000000000000000000000081525060405160200161a07b919061c853565b60405160208183030381529060405282828061a0969061bfa2565b935060ff168151811061a0ab5761a0ab61be35565b60200260200101819052506040518060400160405280600881526020017f76616c696461746500000000000000000000000000000000000000000000000081525082828061a0f89061bfa2565b935060ff168151811061a10d5761a10d61be35565b60200260200101819052508260405160200161a129919061bed0565b60405160208183030381529060405282828061a1449061bfa2565b935060ff168151811061a1595761a15961be35565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e74726163740000000000000000000000000000000000000000000081525082828061a1a69061bfa2565b935060ff168151811061a1bb5761a1bb61be35565b602002602001018190525061a1d0878461ab2d565b828261a1db8161bfa2565b935060ff168151811061a1f05761a1f061be35565b60209081029190910101528551511561a29c5760408051808201909152600b81527f2d2d7265666572656e63650000000000000000000000000000000000000000006020820152828261a2428161bfa2565b935060ff168151811061a2575761a25761be35565b602002602001018190525061a27086600001518461ab2d565b828261a27b8161bfa2565b935060ff168151811061a2905761a29061be35565b60200260200101819052505b85608001511561a30a5760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261a2e58161bfa2565b935060ff168151811061a2fa5761a2fa61be35565b602002602001018190525061a370565b841561a3705760408051808201909152601281527f2d2d726571756972655265666572656e636500000000000000000000000000006020820152828261a34f8161bfa2565b935060ff168151811061a3645761a36461be35565b60200260200101819052505b6040860151511561a40c5760408051808201909152600d81527f2d2d756e73616665416c6c6f77000000000000000000000000000000000000006020820152828261a3ba8161bfa2565b935060ff168151811061a3cf5761a3cf61be35565b6020026020010181905250856040015182828061a3eb9061bfa2565b935060ff168151811061a4005761a40061be35565b60200260200101819052505b85606001511561a4765760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261a4558161bfa2565b935060ff168151811061a46a5761a46a61be35565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561a4945761a49461b14c565b60405190808252806020026020018201604052801561a4c757816020015b606081526020019060019003908161a4b25790505b50905060005b8260ff168160ff16101561a52057838160ff168151811061a4f05761a4f061be35565b6020026020010151828260ff168151811061a50d5761a50d61be35565b602090810291909101015260010161a4cd565b50979650505050505050565b604080518082019091526000808252602082015281518351101561a55157508161646d565b8151835160208501516000929161a5679161b6d2565b61a571919061b5d2565b6020840151909150600190821461a592575082516020840151819020908220145b801561a5ad5783518551869061a5a990839061b5d2565b9052505b50929392505050565b600080826000015161a5da856000015186602001518660000151876020015161a8e8565b61a5e4919061b6d2565b90505b8351602085015161a5f8919061b6d2565b8111619e46578161a6088161c898565b925050826000015161a63f85602001518361a623919061b5d2565b865161a62f919061b5d2565b838660000151876020015161a8e8565b61a649919061b6d2565b905061a5e7565b6060600061a65e848461a5b6565b61a66990600161b6d2565b67ffffffffffffffff81111561a6815761a68161b14c565b60405190808252806020026020018201604052801561a6b457816020015b606081526020019060019003908161a69f5790505b50905060005b81518110156187365761a6d0618a708686619e27565b82828151811061a6e25761a6e261be35565b602090810291909101015260010161a6ba565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061a73e577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831061a76a576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061a78857662386f26fc10000830492506010015b6305f5e100831061a7a0576305f5e100830492506008015b612710831061a7b457612710830492506004015b6064831061a7c6576064830492506002015b600a831061646d5760010192915050565b60008085841161a8de576020841161a88a576000841561a82257600161a7fe86602061b5d2565b61a80990600861c729565b61a81490600261c827565b61a81e919061b5d2565b1990505b835181168561a831898961b6d2565b61a83b919061b5d2565b805190935082165b81811461a8755787841161a85d5787945050505050618367565b8361a8678161c8b2565b94505082845116905061a843565b61a87f878561b6d2565b945050505050618367565b83832061a897858861b5d2565b61a8a1908761b6d2565b91505b85821061a8dc5784822080820361a8c95761a8bf868461b6d2565b9350505050618367565b61a8d460018461b5d2565b92505061a8a4565b505b5092949350505050565b6000838186851161a9f3576020851161a9a2576000851561a93457600161a91087602061b5d2565b61a91b90600861c729565b61a92690600261c827565b61a930919061b5d2565b1990505b8451811660008761a9458b8b61b6d2565b61a94f919061b5d2565b855190915083165b82811461a9945781861061a97c5761a96f8b8b61b6d2565b9650505050505050618367565b8561a9868161c898565b96505083865116905061a957565b859650505050505050618367565b508383206000905b61a9b4868961b5d2565b821161a9f15785832080820361a9d05783945050505050618367565b61a9db60018561b6d2565b935050818061a9e99061c898565b92505061a9aa565b505b61a9fd878761b6d2565b979650505050505050565b6040805180820190915260008082526020820152600061aa3a856000015186602001518660000151876020015161a8e8565b60208087018051918601919091525190915061aa56908261b5d2565b83528451602086015161aa69919061b6d2565b810361aa78576000855261aaaa565b8351835161aa86919061b6d2565b8551869061aa9590839061b5d2565b905250835161aaa4908261b6d2565b60208601525b50909392505050565b6020811061aaeb578151835261aaca60208461b6d2565b925061aad760208361b6d2565b915061aae460208261b5d2565b905061aab3565b600019811561ab1a57600161ab0183602061b5d2565b61ab0d9061010061c827565b61ab17919061b5d2565b90505b9151835183169219169190911790915250565b6060600061ab3b8484616e3a565b805160208083015160405193945061ab559390910161c8c9565b60405160208183030381529060405291505092915050565b610b67806200c92283390190565b61063a806200d48983390190565b61106f806200dac383390190565b612072806200eb3283390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161abe861abed565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161abe86040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b8181101561ac9f5783516001600160a01b031683526020938401939092019160010161ac78565b509095945050505050565b60005b8381101561acc557818101518382015260200161acad565b50506000910152565b6000815180845261ace681602086016020860161acaa565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561adf6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b8181101561addc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261adc684865161acce565b602095860195909450929092019160010161ad8c565b50919750505060209485019492909201915060010161ad22565b50929695505050505050565b600081518084526020840193506020830160005b8281101561ae565781517fffffffff000000000000000000000000000000000000000000000000000000001686526020958601959091019060010161ae16565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561adf6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516040875261aecc604088018261acce565b905060208201519150868103602088015261aee7818361ae02565b96505050602093840193919091019060010161ae88565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561adf6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845261af6085835161acce565b9450602093840193919091019060010161af26565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561adf6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b038151168652602081015190506040602087015261aff6604087018261ae02565b955050602093840193919091019060010161af9d565b60006020828403121561b01e57600080fd5b81516001600160a01b038116811461657b57600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff881660408301528660608301526003861061b0ef577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a083015261b11060c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b60006020828403121561b13c57600080fd5b8151801515811461657b57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600181811c9082168061b18f57607f821691505b602082108103618d4b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b601f82111561310757806000526020600020601f840160051c8101602085101561b1ef5750805b601f840160051c820191505b81811015611252576000815560010161b1fb565b815167ffffffffffffffff81111561b2295761b22961b14c565b61b23d8161b237845461b17b565b8461b1c8565b6020601f82116001811461b271576000831561b2595750848201515b600019600385901b1c1916600184901b178455611252565b600084815260208120601f198516915b8281101561b2a1578785015182556020948501946001909201910161b281565b508482101561b2bf5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b600081546001600160a01b038116845260ff8160a01c1615156020850152506001600160a01b0360018301541660408401526002820160a060608501526000815461b3188161b17b565b8060a0880152600182166000811461b337576001811461b3715761b3a5565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831660c089015260c082151560051b890101935061b3a5565b84600052602060002060005b8381101561b39c5781548a820160c0015260019091019060200161b37d565b890160c0019450505b50505060038401546080860152809250505092915050565b60e08152600061b3d060e083018961acce565b8760208401526001600160a01b0387166040840152828103606084015261b3f7818761acce565b85546080850152600186015460ff16151560a085015290505b82810360c084015261b422818561b2ce565b9998505050505050505050565b60006020828403121561b44157600080fd5b5051919050565b60e08152600061b45b60e083018961acce565b8760208401526001600160a01b0387166040840152828103606084015261b482818761acce565b855160808501526020860151151560a0850152905061b410565b6101208152600061b4b161012083018b61acce565b6001600160a01b038a16602084015288604084015287606084015286608084015282810360a084015261b4e4818761acce565b855460c0850152600186015460ff16151560e085015290505b828103610100840152616887818561b2ce565b60e08152600061b52360e083018961acce565b876020840152866040840152828103606084015261b3f7818761acce565b6101208152600061b55661012083018b61acce565b6001600160a01b038a16602084015288604084015287606084015286608084015282810360a084015261b589818761acce565b855160c08501526020860151151560e0850152905061b4fd565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561646d5761646d61b5a3565b6101208152600061b5fa61012083018a61acce565b6001600160a01b03891660208401528760408401528660608401528560808401528281038060a08501526000825261b64160c0850187805182526020908101511515910152565b602081016101008501525061b659602082018561b2ce565b9a9950505050505050505050565b60808152600061b67a608083018761acce565b8560208401526001600160a01b0385166040840152828103606084015261a9fd818561b2ce565b60808152600061b6b4608083018761acce565b856020840152846040840152828103606084015261a9fd818561b2ce565b8082018082111561646d5761646d61b5a3565b60008261b71b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60c08152600061b73360c083018861acce565b6001600160a01b0387166020840152828103604084015261b754818761acce565b85546060850152600186015460ff1615156080850152905082810360a084015261b77e818561b2ce565b98975050505050505050565b60a08152600061b79d60a083018761acce565b828103602084015261b7af818761acce565b85546040850152600186015460ff16151560608501529050828103608084015261a9fd818561b2ce565b6001600160a01b0383168152604060208201526000618367604083018461acce565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161b83381601a85016020880161acaa565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161b87081601c84016020880161acaa565b01601c01949350505050565b60208152600061657b602083018461acce565b6040516060810167ffffffffffffffff8111828210171561b8b25761b8b261b14c565b60405290565b60008067ffffffffffffffff84111561b8d35761b8d361b14c565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561b9025761b90261b14c565b60405283815290508082840185101561b91a57600080fd5b61873684602083018561acaa565b600082601f83011261b93957600080fd5b61657b8383516020850161b8b8565b60006020828403121561b95a57600080fd5b815167ffffffffffffffff81111561b97157600080fd5b6164698482850161b928565b6000835161b98f81846020880161acaa565b83519083019061b9a381836020880161acaa565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161b9e481601a85016020880161acaa565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161ba2181603384016020880161acaa565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b6001600160a01b03841681526001600160a01b0383166020820152606060408201526000618d31606083018461acce565b60408152600b60408201527f464f554e4452595f4f5554000000000000000000000000000000000000000000606082015260806020820152600061657b608083018461acce565b60006020828403121561bae157600080fd5b815167ffffffffffffffff81111561baf857600080fd5b8201601f8101841361bb0957600080fd5b6164698482516020840161b8b8565b6000855161bb2a818460208a0161acaa565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161bb64816001840160208a0161acaa565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161bba281600284016020890161acaa565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161bbe481600284016020880161acaa565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061bc2f604083018461acce565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161bca681601f85016020870161acaa565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061bd13604083018461acce565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061bd65604083018461acce565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161bddc81601485016020870161acaa565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061be23604083018561acce565b8281036020840152616577818561acce565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161be9c81600185016020870161acaa565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161bee281846020870161acaa565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161bf9581604b85016020870161acaa565b91909101604b0192915050565b600060ff821660ff810361bfb85761bfb861b5a3565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161c01f81602985016020870161acaa565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061657b608083018461acce565b60006020828403121561c08557600080fd5b815167ffffffffffffffff81111561c09c57600080fd5b82016060818503121561c0ae57600080fd5b61c0b661b88f565b81518060030b811461c0c757600080fd5b8152602082015167ffffffffffffffff81111561c0e357600080fd5b61c0ef8682850161b928565b602083015250604082015167ffffffffffffffff81111561c10f57600080fd5b61c11b8682850161b928565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161c18781602185016020870161acaa565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161c37381602185016020880161acaa565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161c3b081602e84016020880161acaa565b01602e01949350505050565b6000825161c3ce81846020870161acaa565b9190910192915050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161c01f81602985016020870161acaa565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161c49481602285016020870161acaa565b9190910160220192915050565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161c4d981600e85016020870161acaa565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161c5b781601885016020880161acaa565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161c5f481601c84016020880161acaa565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161c6fa81846020870161acaa565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b808202811582820484141761646d5761646d61b5a3565b6001815b600184111561c77b5780850481111561c75f5761c75f61b5a3565b600184161561c76d57908102905b60019390931c92800261c744565b935093915050565b60008261c7925750600161646d565b8161c79f5750600061646d565b816001811461c7b5576002811461c7bf5761c7db565b600191505061646d565b60ff84111561c7d05761c7d061b5a3565b50506001821b61646d565b5060208310610133831016604e8410600b841016171561c7fe575081810a61646d565b61c80b600019848461c740565b806000190482111561c81f5761c81f61b5a3565b029392505050565b600061657b838361c783565b8181036000831280158383131683831282161715619e4657619e4661b5a3565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161c88b81601c85016020870161acaa565b91909101601c0192915050565b6000600019820361c8ab5761c8ab61b5a3565b5060010190565b60008161c8c15761c8c161b5a3565b506000190190565b6000835161c8db81846020880161acaa565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161c91581600184016020880161acaa565b0160010194935050505056fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea2646970667358221220b09c98b42d894b1b92a74ecc691587bcc17012fff7ef3bcfa6fe755f9b6255a564736f6c634300081a00336080604052348015600f57600080fd5b5061061b8061001f6000396000f3fe60806040526004361061002a5760003560e01c80635bcfd61614610033578063c9028a361461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e366004610151565b610073565b34801561005f57600080fd5b5061003161006e36600461020e565b6100ee565b6060811561008a576100878284018461027f565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610375565b6100c560408a0160208b016103e1565b896040013533866040516100de96959493929190610445565b60405180910390a1505050505050565b7fd75bb509c8f32a725aac99ac5c4541060dbfb889a3aca8314d6f00395618c4c48160405161011d9190610507565b60405180910390a150565b803573ffffffffffffffffffffffffffffffffffffffff8116811461014c57600080fd5b919050565b60008060008060006080868803121561016957600080fd5b853567ffffffffffffffff81111561018057600080fd5b86016060818903121561019257600080fd5b94506101a060208701610128565b935060408601359250606086013567ffffffffffffffff8111156101c357600080fd5b8601601f810188136101d457600080fd5b803567ffffffffffffffff8111156101eb57600080fd5b8860208284010111156101fd57600080fd5b959894975092955050506020019190565b60006020828403121561022057600080fd5b813567ffffffffffffffff81111561023757600080fd5b82016080818503121561024957600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561029157600080fd5b813567ffffffffffffffff8111156102a857600080fd5b8201601f810184136102b957600080fd5b803567ffffffffffffffff8111156102d3576102d3610250565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033f5761033f610250565b60405281815282820160200186101561035757600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126103aa57600080fd5b83018035915067ffffffffffffffff8211156103c557600080fd5b6020019150368190038213156103da57600080fd5b9250929050565b6000602082840312156103f357600080fd5b61024982610128565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60a08152600061045960a08301888a6103fc565b73ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff851660608401528281036080840152835180825260005b818110156104c3576020818701810151848301820152016104a7565b5060006020828401015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011683010192505050979650505050505050565b6020815273ffffffffffffffffffffffffffffffffffffffff61052983610128565b16602082015273ffffffffffffffffffffffffffffffffffffffff61055060208401610128565b166040820152600080604084013590508060608401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261059c57600080fd5b830160208101903567ffffffffffffffff8111156105b957600080fd5b8036038213156105c857600080fd5b6080808501526105dc60a0850182846103fc565b9594505050505056fea264697066735822122034d8711688fa0746c516ebf736804e86c9e1dad5e64788e702413ad1a8eb9ff164736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea2646970667358221220b13ccf97234dc9b7f658234f9bf37a57d08f465bb99c431b865174e7a399a30764736f6c634300081a003360c060405234801561001057600080fd5b5060405161207238038061207283398101604081905261002f916101f0565b6001600160a01b038216158061004c57506001600160a01b038116155b1561006a5760405163d92e233d60e01b815260040160405180910390fd5b60066100768982610342565b5060076100838882610342565b506008805460ff191660ff881617905560808590528360028111156100aa576100aa610400565b60a08160028111156100be576100be610400565b905250600192909255600080546001600160a01b039283166001600160a01b0319909116179055600880549190921661010002610100600160a81b0319909116179055506104169350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261013357600080fd5b81516001600160401b0381111561014c5761014c61010c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561017a5761017a61010c565b60405281815283820160200185101561019257600080fd5b60005b828110156101b157602081860181015183830182015201610195565b506000918101602001919091529392505050565b8051600381106101d457600080fd5b919050565b80516001600160a01b03811681146101d457600080fd5b600080600080600080600080610100898b03121561020d57600080fd5b88516001600160401b0381111561022357600080fd5b61022f8b828c01610122565b60208b015190995090506001600160401b0381111561024d57600080fd5b6102598b828c01610122565b975050604089015160ff8116811461027057600080fd5b60608a0151909650945061028660808a016101c5565b60a08a0151909450925061029c60c08a016101d9565b91506102aa60e08a016101d9565b90509295985092959890939650565b600181811c908216806102cd57607f821691505b6020821081036102ed57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561033d57806000526020600020601f840160051c8101602085101561031a5750805b601f840160051c820191505b8181101561033a5760008155600101610326565b50505b505050565b81516001600160401b0381111561035b5761035b61010c565b61036f8161036984546102b9565b846102f3565b6020601f8211600181146103a3576000831561038b5750848201515b600019600385901b1c1916600184901b17845561033a565b600084815260208120601f198516915b828110156103d357878501518255602094850194600190920191016103b3565b50848210156103f15786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a051611c1b61045760003960006103440152600081816102f001528181610bdc01528181610ce201528181610efe01526110040152611c1b6000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c806395d89b41116100f9578063ccc7759911610097578063eddeb12311610071578063eddeb12314610461578063f2441b3214610474578063f687d12a14610494578063fc5fecd5146104a757600080fd5b8063ccc77599146103d4578063d9eeebed146103e7578063dd62ed3e1461041b57600080fd5b8063b84c8246116100d3578063b84c824614610386578063c47f00271461039b578063c7012626146103ae578063c835d7cc146103c157600080fd5b806395d89b4114610337578063a3413d031461033f578063a9059cbb1461037357600080fd5b80633ce4a5bc116101665780634d8943bb116101405780634d8943bb146102ac57806370a08231146102b557806385e1f4d0146102eb5780638b851b951461031257600080fd5b80633ce4a5bc1461024657806342966c681461028657806347e7ef241461029957600080fd5b806318160ddd1161019757806318160ddd1461021657806323b872dd1461021e578063313ce5671461023157600080fd5b806306fdde03146101be578063091d2788146101dc578063095ea7b3146101f3575b600080fd5b6101c66104ba565b6040516101d39190611648565b60405180910390f35b6101e560015481565b6040519081526020016101d3565b610206610201366004611687565b61054c565b60405190151581526020016101d3565b6005546101e5565b61020661022c3660046116b3565b610563565b60085460405160ff90911681526020016101d3565b61026173735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d3565b6102066102943660046116f4565b6105fa565b6102066102a7366004611687565b61060e565b6101e560025481565b6101e56102c336600461170d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6101e57f000000000000000000000000000000000000000000000000000000000000000081565b60085461026190610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6101c6610767565b6103667f000000000000000000000000000000000000000000000000000000000000000081565b6040516101d3919061172a565b610206610381366004611687565b610776565b610399610394366004611832565b610783565b005b6103996103a9366004611832565b6107e0565b6102066103bc366004611883565b610839565b6103996103cf36600461170d565b610988565b6103996103e236600461170d565b610a9c565b6103ef610bb0565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101d3565b6101e56104293660046118dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205490565b61039961046f3660046116f4565b610dce565b6000546102619073ffffffffffffffffffffffffffffffffffffffff1681565b6103996104a23660046116f4565b610e50565b6103ef6104b53660046116f4565b610ed2565b6060600680546104c990611915565b80601f01602080910402602001604051908101604052809291908181526020018280546104f590611915565b80156105425780601f1061051757610100808354040283529160200191610542565b820191906000526020600020905b81548152906001019060200180831161052557829003601f168201915b5050505050905090565b60006105593384846110ee565b5060015b92915050565b60006105708484846111f7565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460209081526040808320338452909152902054828110156105db576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105ef85336105ea8685611997565b6110ee565b506001949350505050565b600061060633836113b2565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab1480159061064c575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156106755750600854610100900473ffffffffffffffffffffffffffffffffffffffff163314155b156106ac576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106b683836114f4565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526107569186906119aa565b60405180910390a250600192915050565b6060600780546104c990611915565b60006105593384846111f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab146107d0576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60076107dc8282611a1b565b5050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461082d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60066107dc8282611a1b565b6000806000610846610bb0565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156108d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fc9190611b34565b610932576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61093c33856113b2565b60025460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161097591899189918791611b56565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146109d5576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a22576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610ae9576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610b36576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c679190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610cb6576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d699190611ba2565b905080600003610da5576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060025460015483610db89190611bbb565b610dc29190611bd2565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e1b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610a91565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e9d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610f65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f899190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610fd8576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015611067573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108b9190611ba2565b9050806000036110c7576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000906110d78784611bbb565b6110e19190611bd2565b9296929550919350505050565b73ffffffffffffffffffffffffffffffffffffffff831661113b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611188576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611244576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611291576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040902054818110156112f1576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112fb8282611997565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260036020526040808220939093559085168152908120805484929061133e908490611bd2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113a491815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff82166113ff576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260409020548181101561145f576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114698282611997565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260036020526040812091909155600580548492906114a4908490611997565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016111ea565b73ffffffffffffffffffffffffffffffffffffffff8216611541576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008282546115539190611bd2565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805483929061158d908490611bd2565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561160a576020818501810151868301820152016115ee565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061165b60208301846115e4565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461168457600080fd5b50565b6000806040838503121561169a57600080fd5b82356116a581611662565b946020939093013593505050565b6000806000606084860312156116c857600080fd5b83356116d381611662565b925060208401356116e381611662565b929592945050506040919091013590565b60006020828403121561170657600080fd5b5035919050565b60006020828403121561171f57600080fd5b813561165b81611662565b6020810160038310611765577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff8411156117b5576117b561176b565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff821117156118025761180261176b565b60405283815290508082840185101561181a57600080fd5b83836020830137600060208583010152509392505050565b60006020828403121561184457600080fd5b813567ffffffffffffffff81111561185b57600080fd5b8201601f8101841361186c57600080fd5b61187b8482356020840161179a565b949350505050565b6000806040838503121561189657600080fd5b823567ffffffffffffffff8111156118ad57600080fd5b8301601f810185136118be57600080fd5b6118cd8582356020840161179a565b95602094909401359450505050565b600080604083850312156118ef57600080fd5b82356118fa81611662565b9150602083013561190a81611662565b809150509250929050565b600181811c9082168061192957607f821691505b602082108103611962577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561055d5761055d611968565b6040815260006119bd60408301856115e4565b90508260208301529392505050565b601f821115611a1657806000526020600020601f840160051c810160208510156119f35750805b601f840160051c820191505b81811015611a1357600081556001016119ff565b50505b505050565b815167ffffffffffffffff811115611a3557611a3561176b565b611a4981611a438454611915565b846119cc565b6020601f821160018114611a9b5760008315611a655750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611a13565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015611ae95787850151825560209485019460019092019101611ac9565b5084821015611b2557868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b600060208284031215611b4657600080fd5b8151801515811461165b57600080fd5b608081526000611b6960808301876115e4565b6020830195909552506040810192909252606090910152919050565b600060208284031215611b9757600080fd5b815161165b81611662565b600060208284031215611bb457600080fd5b5051919050565b808202811582820484141761055d5761055d611968565b8082018082111561055d5761055d61196856fea2646970667358221220d6ba834f25782689ed13bffb6ac9ff2c8d3b5342c94a515aea8197a76070ad3f64736f6c634300081a0033a2646970667358221220e766449213463bed09a714210b2483e968532fcd0df5f7e884c59017b0f44e9c64736f6c634300081a0033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5062010bd9806200003e6000396000f3fe608060405234801561001057600080fd5b506004361061032b5760003560e01c80636dfcbc50116101b2578063bed3e813116100f9578063e51c6388116100a2578063eb7a2fac1161007c578063eb7a2fac146104ec578063fa7626d4146104f4578063fbc611c814610501578063fdad0ad01461050957600080fd5b8063e51c6388146104dc578063e804a4061461035a578063ea37902f146104e457600080fd5b8063dc749dd7116100d3578063dc749dd7146104c4578063dde7e967146104cc578063e20c9f71146104d457600080fd5b8063bed3e813146104ac578063c946d7c0146104b4578063ceccfab3146104bc57600080fd5b8063b0464fdc1161015b578063ba414fa611610135578063ba414fa614610484578063ba800c911461049c578063ba9adeef146104a457600080fd5b8063b0464fdc1461046c578063b51ac07114610474578063b5508aa91461047c57600080fd5b806385226c811161018c57806385226c811461043a578063916a17c61461044f578063a721b2d31461046457600080fd5b80636dfcbc50146104225780637ae697301461042a57806383ababa91461043257600080fd5b80633e5e3c23116102765780635efe72a91161021f57806364002a1f116101f957806364002a1f146103fd57806366d9a9a0146104055780636d6ce0d01461041a57600080fd5b80635efe72a9146103e55780636198fb19146103ed5780636221b509146103f557600080fd5b8063431814371161025057806343181437146103cd5780634ffab9de146103d55780635d72228f146103dd57600080fd5b80633e5e3c23146103b55780633f7286f4146103bd57806342752d41146103c557600080fd5b80631ed7831c116102d8578063264b524c116102b2578063264b524c146103905780632ade38801461039857806336431b3f146103ad57600080fd5b80631ed7831c1461036257806320dee15f1461038057806321aeb18c1461038857600080fd5b80631475976611610309578063147597661461034a5780631b9641bf146103525780631e63d2b91461035a57600080fd5b80630a9254e4146103305780630b5ad28d1461033a5780631238212c14610342575b600080fd5b610338610511565b005b6103386110a6565b610338611259565b610338611625565b610338611853565b6103386119ca565b61036a611de4565b604051610377919061ac5e565b60405180910390f35b610338611e46565b610338612234565b610338612354565b6103a0612548565b604051610377919061acfa565b61033861268a565b61036a6127f1565b61036a612851565b6103386128b1565b610338612a03565b610338612b36565b610338612dba565b61033861310c565b610338613289565b61033861344f565b61033861363d565b61040d613819565b604051610377919061ae60565b61033861399b565b610338613ca0565b610338613eb9565b610338614087565b61044261416b565b604051610377919061aefe565b61045761423b565b604051610377919061af75565b610338614336565b61045761454f565b61033861464a565b610442614749565b61048c614819565b6040519015158152602001610377565b6103386148ed565b610338614a03565b610338614b89565b610338614d02565b610338614f86565b6103386152d2565b610338615375565b61036a6157b4565b610338615814565b610338615cbf565b610338615e52565b601f5461048c9060ff1681565b610338615f51565b6103386162de565b602580547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602680549091166112341790556040516105579061ab6d565b604051809103906000f080158015610573573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600f81527f476174657761795a45564d2e736f6c000000000000000000000000000000000060208201526025549151602481019390935292166044820152610657919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc95500000000000000000000000000000000000000000000000000000000179052616454565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b039384168102919091179182905560208054919092049092167fffffffffffffffffffffffff000000000000000000000000000000000000000090921682178155604080517f2722feee0000000000000000000000000000000000000000000000000000000081529051632722feee926004808401939192918290030181865afa158015610719573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073d919061b00c565b602780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516107819061ab7b565b604051809103906000f08015801561079d573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161781556027546040517f06447d5600000000000000000000000000000000000000000000000000000000815292166004830152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d569101600060405180830381600087803b15801561083957600080fd5b505af115801561084d573d6000803e3d6000fd5b5050505060008060006040516108629061ab89565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801561089e573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556020546040516012936001938493600093919216906108f49061ab97565b6109039695949392919061b035565b604051809103906000f08015801561091f573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556023546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b1580156109b657600080fd5b505af11580156109ca573d6000803e3d6000fd5b50506023546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b158015610a3457600080fd5b505af1158015610a48573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610ac857600080fd5b505af1158015610adc573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610b3157600080fd5b505af1158015610b45573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610bb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bdd919061b12a565b506021546025546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116906347e7ef24906044016020604051808303816000875af1158015610c4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c72919061b12a565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610cd157600080fd5b505af1158015610ce5573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610d5b57600080fd5b505af1158015610d6f573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116925063095ea7b391506044016020604051808303816000875af1158015610de3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e07919061b12a565b50602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610e5957600080fd5b505af1158015610e6d573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610ee1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f05919061b12a565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610f6457600080fd5b505af1158015610f78573d6000803e3d6000fd5b50506040805160a08101825261032180825260016020808401918252838501928352845190810190945260008085526060840185905260808401528251602880549251151574010000000000000000000000000000000000000000027fffffffffffffffffffffff0000000000000000000000000000000000000000009093166001600160a01b0392831617929092178255915160298054919093167fffffffffffffffffffffffff000000000000000000000000000000000000000091909116179091559093509150602a9061104f908261b20f565b50608091909101516003909101556040805180820190915260018082526020909101819052602c819055602d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b1790526000602c5551630618f58760e51b81527f60ee1247000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015b600060405180830381600087803b15801561117457600080fd5b505af1158015611188573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637b15118b91506034015b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168352611224926001916001600160a01b0316908790602c9060289060040161b3bd565b600060405180830381600087803b15801561123e57600080fd5b505af1158015611252573d6000803e3d6000fd5b5050505050565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa1580156112aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ce919061b42f565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561134357600080fd5b505af1158015611357573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af11580156113c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ed919061b12a565b506026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905280517ff48448140000000000000000000000000000000000000000000000000000000081529051919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f48448149160048082019260009290919082900301818387803b1580156114b057600080fd5b505af11580156114c4573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637b15118b915060340160408051601f198184030181526021548383018352600184526000602085015291517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815261156e93919289926001600160a01b039091169188919060289060040161b448565b600060405180830381600087803b15801561158857600080fd5b505af115801561159c573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156115ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611613919061b42f565b905061161f8382616473565b50505050565b6026546040516001600160a01b03909116602482015260019060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b179052602554602654925193945060019384936001600160a01b03928316937f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c936116e7939216910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f198184030181529082905260225461171f926001600160a01b0390911690899060009081908b90602c9060289061b49c565b60405180910390a3604051630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015b600060405180830381600087803b15801561179457600080fd5b505af11580156117a8573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250632810ae639150603401604051602081830303815290604052858486602c60286040518763ffffffff1660e01b815260040161181c9695949392919061b510565b600060405180830381600087803b15801561183657600080fd5b505af115801561184a573d6000803e3d6000fd5b50505050505050565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905251630618f58760e51b81527f5d67094f000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561191b57600080fd5b505af115801561192f573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637b15118b915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168352611224926000916001600160a01b0316908790602c9060289060040161b3bd565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611a1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3f919061b42f565b6026546040516001600160a01b03909116602482015290915060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b1790525490517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482018190526001600160a01b039092166084820152919250908190737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611b3157600080fd5b505af1158015611b45573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff19166020820152600093506001600160a01b0390911691507f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c9060340160408051601f198184030181528282526021547f4d8943bb000000000000000000000000000000000000000000000000000000008452915190926001600160a01b03909216918b9189918491634d8943bb916004808201926020929091908290030181865afa158015611c17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c3b919061b42f565b6040805180820182528a8152600160208201529051611c639695949392918d9160289061b541565b60405180910390a3602080546026546040516001600160a01b0392831693637b15118b93611cab9316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815260215483830183528684526001602085015291517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b168152611d179391928b926001600160a01b03909116918a919060289060040161b448565b600060405180830381600087803b158015611d3157600080fd5b505af1158015611d45573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611d98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbc919061b42f565b9050611ddc83611dcc888861b5d2565b611dd6919061b5d2565b82616473565b505050505050565b60606016805480602002602001604051908101604052809291908181526020018280548015611e3c57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611e1e575b5050505050905090565b601f54604080518082018252601a81527f476174657761795a45564d55706772616465546573742e736f6c000000000000602080830191909152825190810190925260008252602554611eab936001600160a01b0361010090910481169391166164f2565b601f546021546025546040516370a0823160e01b81526001600160a01b03918216600482015261010090930481169260019260009216906370a0823190602401602060405180830381865afa158015611f08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f2c919061b42f565b6040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b0385166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611fb957600080fd5b505af1158015611fcd573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff19166020820152600093506001600160a01b0390911691507f5d7cd8ae449a6b25de63f10534ddd17d8dd3e79c7aa5f28964b7a7c760258d979060340160408051601f198184030181528282526021547f4d8943bb000000000000000000000000000000000000000000000000000000008452915190926001600160a01b039092169188916000918491634d8943bb916004808201926020929091908290030181865afa1580156120a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c4919061b42f565b604080518082018252600081526001602082015290516120ec9695949392919060289061b5e5565b60405180910390a360265460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b03841690637c0dcb5f9060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526121809287916001600160a01b03169060289060040161b667565b600060405180830381600087803b15801561219a57600080fd5b505af11580156121ae573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015612201573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612225919061b42f565b905061161f611dd6848461b5d2565b604051630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156122a057600080fd5b505af11580156122b4573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b031692506397a1cef191506034015b6040516020818303038152906040526000600160286040518563ffffffff1660e01b8152600401612326949392919061b6a1565b600060405180830381600087803b15801561234057600080fd5b505af115801561161f573d6000803e3d6000fd5b60208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290516001600160a01b03909216926397d340f5926004808401938290030181865afa1580156123b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d6919061b42f565b6123e190600161b6d2565b67ffffffffffffffff8111156123f9576123f961b14c565b6040519080825280601f01601f191660200182016040528015612423576020820181803683370190505b50602a90612431908261b20f565b50604051630618f58760e51b81527f9507fb3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561249e57600080fd5b505af11580156124b2573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637c0dcb5f915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168352612326926002916001600160a01b03169060289060040161b667565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561268157600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561266a5783829060005260206000200180546125dd9061b17b565b80601f01602080910402602001604051908101604052809291908181526020018280546126099061b17b565b80156126565780601f1061262b57610100808354040283529160200191612656565b820191906000526020600020905b81548152906001019060200180831161263957829003601f168201915b5050505050815260200190600101906125be565b50505050815250508152602001906001019061256c565b50505050905090565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905251630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561275257600080fd5b505af1158015612766573d6000803e3d6000fd5b5050602080546040516001600160a01b039091169350637b15118b9250015b60408051601f19818403018152602154838301835260018085526000602086015292517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b168152611224949293926001600160a01b0390921691889160289060040161b448565b60606018805480602002602001604051908101604052809291908181526020018280548015611e3c576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611e1e575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015611e3c576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611e1e575050505050905090565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905251630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561297957600080fd5b505af115801561298d573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250632810ae6391506034016040516020818303038152906040526000600185602c60286040518763ffffffff1660e01b81526004016112249695949392919061b510565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905251630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015612acb57600080fd5b505af1158015612adf573d6000803e3d6000fd5b5050602080546040516001600160a01b039091169350632810ae639250015b60405160208183030381529060405260018085602c60286040518763ffffffff1660e01b81526004016112249695949392919061b510565b60208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290516000936002936001600160a01b0316926397d340f592600480830193928290030181865afa158015612b99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bbd919061b42f565b612bc7919061b6e5565b67ffffffffffffffff811115612bdf57612bdf61b14c565b6040519080825280601f01601f191660200182016040528015612c09576020820181803683370190505b5060208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290519394506002936001600160a01b03909216926397d340f5926004808401938290030181865afa158015612c6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c92919061b42f565b612c9c919061b6e5565b612ca790600161b6d2565b67ffffffffffffffff811115612cbf57612cbf61b14c565b6040519080825280601f01601f191660200182016040528015612ce9576020820181803683370190505b50602a90612cf7908261b20f565b50604051630618f58760e51b81527f9507fb3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015612d6457600080fd5b505af1158015612d78573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637b15118b9150603401612785565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015612e0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e2f919061b42f565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612ea457600080fd5b505af1158015612eb8573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015612f2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f4e919061b12a565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612fad57600080fd5b505af1158015612fc1573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637c0dcb5f915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526130569287916001600160a01b03169060289060040161b667565b600060405180830381600087803b15801561307057600080fd5b505af1158015613084573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156130d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130fb919061b42f565b90506131078282616473565b505050565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b1790526000602c5551630618f58760e51b81527f60ee1247000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015b600060405180830381600087803b1580156131da57600080fd5b505af11580156131ee573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b031692506306cb898391506034015b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168352611224926001600160a01b03909116908690602c9060289060040161b720565b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b1790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561337357600080fd5b505af1158015613387573d6000803e3d6000fd5b505060215460255460265460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039283169450911691507f306ee13f48319a123b222c69908e44dcf91abffc20cacc502e3cf5a4ff23e0e49060340160408051601f1981840301815290829052613407918690602c9060289061b78a565b60405180910390a3602080546026546040516001600160a01b03928316936306cb89839361322c9316910160609190911b6bffffffffffffffffffffffff1916815260140190565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa1580156134a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134c4919061b42f565b6022546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526101236004820152602481018390529192506001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015613531573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613555919061b12a565b506000600190507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156135ba57600080fd5b505af11580156135ce573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b031692506397a1cef19150603401604051602081830303815290604052858460286040518563ffffffff1660e01b815260040161181c949392919061b6a1565b6026546040516001600160a01b03909116602482015260019060009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905260255490517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561371257600080fd5b505af1158015613726573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015613798573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137bc919061b12a565b506000602c55604051630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e09060240161177a565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561268157838290600052602060002090600202016040518060400160405290816000820180546138709061b17b565b80601f016020809104026020016040519081016040528092919081815260200182805461389c9061b17b565b80156138e95780601f106138be576101008083540402835291602001916138e9565b820191906000526020600020905b8154815290600101906020018083116138cc57829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561398357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116139305790505b5050505050815250508152602001906001019061383d565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa1580156139ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a10919061b42f565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613a8557600080fd5b505af1158015613a99573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015613b0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b2f919061b12a565b506026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905280517ff48448140000000000000000000000000000000000000000000000000000000081529051919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f48448149160048082019260009290919082900301818387803b158015613bf257600080fd5b505af1158015613c06573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637b15118b915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261156e9288916001600160a01b0316908790602c9060289060040161b3bd565b60208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290516000936002936001600160a01b0316926397d340f592600480830193928290030181865afa158015613d03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d27919061b42f565b613d31919061b6e5565b67ffffffffffffffff811115613d4957613d4961b14c565b6040519080825280601f01601f191660200182016040528015613d73576020820181803683370190505b5060208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290519394506002936001600160a01b03909216926397d340f5926004808401938290030181865afa158015613dd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dfc919061b42f565b613e06919061b6e5565b613e1190600161b6d2565b67ffffffffffffffff811115613e2957613e2961b14c565b6040519080825280601f01601f191660200182016040528015613e53576020820181803683370190505b50602a90613e61908261b20f565b50604051630618f58760e51b81527f9507fb3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024016131c0565b60208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290516001600160a01b03909216926397d340f5926004808401938290030181865afa158015613f17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f3b919061b42f565b613f4690600161b6d2565b67ffffffffffffffff811115613f5e57613f5e61b14c565b6040519080825280601f01601f191660200182016040528015613f88576020820181803683370190505b50602a90613f96908261b20f565b50604051630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561400357600080fd5b505af1158015614017573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b031692506397a1cef1915060340160405160208183030381529060405260018060286040518563ffffffff1660e01b8152600401612326949392919061b6a1565b604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156140f357600080fd5b505af1158015614107573d6000803e3d6000fd5b5050602080546040805160008152928301908190526021547f7c0dcb5f000000000000000000000000000000000000000000000000000000009091526001600160a01b039182169450637c0dcb5f935061232692916001911660286024840161b667565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156126815783829060005260206000200180546141ae9061b17b565b80601f01602080910402602001604051908101604052809291908181526020018280546141da9061b17b565b80156142275780601f106141fc57610100808354040283529160200191614227565b820191906000526020600020905b81548152906001019060200180831161420a57829003601f168201915b50505050508152602001906001019061418f565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156126815760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561431e57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116142cb5790505b5050505050815250508152602001906001019061425f565b60208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290516000936002936001600160a01b0316926397d340f592600480830193928290030181865afa158015614399573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143bd919061b42f565b6143c7919061b6e5565b67ffffffffffffffff8111156143df576143df61b14c565b6040519080825280601f01601f191660200182016040528015614409576020820181803683370190505b5060208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290519394506002936001600160a01b03909216926397d340f5926004808401938290030181865afa15801561446e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614492919061b42f565b61449c919061b6e5565b6144a790600161b6d2565b67ffffffffffffffff8111156144bf576144bf61b14c565b6040519080825280601f01601f1916602001820160405280156144e9576020820181803683370190505b50602a906144f7908261b20f565b50604051630618f58760e51b81527f9507fb3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e09060240161115a565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156126815760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561463257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116145df5790505b50505050508152505081526020019060010190614573565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905251630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561471257600080fd5b505af1158015614726573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911693506306cb898392500161322c565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101561268157838290600052602060002001805461478c9061b17b565b80601f01602080910402602001604051908101604052809291908181526020018280546147b89061b17b565b80156148055780601f106147da57610100808354040283529160200191614805565b820191906000526020600020905b8154815290600101906020018083116147e857829003601f168201915b50505050508152602001906001019061476d565b60085460009060ff1615614831575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa1580156148c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148e6919061b42f565b1415905090565b604051630618f58760e51b81527f5d67094f000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561495957600080fd5b505af115801561496d573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637c0dcb5f915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168352612326926000916001600160a01b03169060289060040161b667565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905251630618f58760e51b81527f5d67094f000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015614acb57600080fd5b505af1158015614adf573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637b15118b915060340160408051601f1981840301815260215483830183526001845260006020850181905292517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b168152611224949293926001600160a01b0390921691889160289060040161b448565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905251630618f58760e51b81527f60ee1247000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015614c5157600080fd5b505af1158015614c65573d6000803e3d6000fd5b5050602080546026546040805160609290921b6bffffffffffffffffffffffff1916938201939093528251808203601401815260215460748301855260006034840181815260549094015293517f7b15118b0000000000000000000000000000000000000000000000000000000081526001600160a01b039384169650637b15118b9550611224949193600193921691889160289060040161b448565b60208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290516000936002936001600160a01b0316926397d340f592600480830193928290030181865afa158015614d65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614d89919061b42f565b614d93919061b6e5565b67ffffffffffffffff811115614dab57614dab61b14c565b6040519080825280601f01601f191660200182016040528015614dd5576020820181803683370190505b5060208054604080517f97d340f500000000000000000000000000000000000000000000000000000000815290519394506002936001600160a01b03909216926397d340f5926004808401938290030181865afa158015614e3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614e5e919061b42f565b614e68919061b6e5565b614e7390600161b6d2565b67ffffffffffffffff811115614e8b57614e8b61b14c565b6040519080825280601f01601f191660200182016040528015614eb5576020820181803683370190505b50602a90614ec3908261b20f565b50604051630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015614f3057600080fd5b505af1158015614f44573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250632810ae639150603401612afe565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015614fd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614ffb919061b42f565b6021546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526101236004820152602481018390529192506001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015615068573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061508c919061b12a565b506027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156150ff57600080fd5b505af1158015615113573d6000803e3d6000fd5b50506021546040517ff687d12a000000000000000000000000000000000000000000000000000000008152600a60048201526001600160a01b03909116925063f687d12a9150602401600060405180830381600087803b15801561517657600080fd5b505af115801561518a573d6000803e3d6000fd5b5050604051630618f58760e51b81527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b1580156151fb57600080fd5b505af115801561520f573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637c0dcb5f915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526152a49287916001600160a01b03169060289060040161b667565b600060405180830381600087803b1580156152be57600080fd5b505af1158015611ddc573d6000803e3d6000fd5b604051630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561533e57600080fd5b505af1158015615352573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911693506397a1cef19250016122f2565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa1580156153c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906153ea919061b42f565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa15801561543c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615460919061b42f565b6027546025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152929350163190600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156154de57600080fd5b505af11580156154f2573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015615564573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615588919061b12a565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156155e757600080fd5b505af11580156155fb573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b031692506397a1cef19150603401604051602081830303815290604052878460286040518563ffffffff1660e01b815260040161566a949392919061b6a1565b600060405180830381600087803b15801561568457600080fd5b505af1158015615698573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156156eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061570f919061b42f565b905061571b8582616473565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801561576c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615790919061b42f565b905061579c8582616473565b60275461184a9085906001600160a01b031631616473565b60606015805480602002602001604051908101604052809291908181526020018280548015611e3c576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611e1e575050505050905090565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015615865573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615889919061b42f565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa1580156158db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906158ff919061b42f565b6027546026546040516001600160a01b03918216602482015292935016319060009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905260255490517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156159da57600080fd5b505af11580156159ee573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015615a60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615a84919061b12a565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015615ae357600080fd5b505af1158015615af7573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250632810ae639150603401604051602081830303815290604052888486602c60286040518763ffffffff1660e01b8152600401615b6b9695949392919061b510565b600060405180830381600087803b158015615b8557600080fd5b505af1158015615b99573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015615bec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615c10919061b42f565b9050615c1c8682616473565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015615c6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615c91919061b42f565b9050615c9d8682616473565b602754615cb59086906001600160a01b031631616473565b5050505050505050565b60255460265460405160609190911b6bffffffffffffffffffffffff19166020820152600191829182916001600160a01b0316907f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c9060340160408051601f1981840301815260225483830183526000808552600160208601529251615d5b9492936001600160a01b03909216928a929182919060289061b5e5565b60405180910390a3604051630618f58760e51b81527fe4dd681d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015615dcf57600080fd5b505af1158015615de3573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b031692506397a1cef19150603401604051602081830303815290604052848460286040518563ffffffff1660e01b81526004016152a4949392919061b6a1565b6026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16630427d73b60e51b17905251630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015615f1a57600080fd5b505af1158015615f2e573d6000803e3d6000fd5b5050602080546040516001600160a01b039091169350637b15118b9250016111c6565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015615fa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615fc6919061b42f565b6020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561605757600080fd5b505af115801561606b573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff19166020820152600093506001600160a01b0390911691507f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c9060340160408051601f198184030181528282526021547f4d8943bb000000000000000000000000000000000000000000000000000000008452915190926001600160a01b039092169188916000918491634d8943bb916004808201926020929091908290030181865afa15801561613e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616162919061b42f565b6040805180820182526000815260016020820152905161618a9695949392919060289061b5e5565b60405180910390a3602080546026546040516001600160a01b0392831693637c0dcb5f936161d29316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261622a9287916001600160a01b03169060289060040161b667565b600060405180830381600087803b15801561624457600080fd5b505af1158015616258573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156162ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906162cf919061b42f565b9050613107611dd6848461b5d2565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260029260009216906370a0823190602401602060405180830381865afa15801561632f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616353919061b42f565b6021549091506001600160a01b031663a9059cbb61012361637560018561b5d2565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156163d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906163fc919061b12a565b50604051630618f58760e51b81527ffe382aa7000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024016151e1565b600061645e61aba5565b616469848483616507565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b1580156164de57600080fd5b505afa158015611ddc573d6000803e3d6000fd5b6164fa61aba5565b6112528585858486616582565b6000806165148584616682565b90506165776040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f7879000000815250828660405160200161656292919061b7d9565b6040516020818303038152906040528561668e565b9150505b9392505050565b6040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201528190737109709ecfa91a80626ff3989d68f67f5b1dd12d9081906306447d5690602401600060405180830381600087803b1580156165f457600080fd5b505af1925050508015616605575060015b61661a57616615878787876166bc565b61184a565b616626878787876166bc565b806001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561666157600080fd5b505af1158015616675573d6000803e3d6000fd5b5050505050505050505050565b600061657b83836166d5565b60c081015151600090156166b2576166ab84848460c001516166f0565b905061657b565b6166ab8484616896565b60006166c88483616981565b905061125285828561698d565b60006166e18383616d57565b61657b8383602001518461668e565b6000806166fb616d67565b905060006167098683616e3a565b9050600061672082606001518360200151856172e0565b90506000616730838389896174f2565b9050600061673d8261836f565b602081015181519192509060030b156167b05789826040015160405160200161676792919061b7fb565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526167a79160040161b87c565b60405180910390fd5b60006167f36040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a20000000000000000000000081525083600161853e565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d9061684690849060040161b87c565b602060405180830381865afa158015616863573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616887919061b00c565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc925906168eb90879060040161b87c565b600060405180830381865afa158015616908573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616930919081019061b948565b9050600061695e828560405160200161694a92919061b97d565b60405160208183030381529060405261873e565b90506001600160a01b03811661646957848460405160200161676792919061b9ac565b60006166e18383618751565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201527fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61036024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90600090829063667f9d7090604401602060405180830381865afa158015616a29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616a4d919061b42f565b905080616bf4576000616a5f8661875d565b604080518082018252600581527f352e302e3000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150616aea905b60408051808201825260008082526020918201528151808301909252845182528085019082015290618855565b80616af6575060008451115b15616b79576040517f4f1ef2860000000000000000000000000000000000000000000000000000000081526001600160a01b03871690634f1ef28690616b42908890889060040161b7d9565b600060405180830381600087803b158015616b5c57600080fd5b505af1158015616b70573d6000803e3d6000fd5b50505050616bee565b6040517f3659cfe60000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152871690633659cfe690602401600060405180830381600087803b158015616bd557600080fd5b505af1158015616be9573d6000803e3d6000fd5b505050505b50611252565b806000616c008261875d565b604080518082018252600581527f352e302e3000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150616c6290616abd565b80616c6e575060008551115b15616cf3576040517f9623609d0000000000000000000000000000000000000000000000000000000081526001600160a01b03831690639623609d90616cbc908a908a908a9060040161ba57565b600060405180830381600087803b158015616cd657600080fd5b505af1158015616cea573d6000803e3d6000fd5b5050505061184a565b6040517f99a88ec40000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015287811660248301528316906399a88ec490604401600060405180830381600087803b15801561666157600080fd5b616d6382826000618869565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90616dee90849060040161ba88565b600060405180830381865afa158015616e0b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616e33919081019061bacf565b9250505090565b616e6c6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050616eb76040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b616ec08561896c565b60208201526000616ed086618d51565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015616f12573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616f3a919081019061bacf565b86838560200151604051602001616f54949392919061bb18565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190616fac90859060040161b87c565b600060405180830381865afa158015616fc9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616ff1919081019061bacf565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f69061703990849060040161bc1c565b602060405180830381865afa158015617056573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061707a919061b12a565b61708f5781604051602001616767919061bc6e565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906170d490849060040161bd00565b600060405180830381865afa1580156170f1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617119919081019061bacf565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f69061716090849060040161bd52565b602060405180830381865afa15801561717d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906171a1919061b12a565b15617236576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906171eb90849060040161bd52565b600060405180830381865afa158015617208573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617230919081019061bacf565b60408501525b846001600160a01b03166349c4fac882866000015160405160200161725b919061bda4565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161728792919061be10565b600060405180830381865afa1580156172a4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526172cc919081019061bacf565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816172fc5790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061735c5761735c61be35565b60200260200101819052506040518060400160405280600381526020017f2d726c0000000000000000000000000000000000000000000000000000000000815250816001815181106173b0576173b061be35565b6020026020010181905250846040516020016173cc919061be64565b604051602081830303815290604052816002815181106173ee576173ee61be35565b60200260200101819052508260405160200161740a919061bed0565b6040516020818303038152906040528160038151811061742c5761742c61be35565b602002602001018190525060006174428261836f565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506174d39060408051808201825260008082526020918201528151808301909252845182528085019082015290618fd4565b6174e85785604051602001616767919061bf11565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015617542565b511590565b6176b6578260200151156175fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a4016167a7565b8260c00151156176b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a4016167a7565b6040805160ff8082526120008201909252600091816020015b60608152602001906001900390816176cf57905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061772a9061bfa2565b935060ff168151811061773f5761773f61be35565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001617790919061bfc1565b6040516020818303038152906040528282806177ab9061bfa2565b935060ff16815181106177c0576177c061be35565b60200260200101819052506040518060400160405280600681526020017f6465706c6f79000000000000000000000000000000000000000000000000000081525082828061780d9061bfa2565b935060ff16815181106178225761782261be35565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d6500000000000000000000000000000000000081525082828061786f9061bfa2565b935060ff16815181106178845761788461be35565b602002602001018190525087602001518282806178a09061bfa2565b935060ff16815181106178b5576178b561be35565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806179029061bfa2565b935060ff16815181106179175761791761be35565b60209081029190910101528751828261792f8161bfa2565b935060ff16815181106179445761794461be35565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806179919061bfa2565b935060ff16815181106179a6576179a661be35565b60200260200101819052506179ba46619035565b82826179c58161bfa2565b935060ff16815181106179da576179da61be35565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280617a279061bfa2565b935060ff1681518110617a3c57617a3c61be35565b602002602001018190525086828280617a549061bfa2565b935060ff1681518110617a6957617a6961be35565b6020908102919091010152855115617b905760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f6465000000000000000000000060208201528282617aba8161bfa2565b935060ff1681518110617acf57617acf61be35565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90617b1f90899060040161b87c565b600060405180830381865afa158015617b3c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617b64919081019061bacf565b8282617b6f8161bfa2565b935060ff1681518110617b8457617b8461be35565b60200260200101819052505b846020015115617c605760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282617bd98161bfa2565b935060ff1681518110617bee57617bee61be35565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280617c3b9061bfa2565b935060ff1681518110617c5057617c5061be35565b6020026020010181905250617e27565b617c9861753d8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b617d2b5760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282617cdb8161bfa2565b935060ff1681518110617cf057617cf061be35565b60200260200101819052508460a00151604051602001617d10919061be64565b604051602081830303815290604052828280617c3b9061bfa2565b8460c00151158015617d6e575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152617d6c90511590565b155b15617e275760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282617db28161bfa2565b935060ff1681518110617dc757617dc761be35565b6020026020010181905250617ddb886190d5565b604051602001617deb919061be64565b604051602081830303815290604052828280617e069061bfa2565b935060ff1681518110617e1b57617e1b61be35565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152617e5b90511590565b617ef05760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282617e9e8161bfa2565b935060ff1681518110617eb357617eb361be35565b60200260200101819052508460400151828280617ecf9061bfa2565b935060ff1681518110617ee457617ee461be35565b60200260200101819052505b6060850151156180115760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282617f398161bfa2565b935060ff1681518110617f4e57617f4e61be35565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015617fbd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617fe5919081019061bacf565b8282617ff08161bfa2565b935060ff16815181106180055761800561be35565b60200260200101819052505b60e085015151156180b85760408051808201909152600a81527f2d2d6761734c696d6974000000000000000000000000000000000000000000006020820152828261805b8161bfa2565b935060ff16815181106180705761807061be35565b602002602001018190525061808c8560e0015160000151619035565b82826180978161bfa2565b935060ff16815181106180ac576180ac61be35565b60200260200101819052505b60e085015160200151156181625760408051808201909152600a81527f2d2d676173507269636500000000000000000000000000000000000000000000602082015282826181058161bfa2565b935060ff168151811061811a5761811a61be35565b60200260200101819052506181368560e0015160200151619035565b82826181418161bfa2565b935060ff16815181106181565761815661be35565b60200260200101819052505b60e0850151604001511561820c5760408051808201909152600e81527f2d2d6d6178466565506572476173000000000000000000000000000000000000602082015282826181af8161bfa2565b935060ff16815181106181c4576181c461be35565b60200260200101819052506181e08560e0015160400151619035565b82826181eb8161bfa2565b935060ff16815181106182005761820061be35565b60200260200101819052505b60e085015160600151156182b65760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826182598161bfa2565b935060ff168151811061826e5761826e61be35565b602002602001018190525061828a8560e0015160600151619035565b82826182958161bfa2565b935060ff16815181106182aa576182aa61be35565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156182d4576182d461b14c565b60405190808252806020026020018201604052801561830757816020015b60608152602001906001900390816182f25790505b50905060005b8260ff168160ff16101561836057838160ff16815181106183305761833061be35565b6020026020010151828260ff168151811061834d5761834d61be35565b602090810291909101015260010161830d565b5093505050505b949350505050565b6183966040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c9161841c9186910161c02c565b600060405180830381865afa158015618439573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052618461919081019061bacf565b9050600061846f8683619bc4565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161849f919061aefe565b6000604051808303816000875af11580156184be573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526184e6919081019061c073565b805190915060030b158015906184ff5750602081015151155b801561850e5750604081015151155b156174e857816000815181106185265761852661be35565b6020026020010151604051602001616767919061c129565b606060006185738560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506185aa9082905b90619d19565b15618707576000618627826186218461861b6185ed8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90619d40565b90619da2565b604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061868b908290619d19565b156186f557604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526186f2905b8290619e27565b90505b6186fe81619e4d565b9250505061657b565b821561872057848460405160200161676792919061c315565b505060408051602081019091526000815261657b565b509392505050565b6000808251602084016000f09392505050565b616d6382826001618869565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fad3cb1cc00000000000000000000000000000000000000000000000000000000179052905160609160009182916001600160a01b038616916187d2919061c3bc565b600060405180830381855afa9150503d806000811461880d576040519150601f19603f3d011682016040523d82523d6000602084013e618812565b606091505b5091509150818015618825575060208151115b1561883e5780806020019051810190618367919061bacf565b505060408051602081019091526000815292915050565b60006188618383619eb6565b159392505050565b8160a001511561887857505050565b6000618885848484619f91565b905060006188928261836f565b602081015181519192509060030b15801561892e5750604080518082018252600781527f53554343455353000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261892e906040805180820182526000808252602091820152815180830190925284518252808501908201526185a4565b1561893b57505050505050565b6040820151511561895b578160400151604051602001616767919061c3d8565b80604051602001616767919061c436565b606060006189a18360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150618a06905b8290618fd4565b15618a7557604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261657b90618a7090839061a52c565b619e4d565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618ad7905b829061a5b6565b600103618ba457604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618b3d906186eb565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261657b90618a70905b8390619e27565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618c03906189ff565b15618d3a57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290618c6b90839061a650565b905060008160018351618c7e919061b5d2565b81518110618c8e57618c8e61be35565b60200260200101519050618d31618a70618d046040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529061a52c565b95945050505050565b82604051602001616767919061c4a1565b50919050565b60606000618d868360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150618de8906189ff565b15618df65761657b81619e4d565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618e5590618ad0565b600103618ebf57604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261657b90618a7090618b9d565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618f1e906189ff565b15618d3a57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290618f8690839061a650565b9050600181511115618fc2578060028251618fa1919061b5d2565b81518110618fb157618fb161be35565b602002602001015192505050919050565b5082604051602001616767919061c4a1565b805182516000911115618fe95750600061646d565b81518351602085015160009291618fff9161b6d2565b619009919061b5d2565b90508260200151810361902057600191505061646d565b82516020840151819020912014905092915050565b606060006190428361a6f5565b600101905060008167ffffffffffffffff8111156190625761906261b14c565b6040519080825280601f01601f19166020018201604052801561908c576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461909657509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091619161905b8290618855565b156191a157505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e73650000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526192009061915a565b1561924057505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d495400000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261929f9061915a565b156192df57505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261933e9061915a565b806193a35750604080518082018252601081527f47504c2d322e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526193a39061915a565b156193e357505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526194429061915a565b806194a75750604080518082018252601081527f47504c2d332e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526194a79061915a565b156194e757505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526195469061915a565b806195ab5750604080518082018252601181527f4c47504c2d322e312d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526195ab9061915a565b156195eb57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261964a9061915a565b806196af5750604080518082018252601181527f4c47504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526196af9061915a565b156196ef57505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261974e9061915a565b1561978e57505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526197ed9061915a565b1561982d57505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261988c9061915a565b156198cc57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261992b9061915a565b1561996b57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e3000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526199ca9061915a565b15619a0a57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152619a699061915a565b80619ace5750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152619ace9061915a565b15619b0e57505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e3100000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152619b6d9061915a565b15619bad57505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151616767929060200161c57f565b60608060005b8451811015619c4f5781858281518110619be657619be661be35565b6020026020010151604051602001619bff92919061b97d565b604051602081830303815290604052915060018551619c1e919061b5d2565b8114619c475781604051602001619c35919061c6e8565b60405160208183030381529060405291505b600101619bca565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081619c685790505090508381600081518110619c9357619c9361be35565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110619ce757619ce761be35565b60200260200101819052508181600281518110619d0657619d0661be35565b6020908102919091010152949350505050565b6020808301518351835192840151600093619d37929184919061a7d7565b14159392505050565b60408051808201909152600080825260208201526000619d72846000015185602001518560000151866020015161a8e8565b9050836020015181619d84919061b5d2565b84518590619d9390839061b5d2565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015619dc757508161646d565b6020808301519084015160019114619dee5750815160208481015190840151829020919020145b8015619e1f57825184518590619e0590839061b5d2565b9052508251602085018051619e1b90839061b6d2565b9052505b509192915050565b6040805180820190915260008082526020820152619e4683838361aa08565b5092915050565b60606000826000015167ffffffffffffffff811115619e6e57619e6e61b14c565b6040519080825280601f01601f191660200182016040528015619e98576020820181803683370190505b5090506000602082019050619e46818560200151866000015161aab3565b8151815160009190811115619ec9575081515b6020808501519084015160005b83811015619f825782518251808214619f52576000196020871015619f3157600184619f0389602061b5d2565b619f0d919061b6d2565b619f1890600861c729565b619f2390600261c827565b619f2d919061b5d2565b1990505b8181168382168181039114619f4f57975061646d9650505050505050565b50505b619f5d60208661b6d2565b9450619f6a60208561b6d2565b93505050602081619f7b919061b6d2565b9050619ed6565b50845186516174e8919061c833565b60606000619f9d616d67565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081619fba57905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061a0159061bfa2565b935060ff168151811061a02a5761a02a61be35565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e330000000000000000000000000000000000000000000000000081525060405160200161a07b919061c853565b60405160208183030381529060405282828061a0969061bfa2565b935060ff168151811061a0ab5761a0ab61be35565b60200260200101819052506040518060400160405280600881526020017f76616c696461746500000000000000000000000000000000000000000000000081525082828061a0f89061bfa2565b935060ff168151811061a10d5761a10d61be35565b60200260200101819052508260405160200161a129919061bed0565b60405160208183030381529060405282828061a1449061bfa2565b935060ff168151811061a1595761a15961be35565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e74726163740000000000000000000000000000000000000000000081525082828061a1a69061bfa2565b935060ff168151811061a1bb5761a1bb61be35565b602002602001018190525061a1d0878461ab2d565b828261a1db8161bfa2565b935060ff168151811061a1f05761a1f061be35565b60209081029190910101528551511561a29c5760408051808201909152600b81527f2d2d7265666572656e63650000000000000000000000000000000000000000006020820152828261a2428161bfa2565b935060ff168151811061a2575761a25761be35565b602002602001018190525061a27086600001518461ab2d565b828261a27b8161bfa2565b935060ff168151811061a2905761a29061be35565b60200260200101819052505b85608001511561a30a5760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261a2e58161bfa2565b935060ff168151811061a2fa5761a2fa61be35565b602002602001018190525061a370565b841561a3705760408051808201909152601281527f2d2d726571756972655265666572656e636500000000000000000000000000006020820152828261a34f8161bfa2565b935060ff168151811061a3645761a36461be35565b60200260200101819052505b6040860151511561a40c5760408051808201909152600d81527f2d2d756e73616665416c6c6f77000000000000000000000000000000000000006020820152828261a3ba8161bfa2565b935060ff168151811061a3cf5761a3cf61be35565b6020026020010181905250856040015182828061a3eb9061bfa2565b935060ff168151811061a4005761a40061be35565b60200260200101819052505b85606001511561a4765760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261a4558161bfa2565b935060ff168151811061a46a5761a46a61be35565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561a4945761a49461b14c565b60405190808252806020026020018201604052801561a4c757816020015b606081526020019060019003908161a4b25790505b50905060005b8260ff168160ff16101561a52057838160ff168151811061a4f05761a4f061be35565b6020026020010151828260ff168151811061a50d5761a50d61be35565b602090810291909101015260010161a4cd565b50979650505050505050565b604080518082019091526000808252602082015281518351101561a55157508161646d565b8151835160208501516000929161a5679161b6d2565b61a571919061b5d2565b6020840151909150600190821461a592575082516020840151819020908220145b801561a5ad5783518551869061a5a990839061b5d2565b9052505b50929392505050565b600080826000015161a5da856000015186602001518660000151876020015161a8e8565b61a5e4919061b6d2565b90505b8351602085015161a5f8919061b6d2565b8111619e46578161a6088161c898565b925050826000015161a63f85602001518361a623919061b5d2565b865161a62f919061b5d2565b838660000151876020015161a8e8565b61a649919061b6d2565b905061a5e7565b6060600061a65e848461a5b6565b61a66990600161b6d2565b67ffffffffffffffff81111561a6815761a68161b14c565b60405190808252806020026020018201604052801561a6b457816020015b606081526020019060019003908161a69f5790505b50905060005b81518110156187365761a6d0618a708686619e27565b82828151811061a6e25761a6e261be35565b602090810291909101015260010161a6ba565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061a73e577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831061a76a576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061a78857662386f26fc10000830492506010015b6305f5e100831061a7a0576305f5e100830492506008015b612710831061a7b457612710830492506004015b6064831061a7c6576064830492506002015b600a831061646d5760010192915050565b60008085841161a8de576020841161a88a576000841561a82257600161a7fe86602061b5d2565b61a80990600861c729565b61a81490600261c827565b61a81e919061b5d2565b1990505b835181168561a831898961b6d2565b61a83b919061b5d2565b805190935082165b81811461a8755787841161a85d5787945050505050618367565b8361a8678161c8b2565b94505082845116905061a843565b61a87f878561b6d2565b945050505050618367565b83832061a897858861b5d2565b61a8a1908761b6d2565b91505b85821061a8dc5784822080820361a8c95761a8bf868461b6d2565b9350505050618367565b61a8d460018461b5d2565b92505061a8a4565b505b5092949350505050565b6000838186851161a9f3576020851161a9a2576000851561a93457600161a91087602061b5d2565b61a91b90600861c729565b61a92690600261c827565b61a930919061b5d2565b1990505b8451811660008761a9458b8b61b6d2565b61a94f919061b5d2565b855190915083165b82811461a9945781861061a97c5761a96f8b8b61b6d2565b9650505050505050618367565b8561a9868161c898565b96505083865116905061a957565b859650505050505050618367565b508383206000905b61a9b4868961b5d2565b821161a9f15785832080820361a9d05783945050505050618367565b61a9db60018561b6d2565b935050818061a9e99061c898565b92505061a9aa565b505b61a9fd878761b6d2565b979650505050505050565b6040805180820190915260008082526020820152600061aa3a856000015186602001518660000151876020015161a8e8565b60208087018051918601919091525190915061aa56908261b5d2565b83528451602086015161aa69919061b6d2565b810361aa78576000855261aaaa565b8351835161aa86919061b6d2565b8551869061aa9590839061b5d2565b905250835161aaa4908261b6d2565b60208601525b50909392505050565b6020811061aaeb578151835261aaca60208461b6d2565b925061aad760208361b6d2565b915061aae460208261b5d2565b905061aab3565b600019811561ab1a57600161ab0183602061b5d2565b61ab0d9061010061c827565b61ab17919061b5d2565b90505b9151835183169219169190911790915250565b6060600061ab3b8484616e3a565b805160208083015160405193945061ab559390910161c8c9565b60405160208183030381529060405291505092915050565b610b67806200c92283390190565b61063a806200d48983390190565b61106f806200dac383390190565b612072806200eb3283390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161abe861abed565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161abe86040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b8181101561ac9f5783516001600160a01b031683526020938401939092019160010161ac78565b509095945050505050565b60005b8381101561acc557818101518382015260200161acad565b50506000910152565b6000815180845261ace681602086016020860161acaa565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561adf6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b8181101561addc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261adc684865161acce565b602095860195909450929092019160010161ad8c565b50919750505060209485019492909201915060010161ad22565b50929695505050505050565b600081518084526020840193506020830160005b8281101561ae565781517fffffffff000000000000000000000000000000000000000000000000000000001686526020958601959091019060010161ae16565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561adf6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516040875261aecc604088018261acce565b905060208201519150868103602088015261aee7818361ae02565b96505050602093840193919091019060010161ae88565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561adf6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845261af6085835161acce565b9450602093840193919091019060010161af26565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561adf6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b038151168652602081015190506040602087015261aff6604087018261ae02565b955050602093840193919091019060010161af9d565b60006020828403121561b01e57600080fd5b81516001600160a01b038116811461657b57600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff881660408301528660608301526003861061b0ef577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a083015261b11060c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b60006020828403121561b13c57600080fd5b8151801515811461657b57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600181811c9082168061b18f57607f821691505b602082108103618d4b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b601f82111561310757806000526020600020601f840160051c8101602085101561b1ef5750805b601f840160051c820191505b81811015611252576000815560010161b1fb565b815167ffffffffffffffff81111561b2295761b22961b14c565b61b23d8161b237845461b17b565b8461b1c8565b6020601f82116001811461b271576000831561b2595750848201515b600019600385901b1c1916600184901b178455611252565b600084815260208120601f198516915b8281101561b2a1578785015182556020948501946001909201910161b281565b508482101561b2bf5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b600081546001600160a01b038116845260ff8160a01c1615156020850152506001600160a01b0360018301541660408401526002820160a060608501526000815461b3188161b17b565b8060a0880152600182166000811461b337576001811461b3715761b3a5565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831660c089015260c082151560051b890101935061b3a5565b84600052602060002060005b8381101561b39c5781548a820160c0015260019091019060200161b37d565b890160c0019450505b50505060038401546080860152809250505092915050565b60e08152600061b3d060e083018961acce565b8760208401526001600160a01b0387166040840152828103606084015261b3f7818761acce565b85546080850152600186015460ff16151560a085015290505b82810360c084015261b422818561b2ce565b9998505050505050505050565b60006020828403121561b44157600080fd5b5051919050565b60e08152600061b45b60e083018961acce565b8760208401526001600160a01b0387166040840152828103606084015261b482818761acce565b855160808501526020860151151560a0850152905061b410565b6101208152600061b4b161012083018b61acce565b6001600160a01b038a16602084015288604084015287606084015286608084015282810360a084015261b4e4818761acce565b855460c0850152600186015460ff16151560e085015290505b828103610100840152616887818561b2ce565b60e08152600061b52360e083018961acce565b876020840152866040840152828103606084015261b3f7818761acce565b6101208152600061b55661012083018b61acce565b6001600160a01b038a16602084015288604084015287606084015286608084015282810360a084015261b589818761acce565b855160c08501526020860151151560e0850152905061b4fd565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561646d5761646d61b5a3565b6101208152600061b5fa61012083018a61acce565b6001600160a01b03891660208401528760408401528660608401528560808401528281038060a08501526000825261b64160c0850187805182526020908101511515910152565b602081016101008501525061b659602082018561b2ce565b9a9950505050505050505050565b60808152600061b67a608083018761acce565b8560208401526001600160a01b0385166040840152828103606084015261a9fd818561b2ce565b60808152600061b6b4608083018761acce565b856020840152846040840152828103606084015261a9fd818561b2ce565b8082018082111561646d5761646d61b5a3565b60008261b71b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60c08152600061b73360c083018861acce565b6001600160a01b0387166020840152828103604084015261b754818761acce565b85546060850152600186015460ff1615156080850152905082810360a084015261b77e818561b2ce565b98975050505050505050565b60a08152600061b79d60a083018761acce565b828103602084015261b7af818761acce565b85546040850152600186015460ff16151560608501529050828103608084015261a9fd818561b2ce565b6001600160a01b0383168152604060208201526000618367604083018461acce565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161b83381601a85016020880161acaa565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161b87081601c84016020880161acaa565b01601c01949350505050565b60208152600061657b602083018461acce565b6040516060810167ffffffffffffffff8111828210171561b8b25761b8b261b14c565b60405290565b60008067ffffffffffffffff84111561b8d35761b8d361b14c565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561b9025761b90261b14c565b60405283815290508082840185101561b91a57600080fd5b61873684602083018561acaa565b600082601f83011261b93957600080fd5b61657b8383516020850161b8b8565b60006020828403121561b95a57600080fd5b815167ffffffffffffffff81111561b97157600080fd5b6164698482850161b928565b6000835161b98f81846020880161acaa565b83519083019061b9a381836020880161acaa565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161b9e481601a85016020880161acaa565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161ba2181603384016020880161acaa565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b6001600160a01b03841681526001600160a01b0383166020820152606060408201526000618d31606083018461acce565b60408152600b60408201527f464f554e4452595f4f5554000000000000000000000000000000000000000000606082015260806020820152600061657b608083018461acce565b60006020828403121561bae157600080fd5b815167ffffffffffffffff81111561baf857600080fd5b8201601f8101841361bb0957600080fd5b6164698482516020840161b8b8565b6000855161bb2a818460208a0161acaa565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161bb64816001840160208a0161acaa565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161bba281600284016020890161acaa565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161bbe481600284016020880161acaa565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061bc2f604083018461acce565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161bca681601f85016020870161acaa565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061bd13604083018461acce565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061bd65604083018461acce565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161bddc81601485016020870161acaa565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061be23604083018561acce565b8281036020840152616577818561acce565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161be9c81600185016020870161acaa565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161bee281846020870161acaa565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161bf9581604b85016020870161acaa565b91909101604b0192915050565b600060ff821660ff810361bfb85761bfb861b5a3565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161c01f81602985016020870161acaa565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061657b608083018461acce565b60006020828403121561c08557600080fd5b815167ffffffffffffffff81111561c09c57600080fd5b82016060818503121561c0ae57600080fd5b61c0b661b88f565b81518060030b811461c0c757600080fd5b8152602082015167ffffffffffffffff81111561c0e357600080fd5b61c0ef8682850161b928565b602083015250604082015167ffffffffffffffff81111561c10f57600080fd5b61c11b8682850161b928565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161c18781602185016020870161acaa565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161c37381602185016020880161acaa565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161c3b081602e84016020880161acaa565b01602e01949350505050565b6000825161c3ce81846020870161acaa565b9190910192915050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161c01f81602985016020870161acaa565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161c49481602285016020870161acaa565b9190910160220192915050565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161c4d981600e85016020870161acaa565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161c5b781601885016020880161acaa565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161c5f481601c84016020880161acaa565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161c6fa81846020870161acaa565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b808202811582820484141761646d5761646d61b5a3565b6001815b600184111561c77b5780850481111561c75f5761c75f61b5a3565b600184161561c76d57908102905b60019390931c92800261c744565b935093915050565b60008261c7925750600161646d565b8161c79f5750600061646d565b816001811461c7b5576002811461c7bf5761c7db565b600191505061646d565b60ff84111561c7d05761c7d061b5a3565b50506001821b61646d565b5060208310610133831016604e8410600b841016171561c7fe575081810a61646d565b61c80b600019848461c740565b806000190482111561c81f5761c81f61b5a3565b029392505050565b600061657b838361c783565b8181036000831280158383131683831282161715619e4657619e4661b5a3565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161c88b81601c85016020870161acaa565b91909101601c0192915050565b6000600019820361c8ab5761c8ab61b5a3565b5060010190565b60008161c8c15761c8c161b5a3565b506000190190565b6000835161c8db81846020880161acaa565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161c91581600184016020880161acaa565b0160010194935050505056fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea2646970667358221220b09c98b42d894b1b92a74ecc691587bcc17012fff7ef3bcfa6fe755f9b6255a564736f6c634300081a00336080604052348015600f57600080fd5b5061061b8061001f6000396000f3fe60806040526004361061002a5760003560e01c80635bcfd61614610033578063c9028a361461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e366004610151565b610073565b34801561005f57600080fd5b5061003161006e36600461020e565b6100ee565b6060811561008a576100878284018461027f565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610375565b6100c560408a0160208b016103e1565b896040013533866040516100de96959493929190610445565b60405180910390a1505050505050565b7fd75bb509c8f32a725aac99ac5c4541060dbfb889a3aca8314d6f00395618c4c48160405161011d9190610507565b60405180910390a150565b803573ffffffffffffffffffffffffffffffffffffffff8116811461014c57600080fd5b919050565b60008060008060006080868803121561016957600080fd5b853567ffffffffffffffff81111561018057600080fd5b86016060818903121561019257600080fd5b94506101a060208701610128565b935060408601359250606086013567ffffffffffffffff8111156101c357600080fd5b8601601f810188136101d457600080fd5b803567ffffffffffffffff8111156101eb57600080fd5b8860208284010111156101fd57600080fd5b959894975092955050506020019190565b60006020828403121561022057600080fd5b813567ffffffffffffffff81111561023757600080fd5b82016080818503121561024957600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561029157600080fd5b813567ffffffffffffffff8111156102a857600080fd5b8201601f810184136102b957600080fd5b803567ffffffffffffffff8111156102d3576102d3610250565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033f5761033f610250565b60405281815282820160200186101561035757600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126103aa57600080fd5b83018035915067ffffffffffffffff8211156103c557600080fd5b6020019150368190038213156103da57600080fd5b9250929050565b6000602082840312156103f357600080fd5b61024982610128565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60a08152600061045960a08301888a6103fc565b73ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff851660608401528281036080840152835180825260005b818110156104c3576020818701810151848301820152016104a7565b5060006020828401015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011683010192505050979650505050505050565b6020815273ffffffffffffffffffffffffffffffffffffffff61052983610128565b16602082015273ffffffffffffffffffffffffffffffffffffffff61055060208401610128565b166040820152600080604084013590508060608401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261059c57600080fd5b830160208101903567ffffffffffffffff8111156105b957600080fd5b8036038213156105c857600080fd5b6080808501526105dc60a0850182846103fc565b9594505050505056fea264697066735822122034d8711688fa0746c516ebf736804e86c9e1dad5e64788e702413ad1a8eb9ff164736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea2646970667358221220b13ccf97234dc9b7f658234f9bf37a57d08f465bb99c431b865174e7a399a30764736f6c634300081a003360c060405234801561001057600080fd5b5060405161207238038061207283398101604081905261002f916101f0565b6001600160a01b038216158061004c57506001600160a01b038116155b1561006a5760405163d92e233d60e01b815260040160405180910390fd5b60066100768982610342565b5060076100838882610342565b506008805460ff191660ff881617905560808590528360028111156100aa576100aa610400565b60a08160028111156100be576100be610400565b905250600192909255600080546001600160a01b039283166001600160a01b0319909116179055600880549190921661010002610100600160a81b0319909116179055506104169350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261013357600080fd5b81516001600160401b0381111561014c5761014c61010c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561017a5761017a61010c565b60405281815283820160200185101561019257600080fd5b60005b828110156101b157602081860181015183830182015201610195565b506000918101602001919091529392505050565b8051600381106101d457600080fd5b919050565b80516001600160a01b03811681146101d457600080fd5b600080600080600080600080610100898b03121561020d57600080fd5b88516001600160401b0381111561022357600080fd5b61022f8b828c01610122565b60208b015190995090506001600160401b0381111561024d57600080fd5b6102598b828c01610122565b975050604089015160ff8116811461027057600080fd5b60608a0151909650945061028660808a016101c5565b60a08a0151909450925061029c60c08a016101d9565b91506102aa60e08a016101d9565b90509295985092959890939650565b600181811c908216806102cd57607f821691505b6020821081036102ed57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561033d57806000526020600020601f840160051c8101602085101561031a5750805b601f840160051c820191505b8181101561033a5760008155600101610326565b50505b505050565b81516001600160401b0381111561035b5761035b61010c565b61036f8161036984546102b9565b846102f3565b6020601f8211600181146103a3576000831561038b5750848201515b600019600385901b1c1916600184901b17845561033a565b600084815260208120601f198516915b828110156103d357878501518255602094850194600190920191016103b3565b50848210156103f15786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a051611c1b61045760003960006103440152600081816102f001528181610bdc01528181610ce201528181610efe01526110040152611c1b6000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c806395d89b41116100f9578063ccc7759911610097578063eddeb12311610071578063eddeb12314610461578063f2441b3214610474578063f687d12a14610494578063fc5fecd5146104a757600080fd5b8063ccc77599146103d4578063d9eeebed146103e7578063dd62ed3e1461041b57600080fd5b8063b84c8246116100d3578063b84c824614610386578063c47f00271461039b578063c7012626146103ae578063c835d7cc146103c157600080fd5b806395d89b4114610337578063a3413d031461033f578063a9059cbb1461037357600080fd5b80633ce4a5bc116101665780634d8943bb116101405780634d8943bb146102ac57806370a08231146102b557806385e1f4d0146102eb5780638b851b951461031257600080fd5b80633ce4a5bc1461024657806342966c681461028657806347e7ef241461029957600080fd5b806318160ddd1161019757806318160ddd1461021657806323b872dd1461021e578063313ce5671461023157600080fd5b806306fdde03146101be578063091d2788146101dc578063095ea7b3146101f3575b600080fd5b6101c66104ba565b6040516101d39190611648565b60405180910390f35b6101e560015481565b6040519081526020016101d3565b610206610201366004611687565b61054c565b60405190151581526020016101d3565b6005546101e5565b61020661022c3660046116b3565b610563565b60085460405160ff90911681526020016101d3565b61026173735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d3565b6102066102943660046116f4565b6105fa565b6102066102a7366004611687565b61060e565b6101e560025481565b6101e56102c336600461170d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6101e57f000000000000000000000000000000000000000000000000000000000000000081565b60085461026190610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6101c6610767565b6103667f000000000000000000000000000000000000000000000000000000000000000081565b6040516101d3919061172a565b610206610381366004611687565b610776565b610399610394366004611832565b610783565b005b6103996103a9366004611832565b6107e0565b6102066103bc366004611883565b610839565b6103996103cf36600461170d565b610988565b6103996103e236600461170d565b610a9c565b6103ef610bb0565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101d3565b6101e56104293660046118dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205490565b61039961046f3660046116f4565b610dce565b6000546102619073ffffffffffffffffffffffffffffffffffffffff1681565b6103996104a23660046116f4565b610e50565b6103ef6104b53660046116f4565b610ed2565b6060600680546104c990611915565b80601f01602080910402602001604051908101604052809291908181526020018280546104f590611915565b80156105425780601f1061051757610100808354040283529160200191610542565b820191906000526020600020905b81548152906001019060200180831161052557829003601f168201915b5050505050905090565b60006105593384846110ee565b5060015b92915050565b60006105708484846111f7565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460209081526040808320338452909152902054828110156105db576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105ef85336105ea8685611997565b6110ee565b506001949350505050565b600061060633836113b2565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab1480159061064c575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156106755750600854610100900473ffffffffffffffffffffffffffffffffffffffff163314155b156106ac576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106b683836114f4565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526107569186906119aa565b60405180910390a250600192915050565b6060600780546104c990611915565b60006105593384846111f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab146107d0576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60076107dc8282611a1b565b5050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461082d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60066107dc8282611a1b565b6000806000610846610bb0565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156108d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fc9190611b34565b610932576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61093c33856113b2565b60025460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161097591899189918791611b56565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146109d5576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a22576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610ae9576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610b36576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c679190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610cb6576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d699190611ba2565b905080600003610da5576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060025460015483610db89190611bbb565b610dc29190611bd2565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e1b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610a91565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e9d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610f65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f899190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610fd8576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015611067573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108b9190611ba2565b9050806000036110c7576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000906110d78784611bbb565b6110e19190611bd2565b9296929550919350505050565b73ffffffffffffffffffffffffffffffffffffffff831661113b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611188576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611244576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611291576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040902054818110156112f1576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112fb8282611997565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260036020526040808220939093559085168152908120805484929061133e908490611bd2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113a491815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff82166113ff576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260409020548181101561145f576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114698282611997565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260036020526040812091909155600580548492906114a4908490611997565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016111ea565b73ffffffffffffffffffffffffffffffffffffffff8216611541576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008282546115539190611bd2565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805483929061158d908490611bd2565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561160a576020818501810151868301820152016115ee565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061165b60208301846115e4565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461168457600080fd5b50565b6000806040838503121561169a57600080fd5b82356116a581611662565b946020939093013593505050565b6000806000606084860312156116c857600080fd5b83356116d381611662565b925060208401356116e381611662565b929592945050506040919091013590565b60006020828403121561170657600080fd5b5035919050565b60006020828403121561171f57600080fd5b813561165b81611662565b6020810160038310611765577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff8411156117b5576117b561176b565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff821117156118025761180261176b565b60405283815290508082840185101561181a57600080fd5b83836020830137600060208583010152509392505050565b60006020828403121561184457600080fd5b813567ffffffffffffffff81111561185b57600080fd5b8201601f8101841361186c57600080fd5b61187b8482356020840161179a565b949350505050565b6000806040838503121561189657600080fd5b823567ffffffffffffffff8111156118ad57600080fd5b8301601f810185136118be57600080fd5b6118cd8582356020840161179a565b95602094909401359450505050565b600080604083850312156118ef57600080fd5b82356118fa81611662565b9150602083013561190a81611662565b809150509250929050565b600181811c9082168061192957607f821691505b602082108103611962577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561055d5761055d611968565b6040815260006119bd60408301856115e4565b90508260208301529392505050565b601f821115611a1657806000526020600020601f840160051c810160208510156119f35750805b601f840160051c820191505b81811015611a1357600081556001016119ff565b50505b505050565b815167ffffffffffffffff811115611a3557611a3561176b565b611a4981611a438454611915565b846119cc565b6020601f821160018114611a9b5760008315611a655750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611a13565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015611ae95787850151825560209485019460019092019101611ac9565b5084821015611b2557868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b600060208284031215611b4657600080fd5b8151801515811461165b57600080fd5b608081526000611b6960808301876115e4565b6020830195909552506040810192909252606090910152919050565b600060208284031215611b9757600080fd5b815161165b81611662565b600060208284031215611bb457600080fd5b5051919050565b808202811582820484141761055d5761055d611968565b8082018082111561055d5761055d61196856fea2646970667358221220d6ba834f25782689ed13bffb6ac9ff2c8d3b5342c94a515aea8197a76070ad3f64736f6c634300081a0033a2646970667358221220371958a4ef09b3ee647a6737c8c698a5cb6f540e5e74ffc0efdb1a227b27716164736f6c634300081a0033", } // 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 1d0c3cb4d..f9f77e12c 100644 --- a/v2/pkg/gatewayzevm.t.sol/gatewayzevmoutboundtest.go +++ b/v2/pkg/gatewayzevm.t.sol/gatewayzevmoutboundtest.go @@ -73,7 +73,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\":\"testDepositAndRevertZRC20AndCallUniversalContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallUniversalContractFailsITargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallUniversalContractFailsITargetIsProtocol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallUniversalContractFailsIfAmountIsZero\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallUniversalContractFailsIfSenderIsNotProtocol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallUniversalContractFailsIfTargetIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallUniversalContractFailsIfZRC20IsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfSenderNotProtocol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfTargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfTargetIsProtocol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfTargetIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfZRC20IsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositTogglePause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallUniversal\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallUniversalContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallUniversalContractFailsIfSenderIsNotProtocol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallUniversalContractFailsIfTargetIsAmountIsZero\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallUniversalContractFailsIfTargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallUniversalContractFailsIfTargetIsProtocol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallUniversalContractFailsIfTargetIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallUniversalContractFailsIfZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallUniversalContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallUniversalContractFailsIfAmountIsZero\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallUniversalContractFailsIfSenderIsNotProtocol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallUniversalContractFailsIfTargetIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallUniversalContractFailsIfZRC20IsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallUniversalContractIfTargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallUniversalContractIfTargetIsProtocol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteFailsIfTargetIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteFailsIfZRC20IsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteRevertUniversalContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteRevertUniversalContractFailsIfTargetIsZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteRevertUniversalContractIfSenderIsNotProtocol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteUniversalContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteUniversalContractFailsIfSenderIsNotProtocol\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteUniversalContractFailsIfZeroAddress\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Called\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"callOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structCallOptions\",\"components\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"isArbitraryCall\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\":\"revertContext\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertContext\",\"components\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawn\",\"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\"},{\"name\":\"callOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structCallOptions\",\"components\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"isArbitraryCall\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"name\":\"revertOptions\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structRevertOptions\",\"components\":[{\"name\":\"revertAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"callOnRevert\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"abortAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"revertMessage\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"onRevertGasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"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\":\"CallerIsNotProtocol\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedZetaSent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientGasLimit\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZetaAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"MessageSizeExceeded\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrProtocol\",\"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: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061fc598061003c6000396000f3fe608060405234801561001057600080fd5b506004361061034c5760003560e01c806385226c81116101bd578063c8814d2e116100f9578063eab7674e116100a2578063ef2b53941161007c578063ef2b539414610542578063f1d98f1b1461054a578063fa7626d414610552578063fb339a1c1461055f57600080fd5b8063eab7674e1461052a578063eb78bd7d14610532578063ec294d9f1461053a57600080fd5b8063e09bc659116100d3578063e09bc659146104e5578063e20c9f71146104ed578063e63ab1e9146104f557600080fd5b8063c8814d2e146104cd578063ca26929c146104d5578063cf2c3d1d146104dd57600080fd5b8063996b767511610166578063b5508aa911610140578063b5508aa9146104a5578063b936be8c14610443578063ba414fa6146104ad578063c35cb5e4146104c557600080fd5b8063996b76751461048d5780639c9acd5d14610495578063b0464fdc1461049d57600080fd5b8063916a17c611610197578063916a17c61461047057806396d9d8761461048557806397f7661f1461044357600080fd5b806385226c811461044b578063884660a314610460578063890a2d671461046857600080fd5b80633e5e3c231161028c5780635cec7db5116102355780636efa04b51161020f5780636efa04b51461042b5780637cec29b0146104335780637f924c4e1461043b578063828d267c1461044357600080fd5b80635cec7db5146104065780636163f8ef1461040e57806366d9a9a01461041657600080fd5b806351336fb01161026657806351336fb0146103f657806358c9987f146103fe5780635b4c90e1146103a157600080fd5b80633e5e3c23146103de5780633f7286f4146103e657806348f4fd07146103ee57600080fd5b806327820625116102f95780632ade3880116102d35780632ade3880146103b1578063339bd828146103c65780633626c616146103ce5780633ab5b199146103d657600080fd5b806327820625146103995780632948df41146103a15780632acb21b4146103a957600080fd5b80631c785a141161032a5780631c785a141461036b5780631ed7831c146103735780632468bc0f1461039157600080fd5b8063084fafab146103515780630a9254e41461035b57806314b7a6da14610363575b600080fd5b610359610567565b005b61035961073d565b610359611241565b610359611391565b61037b611ca8565b6040516103889190619f02565b60405180910390f35b610359611d0a565b6103596121d5565b61035961229d565b610359612486565b6103b9612645565b6040516103889190619f9e565b610359612787565b6103596128d3565b610359612a5b565b61037b612c0c565b61037b612c6c565b610359612ccc565b610359612e17565b610359612f62565b610359613117565b610359613305565b61041e613453565b604051610388919061a104565b6103596135d5565b610359613979565b610359613b64565b610359613b9d565b610453613d49565b604051610388919061a1a2565b610359613e19565b6103596140f8565b6104786142b3565b604051610388919061a219565b6103596143ae565b610359614501565b610359614655565b6104786147a5565b6104536148a0565b6104b5614970565b6040519015158152602001610388565b610359614a44565b610359614bff565b610359614d41565b610359614fc4565b610359615182565b61037b61533b565b61051c7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b604051908152602001610388565b61035961539b565b6103596154e9565b6103596156a7565b610359615856565b610359615a07565b601f546104b59060ff1681565b610359615b55565b602480546040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190529281018390526044810183905260648101929092526001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156105f657600080fd5b505af115801561060a573d6000803e3d6000fd5b505050507fd75bb509c8f32a725aac99ac5c4541060dbfb889a3aca8314d6f00395618c4c4602c60405161063e919061a3da565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b1580156106a057600080fd5b505af11580156106b4573d6000803e3d6000fd5b50506020546024546040517f184b07930000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063184b079393506107099290911690602c9060040161a3ed565b600060405180830381600087803b15801561072357600080fd5b505af1158015610737573d6000803e3d6000fd5b50505050565b602580547fffffffffffffffffffffffff000000000000000000000000000000000000000090811630179091556026805490911661123417905560405161078390619e15565b604051809103906000f08015801561079f573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600f81527f476174657761795a45564d2e736f6c000000000000000000000000000000000060208201526025549151602481019390935292166044820152610883919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc95500000000000000000000000000000000000000000000000000000000179052615d08565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b039384168102919091179182905560208054919092049092167fffffffffffffffffffffffff000000000000000000000000000000000000000090921682178155604080517f2722feee0000000000000000000000000000000000000000000000000000000081529051632722feee926004808401939192918290030181865afa158015610945573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610969919061a40f565b602780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516109ad90619e22565b604051809103906000f0801580156109c9573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161781556027546040517f06447d5600000000000000000000000000000000000000000000000000000000815292166004830152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d569101600060405180830381600087803b158015610a6557600080fd5b505af1158015610a79573d6000803e3d6000fd5b505050506000806000604051610a8e90619e2f565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610aca573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602054604051601293600193849360009391921690610b2090619e3c565b610b2f9695949392919061a438565b604051809103906000f080158015610b4b573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556023546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b158015610be257600080fd5b505af1158015610bf6573d6000803e3d6000fd5b50506023546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b158015610c6057600080fd5b505af1158015610c74573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610cf457600080fd5b505af1158015610d08573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610d5d57600080fd5b505af1158015610d71573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610de5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e09919061a52d565b506021546025546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116906347e7ef24906044016020604051808303816000875af1158015610e7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9e919061a52d565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610efd57600080fd5b505af1158015610f11573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610f8757600080fd5b505af1158015610f9b573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116925063095ea7b391506044016020604051808303816000875af115801561100f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611033919061a52d565b50602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b15801561108557600080fd5b505af1158015611099573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af115801561110d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611131919061a52d565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561119057600080fd5b505af11580156111a4573d6000803e3d6000fd5b5050604080516080810182526025546001600160a01b0390811682526000602080840182815260018587019081528651928301909652918152606084018190528351602c80549185167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161781559251602d8054919095169116179092559251602e55909350909150602f9061123c908261a5c5565b505050565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561129a57600080fd5b505af11580156112ae573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561131e57600080fd5b505af1158015611332573d6000803e3d6000fd5b50506020546021546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260016024820152600060448201529116925063f45346dc9150606401610709565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156113ea57600080fd5b505af11580156113fe573d6000803e3d6000fd5b5050602754604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506114e9919060040161a684565b600060405180830381600087803b15801561150357600080fd5b505af1158015611517573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561156b57600080fd5b505af115801561157f573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156115dc57600080fd5b505af11580156115f0573d6000803e3d6000fd5b5050602754604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506116db919060040161a684565b600060405180830381600087803b1580156116f557600080fd5b505af1158015611709573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561175d57600080fd5b505af1158015611771573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156117ce57600080fd5b505af11580156117e2573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561183657600080fd5b505af115801561184a573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd93c066500000000000000000000000000000000000000000000000000000000600482015260019250737109709ecfa91a80626ff3989d68f67f5b1dd12d915063c31eb0e090602401600060405180830381600087803b1580156118bd57600080fd5b505af11580156118d1573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561192e57600080fd5b505af1158015611942573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810187905290821660448201529116925063f45346dc9150606401600060405180830381600087803b1580156119ba57600080fd5b505af11580156119ce573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015611a2b57600080fd5b505af1158015611a3f573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611a9357600080fd5b505af1158015611aa7573d6000803e3d6000fd5b50506021546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a08231906024015b602060405180830381865afa158015611afb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b1f919061a697565b9050611b2c600082615d27565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611b8557600080fd5b505af1158015611b99573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810188905290821660448201529116925063f45346dc9150606401600060405180830381600087803b158015611c1157600080fd5b505af1158015611c25573d6000803e3d6000fd5b50506021546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611c78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9c919061a697565b905061123c8382615d27565b60606016805480602002602001604051908101604052809291908181526020018280548015611d0057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611ce2575b5050505050905090565b6022546027546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611d5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d7f919061a697565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015611dd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df5919061a697565b6024546040519192506001600160a01b03163190600090611e189060200161a6b0565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611f0657600080fd5b505af1158015611f1a573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e9450611f7593506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054611fa5936001600160a01b03928316928c92169061a6ed565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561200657600080fd5b505af115801561201a573d6000803e3d6000fd5b50506020546024546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a9593506120719286928c92911690889060040161a79e565b600060405180830381600087803b15801561208b57600080fd5b505af115801561209f573d6000803e3d6000fd5b50506022546027546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156120f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612116919061a697565b905061212b612125888861a807565b82615d27565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801561217c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121a0919061a697565b90506121ac8682615d27565b6121cb6121b9898761a81a565b6024546001600160a01b031631615d27565b5050505050505050565b604051630618f58760e51b81527f42c0407e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561224157600080fd5b505af1158015612255573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401610686565b60006040516020016122ae9061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b15801561235c57600080fd5b505af1158015612370573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156123e057600080fd5b505af11580156123f4573d6000803e3d6000fd5b50506020546024546040517fbcf7f32b0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063bcf7f32b935061245092869260009260019290911690899060040161a82d565b600060405180830381600087803b15801561246a57600080fd5b505af115801561247e573d6000803e3d6000fd5b505050505050565b60006040516020016124979061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f42c0407e0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561256157600080fd5b505af1158015612575573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015b600060405180830381600087803b1580156125d357600080fd5b505af11580156125e7573d6000803e3d6000fd5b50506020546021546024546040517fbcf7f32b0000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063bcf7f32b9450612450938793811692600192911690899060040161a82d565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561277e57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156127675783829060005260206000200180546126da9061a2b0565b80601f01602080910402602001604051908101604052809291908181526020018280546127069061a2b0565b80156127535780601f1061272857610100808354040283529160200191612753565b820191906000526020600020905b81548152906001019060200180831161273657829003601f168201915b5050505050815260200190600101906126bb565b505050508152505081526020019060010190612669565b50505050905090565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156127e057600080fd5b505af11580156127f4573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561286457600080fd5b505af1158015612878573d6000803e3d6000fd5b50506020546021546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450639d4ba46593506107099290911690600190600090602c9060040161a882565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561292f57600080fd5b505af1158015612943573d6000803e3d6000fd5b5050604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156129b357600080fd5b505af11580156129c7573d6000803e3d6000fd5b50506020546021546027546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810187905290821660448201529116925063f45346dc91506064015b600060405180830381600087803b158015612a4057600080fd5b505af1158015612a54573d6000803e3d6000fd5b5050505050565b6000604051602001612a6c9061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b158015612b1a57600080fd5b505af1158015612b2e573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015612b9e57600080fd5b505af1158015612bb2573d6000803e3d6000fd5b50506020546021546040517fbcf7f32b0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063bcf7f32b93506124509286921690600190600090899060040161a82d565b60606018805480602002602001604051908101604052809291908181526020018280548015611d00576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611ce2575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015611d00576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611ce2575050505050905090565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612d2557600080fd5b505af1158015612d39573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015612da957600080fd5b505af1158015612dbd573d6000803e3d6000fd5b50506020546024546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450639d4ba465935061070992600092600192911690602c9060040161a882565b604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015612e8357600080fd5b505af1158015612e97573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015612ef457600080fd5b505af1158015612f08573d6000803e3d6000fd5b50506020546021546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450639d4ba465935061070992909116906001908590602c9060040161a882565b6000604051602001612f739061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b15801561302157600080fd5b505af1158015613035573d6000803e3d6000fd5b5050604051630618f58760e51b81527f5d67094f000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156130a557600080fd5b505af11580156130b9573d6000803e3d6000fd5b50506020546021546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca379450612450938793811692600092911690899060040161a82d565b60405160019060009061312c9060200161a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156131f657600080fd5b505af115801561320a573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561326757600080fd5b505af115801561327b573d6000803e3d6000fd5b50506020546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0390911692506321501a9591506132ce90849087908590889060040161a79e565b600060405180830381600087803b1580156132e857600080fd5b505af11580156132fc573d6000803e3d6000fd5b50505050505050565b604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561337157600080fd5b505af1158015613385573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156133e257600080fd5b505af11580156133f6573d6000803e3d6000fd5b50506020546021546027546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550639d4ba465945061070993928316926001921690602c9060040161a882565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561277e57838290600052602060002090600202016040518060400160405290816000820180546134aa9061a2b0565b80601f01602080910402602001604051908101604052809291908181526020018280546134d69061a2b0565b80156135235780601f106134f857610100808354040283529160200191613523565b820191906000526020600020905b81548152906001019060200180831161350657829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156135bd57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161356a5790505b50505050508152505081526020019060010190613477565b602154602480546040516370a0823160e01b81526001600160a01b03918216600482015260009391909116916370a082319101602060405180830381865afa158015613625573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613649919061a697565b9050613656600082615d27565b60006040516020016136679061a6b0565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561375557600080fd5b505af1158015613769573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e94506137c493506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526027546020546137f5936001600160a01b0392831692600192169061a6ed565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561385657600080fd5b505af115801561386a573d6000803e3d6000fd5b50506020546021546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca3794506138c8938793811692600192911690899060040161a82d565b600060405180830381600087803b1580156138e257600080fd5b505af11580156138f6573d6000803e3d6000fd5b5050602154602480546040516370a0823160e01b81526001600160a01b03918216600482015260009550921692506370a082319101602060405180830381865afa158015613948573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061396c919061a697565b9050610737600182615d27565b600060405160200161398a9061a6b0565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015613a7857600080fd5b505af1158015613a8c573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e9450613ae793506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054613b18936001600160a01b0392831692600192169061a6ed565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024016125b9565b6021546026546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401611ade565b6000604051602001613bae9061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b158015613c5c57600080fd5b505af1158015613c70573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015613ce057600080fd5b505af1158015613cf4573d6000803e3d6000fd5b50506020546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0390911692506321501a959150612450908490600190600090889060040161a79e565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101561277e578382906000526020600020018054613d8c9061a2b0565b80601f0160208091040260200160405190810160405280929190818152602001828054613db89061a2b0565b8015613e055780601f10613dda57610100808354040283529160200191613e05565b820191906000526020600020905b815481529060010190602001808311613de857829003601f168201915b505050505081526020019060010190613d6d565b602154602480546040516370a0823160e01b81526001600160a01b03918216600482015260009391909116916370a082319101602060405180830381865afa158015613e69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e8d919061a697565b9050613e9a600082615d27565b602480546040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190529281018390526044810183905260648101929092526001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015613f2957600080fd5b505af1158015613f3d573d6000803e3d6000fd5b505050507fd75bb509c8f32a725aac99ac5c4541060dbfb889a3aca8314d6f00395618c4c4602c604051613f71919061a3da565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613fd257600080fd5b505af1158015613fe6573d6000803e3d6000fd5b50506020546021546024546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550639d4ba465945061404393928316926001921690602c9060040161a882565b600060405180830381600087803b15801561405d57600080fd5b505af1158015614071573d6000803e3d6000fd5b5050602154602480546040516370a0823160e01b81526001600160a01b03918216600482015260009550921692506370a082319101602060405180830381865afa1580156140c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140e7919061a697565b90506140f4600182615d27565b5050565b60405160019060009061410d9060200161a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156141d757600080fd5b505af11580156141eb573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561424857600080fd5b505af115801561425c573d6000803e3d6000fd5b50506020546027546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a9593506132ce9286928992911690889060040161a79e565b6060601d805480602002602001604051908101604052809291908181526020016000905b8282101561277e5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561439657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116143435790505b505050505081525050815260200190600101906142d7565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561440a57600080fd5b505af115801561441e573d6000803e3d6000fd5b5050604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561448e57600080fd5b505af11580156144a2573d6000803e3d6000fd5b50506020546021546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101869052911660448201819052925063f45346dc9150606401612a26565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561455a57600080fd5b505af115801561456e573d6000803e3d6000fd5b5050604051630618f58760e51b81527f5d67094f000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156145de57600080fd5b505af11580156145f2573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526000602482015290821660448201529116925063f45346dc9150606401610709565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156146ae57600080fd5b505af11580156146c2573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561473257600080fd5b505af1158015614746573d6000803e3d6000fd5b50506020546026546040517ff45346dc00000000000000000000000000000000000000000000000000000000815260006004820152600160248201526001600160a01b0391821660448201529116925063f45346dc9150606401610709565b6060601c805480602002602001604051908101604052809291908181526020016000905b8282101561277e5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561488857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116148355790505b505050505081525050815260200190600101906147c9565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101561277e5783829060005260206000200180546148e39061a2b0565b80601f016020809104026020016040519081016040528092919081815260200182805461490f9061a2b0565b801561495c5780601f106149315761010080835404028352916020019161495c565b820191906000526020600020905b81548152906001019060200180831161493f57829003601f168201915b5050505050815260200190600101906148c4565b60085460009060ff1615614988575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015614a19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a3d919061a697565b1415905090565b604051600190600090614a599060200161a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f42c0407e0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b158015614b2357600080fd5b505af1158015614b37573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015614b9457600080fd5b505af1158015614ba8573d6000803e3d6000fd5b50506020546024546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a9593506132ce9286928992911690889060040161a79e565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614c5857600080fd5b505af1158015614c6c573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015614cdc57600080fd5b505af1158015614cf0573d6000803e3d6000fd5b50506020546040517f184b07930000000000000000000000000000000000000000000000000000000081526001600160a01b03909116925063184b0793915061070990600090602c9060040161a3ed565b6021546026546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015614d92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614db6919061a697565b9050614dc3600082615d27565b60255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614e1c57600080fd5b505af1158015614e30573d6000803e3d6000fd5b5050604051630618f58760e51b81527f42c0407e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015614ea057600080fd5b505af1158015614eb4573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810188905290821660448201529116925063f45346dc9150606401600060405180830381600087803b158015614f2c57600080fd5b505af1158015614f40573d6000803e3d6000fd5b50506021546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015614f93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614fb7919061a697565b905061123c600082615d27565b6000604051602001614fd59061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f42c0407e0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561509f57600080fd5b505af11580156150b3573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561511057600080fd5b505af1158015615124573d6000803e3d6000fd5b50506020546021546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca379450612450938793811692600192911690899060040161a82d565b60006040516020016151939061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561525d57600080fd5b505af1158015615271573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156152ce57600080fd5b505af11580156152e2573d6000803e3d6000fd5b50506020546021546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063c39aca37935061245092869216906001908690899060040161a82d565b60606015805480602002602001604051908101604052809291908181526020018280548015611d00576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611ce2575050505050905090565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156153f457600080fd5b505af1158015615408573d6000803e3d6000fd5b5050604051630618f58760e51b81527f5d67094f000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561547857600080fd5b505af115801561548c573d6000803e3d6000fd5b50506020546021546024546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550639d4ba465945061070993928316926000921690602c9060040161a882565b60006040516020016154fa9061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156155c457600080fd5b505af11580156155d8573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561563557600080fd5b505af1158015615649573d6000803e3d6000fd5b50506020546021546027546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca379450612450938793811692600192911690899060040161a82d565b60006040516020016156b89061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b15801561576657600080fd5b505af115801561577a573d6000803e3d6000fd5b5050604051630618f58760e51b81527f19c08f49000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156157ea57600080fd5b505af11580156157fe573d6000803e3d6000fd5b50506020546021546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a959350612450928692600092911690889060040161a79e565b60006040516020016158679061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b15801561591557600080fd5b505af1158015615929573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561599957600080fd5b505af11580156159ad573d6000803e3d6000fd5b50506020546021546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063c39aca3793506124509286921690600190600090899060040161a82d565b604051630618f58760e51b81527f42c0407e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015615a7357600080fd5b505af1158015615a87573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015615ae457600080fd5b505af1158015615af8573d6000803e3d6000fd5b50506020546021546024546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550639d4ba465945061070993928316926001921690602c9060040161a882565b6000604051602001615b669061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b158015615c1457600080fd5b505af1158015615c28573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015615c9857600080fd5b505af1158015615cac573d6000803e3d6000fd5b50506020546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063c39aca37935061245092869260009260019290911690899060040161a82d565b6000615d12619e49565b615d1d848483615da6565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b158015615d9257600080fd5b505afa15801561247e573d6000803e3d6000fd5b600080615db38584615e21565b9050615e166040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001615e0192919061a8b9565b60405160208183030381529060405285615e2d565b9150505b9392505050565b6000615e1a8383615e5b565b60c08101515160009015615e5157615e4a84848460c00151615e76565b9050615e1a565b615e4a848461601c565b6000615e678383616107565b615e1a83836020015184615e2d565b600080615e81616113565b90506000615e8f86836161e6565b90506000615ea6826060015183602001518561668c565b90506000615eb68383898961689e565b90506000615ec38261771b565b602081015181519192509060030b15615f3657898260400151604051602001615eed92919061a8db565b60408051601f19818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252615f2d9160040161a684565b60405180910390fd5b6000615f796040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a2000000000000000000000008152508360016178ea565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90615fcc90849060040161a684565b602060405180830381865afa158015615fe9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061600d919061a40f565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc9259061607190879060040161a684565b600060405180830381865afa15801561608e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526160b6919081019061aa15565b905060006160e482856040516020016160d092919061aa4a565b604051602081830303815290604052617aea565b90506001600160a01b038116615d1d578484604051602001615eed92919061aa79565b6140f482826000617afd565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c9061619a90849060040161ab24565b600060405180830381865afa1580156161b7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526161df919081019061ab6b565b9250505090565b6162186040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d90506162636040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b61626c85617c00565b6020820152600061627c86617fe5565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa1580156162be573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526162e6919081019061ab6b565b86838560200151604051602001616300949392919061abb4565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb119061635890859060040161a684565b600060405180830381865afa158015616375573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261639d919081019061ab6b565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f6906163e590849060040161acb8565b602060405180830381865afa158015616402573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616426919061a52d565b61643b5781604051602001615eed919061ad0a565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061648090849060040161ad9c565b600060405180830381865afa15801561649d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526164c5919081019061ab6b565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f69061650c90849060040161adee565b602060405180830381865afa158015616529573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061654d919061a52d565b156165e2576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061659790849060040161adee565b600060405180830381865afa1580156165b4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526165dc919081019061ab6b565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001616607919061ae40565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161663392919061aeac565b600060405180830381865afa158015616650573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616678919081019061ab6b565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816166a85790505090506040518060400160405280600481526020017f6772657000000000000000000000000000000000000000000000000000000000815250816000815181106167085761670861aed1565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061675c5761675c61aed1565b602002602001018190525084604051602001616778919061af00565b6040516020818303038152906040528160028151811061679a5761679a61aed1565b6020026020010181905250826040516020016167b6919061af6c565b604051602081830303815290604052816003815181106167d8576167d861aed1565b602002602001018190525060006167ee8261771b565b602080820151604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000818501908152825180840184526000808252908601528251808401909352905182529281019290925291925061687f9060408051808201825260008082526020918201528151808301909252845182528085019082015290618268565b6168945785604051602001615eed919061afad565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d90156168ee565b511590565b616a62578260200151156169aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401615f2d565b8260c0015115616a62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401615f2d565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081616a7b57905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616ad69061b03e565b935060ff1681518110616aeb57616aeb61aed1565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001616b3c919061b05d565b604051602081830303815290604052828280616b579061b03e565b935060ff1681518110616b6c57616b6c61aed1565b60200260200101819052506040518060400160405280600681526020017f6465706c6f790000000000000000000000000000000000000000000000000000815250828280616bb99061b03e565b935060ff1681518110616bce57616bce61aed1565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d65000000000000000000000000000000000000815250828280616c1b9061b03e565b935060ff1681518110616c3057616c3061aed1565b60200260200101819052508760200151828280616c4c9061b03e565b935060ff1681518110616c6157616c6161aed1565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e747261637450617468000000000000000000000000000000000000815250828280616cae9061b03e565b935060ff1681518110616cc357616cc361aed1565b602090810291909101015287518282616cdb8161b03e565b935060ff1681518110616cf057616cf061aed1565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280616d3d9061b03e565b935060ff1681518110616d5257616d5261aed1565b6020026020010181905250616d66466182c9565b8282616d718161b03e565b935060ff1681518110616d8657616d8661aed1565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280616dd39061b03e565b935060ff1681518110616de857616de861aed1565b602002602001018190525086828280616e009061b03e565b935060ff1681518110616e1557616e1561aed1565b6020908102919091010152855115616f3c5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f6465000000000000000000000060208201528282616e668161b03e565b935060ff1681518110616e7b57616e7b61aed1565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90616ecb90899060040161a684565b600060405180830381865afa158015616ee8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616f10919081019061ab6b565b8282616f1b8161b03e565b935060ff1681518110616f3057616f3061aed1565b60200260200101819052505b84602001511561700c5760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282616f858161b03e565b935060ff1681518110616f9a57616f9a61aed1565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280616fe79061b03e565b935060ff1681518110616ffc57616ffc61aed1565b60200260200101819052506171d3565b6170446168e98660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6170d75760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826170878161b03e565b935060ff168151811061709c5761709c61aed1565b60200260200101819052508460a001516040516020016170bc919061af00565b604051602081830303815290604052828280616fe79061b03e565b8460c0015115801561711a57506040808901518151808301835260008082526020918201528251808401909352815183529081019082015261711890511590565b155b156171d35760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828261715e8161b03e565b935060ff16815181106171735761717361aed1565b602002602001018190525061718788618369565b604051602001617197919061af00565b6040516020818303038152906040528282806171b29061b03e565b935060ff16815181106171c7576171c761aed1565b60200260200101819052505b6040808601518151808301835260008082526020918201528251808401909352815183529081019082015261720790511590565b61729c5760408051808201909152600b81527f2d2d72656c6179657249640000000000000000000000000000000000000000006020820152828261724a8161b03e565b935060ff168151811061725f5761725f61aed1565b6020026020010181905250846040015182828061727b9061b03e565b935060ff16815181106172905761729061aed1565b60200260200101819052505b6060850151156173bd5760408051808201909152600681527f2d2d73616c740000000000000000000000000000000000000000000000000000602082015282826172e58161b03e565b935060ff16815181106172fa576172fa61aed1565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015617369573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617391919081019061ab6b565b828261739c8161b03e565b935060ff16815181106173b1576173b161aed1565b60200260200101819052505b60e085015151156174645760408051808201909152600a81527f2d2d6761734c696d697400000000000000000000000000000000000000000000602082015282826174078161b03e565b935060ff168151811061741c5761741c61aed1565b60200260200101819052506174388560e00151600001516182c9565b82826174438161b03e565b935060ff16815181106174585761745861aed1565b60200260200101819052505b60e0850151602001511561750e5760408051808201909152600a81527f2d2d676173507269636500000000000000000000000000000000000000000000602082015282826174b18161b03e565b935060ff16815181106174c6576174c661aed1565b60200260200101819052506174e28560e00151602001516182c9565b82826174ed8161b03e565b935060ff16815181106175025761750261aed1565b60200260200101819052505b60e085015160400151156175b85760408051808201909152600e81527f2d2d6d61784665655065724761730000000000000000000000000000000000006020820152828261755b8161b03e565b935060ff16815181106175705761757061aed1565b602002602001018190525061758c8560e00151604001516182c9565b82826175978161b03e565b935060ff16815181106175ac576175ac61aed1565b60200260200101819052505b60e085015160600151156176625760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826176058161b03e565b935060ff168151811061761a5761761a61aed1565b60200260200101819052506176368560e00151606001516182c9565b82826176418161b03e565b935060ff16815181106176565761765661aed1565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156176805761768061a54f565b6040519080825280602002602001820160405280156176b357816020015b606081526020019060019003908161769e5790505b50905060005b8260ff168160ff16101561770c57838160ff16815181106176dc576176dc61aed1565b6020026020010151828260ff16815181106176f9576176f961aed1565b60209081029190910101526001016176b9565b5093505050505b949350505050565b6177426040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916177c89186910161b0c8565b600060405180830381865afa1580156177e5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261780d919081019061ab6b565b9050600061781b8683618e58565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161784b919061a1a2565b6000604051808303816000875af115801561786a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617892919081019061b10f565b805190915060030b158015906178ab5750602081015151155b80156178ba5750604081015151155b1561689457816000815181106178d2576178d261aed1565b6020026020010151604051602001615eed919061b1c5565b6060600061791f8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506179569082905b90618fad565b15617ab35760006179d3826179cd846179c76179998a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90618fd4565b90619036565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150617a37908290618fad565b15617aa157604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617a9e905b82906190bb565b90505b617aaa816190e1565b92505050615e1a565b8215617acc578484604051602001615eed92919061b3b1565b5050604080516020810190915260008152615e1a565b509392505050565b6000808251602084016000f09392505050565b8160a0015115617b0c57505050565b6000617b1984848461914a565b90506000617b268261771b565b602081015181519192509060030b158015617bc25750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617bc290604080518082018252600080825260209182015281518083019092528451825280850190820152617950565b15617bcf57505050505050565b60408201515115617bef578160400151604051602001615eed919061b458565b80604051602001615eed919061b4b6565b60606000617c358360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150617c9a905b8290618268565b15617d0957604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615e1a90617d049083906196e5565b6190e1565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617d6b905b829061976f565b600103617e3857604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617dd190617a97565b50604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615e1a90617d04905b83906190bb565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617e9790617c93565b15617fce57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290617eff908390619809565b905060008160018351617f12919061a807565b81518110617f2257617f2261aed1565b60200260200101519050617fc5617d04617f986040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528551825280860190820152906196e5565b95945050505050565b82604051602001615eed919061b521565b50919050565b6060600061801a8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061807c90617c93565b1561808a57615e1a816190e1565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526180e990617d64565b60010361815357604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615e1a90617d0490617e31565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526181b290617c93565b15617fce57604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061821a908390619809565b9050600181511115618256578060028251618235919061a807565b815181106182455761824561aed1565b602002602001015192505050919050565b5082604051602001615eed919061b521565b80518251600091111561827d57506000615d21565b815183516020850151600092916182939161a81a565b61829d919061a807565b9050826020015181036182b4576001915050615d21565b82516020840151819020912014905092915050565b606060006182d6836198ae565b600101905060008167ffffffffffffffff8111156182f6576182f661a54f565b6040519080825280601f01601f191660200182016040528015618320576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461832a57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e53454400000000000000000000000000000000000000000000818401908152855180870187528381528401929092528451808601909552518452908301526060916183f5905b8290619990565b1561843557505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618494906183ee565b156184d457505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618533906183ee565b1561857357505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526185d2906183ee565b806186375750604080518082018252601081527f47504c2d322e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618637906183ee565b1561867757505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526186d6906183ee565b8061873b5750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261873b906183ee565b1561877b57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526187da906183ee565b8061883f5750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261883f906183ee565b1561887f57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526188de906183ee565b806189435750604080518082018252601181527f4c47504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618943906183ee565b1561898357505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526189e2906183ee565b15618a2257505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618a81906183ee565b15618ac157505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618b20906183ee565b15618b6057505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618bbf906183ee565b15618bff57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e300000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618c5e906183ee565b15618c9e57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618cfd906183ee565b80618d625750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618d62906183ee565b15618da257505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e3100000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618e01906183ee565b15618e4157505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151615eed929060200161b5ff565b60608060005b8451811015618ee35781858281518110618e7a57618e7a61aed1565b6020026020010151604051602001618e9392919061aa4a565b604051602081830303815290604052915060018551618eb2919061a807565b8114618edb5781604051602001618ec9919061b768565b60405160208183030381529060405291505b600101618e5e565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081618efc5790505090508381600081518110618f2757618f2761aed1565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110618f7b57618f7b61aed1565b60200260200101819052508181600281518110618f9a57618f9a61aed1565b6020908102919091010152949350505050565b6020808301518351835192840151600093618fcb92918491906199a4565b14159392505050565b604080518082019091526000808252602082015260006190068460000151856020015185600001518660200151619ab5565b9050836020015181619018919061a807565b8451859061902790839061a807565b90525060208401525090919050565b604080518082019091526000808252602082015281518351101561905b575081615d21565b60208083015190840151600191146190825750815160208481015190840151829020919020145b80156190b35782518451859061909990839061a807565b90525082516020850180516190af90839061a81a565b9052505b509192915050565b60408051808201909152600080825260208201526190da838383619bd5565b5092915050565b60606000826000015167ffffffffffffffff8111156191025761910261a54f565b6040519080825280601f01601f19166020018201604052801561912c576020820181803683370190505b50905060006020820190506190da8185602001518660000151619c80565b60606000619156616113565b6040805160ff808252612000820190925291925060009190816020015b606081526020019060019003908161917357905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806191ce9061b03e565b935060ff16815181106191e3576191e361aed1565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001619234919061b7a9565b60405160208183030381529060405282828061924f9061b03e565b935060ff16815181106192645761926461aed1565b60200260200101819052506040518060400160405280600881526020017f76616c69646174650000000000000000000000000000000000000000000000008152508282806192b19061b03e565b935060ff16815181106192c6576192c661aed1565b6020026020010181905250826040516020016192e2919061af6c565b6040516020818303038152906040528282806192fd9061b03e565b935060ff16815181106193125761931261aed1565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e74726163740000000000000000000000000000000000000000000081525082828061935f9061b03e565b935060ff16815181106193745761937461aed1565b60200260200101819052506193898784619cfa565b82826193948161b03e565b935060ff16815181106193a9576193a961aed1565b6020908102919091010152855151156194555760408051808201909152600b81527f2d2d7265666572656e6365000000000000000000000000000000000000000000602082015282826193fb8161b03e565b935060ff16815181106194105761941061aed1565b6020026020010181905250619429866000015184619cfa565b82826194348161b03e565b935060ff16815181106194495761944961aed1565b60200260200101819052505b8560800151156194c35760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261949e8161b03e565b935060ff16815181106194b3576194b361aed1565b6020026020010181905250619529565b84156195295760408051808201909152601281527f2d2d726571756972655265666572656e63650000000000000000000000000000602082015282826195088161b03e565b935060ff168151811061951d5761951d61aed1565b60200260200101819052505b604086015151156195c55760408051808201909152600d81527f2d2d756e73616665416c6c6f7700000000000000000000000000000000000000602082015282826195738161b03e565b935060ff16815181106195885761958861aed1565b602002602001018190525085604001518282806195a49061b03e565b935060ff16815181106195b9576195b961aed1565b60200260200101819052505b85606001511561962f5760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261960e8161b03e565b935060ff16815181106196235761962361aed1565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561964d5761964d61a54f565b60405190808252806020026020018201604052801561968057816020015b606081526020019060019003908161966b5790505b50905060005b8260ff168160ff1610156196d957838160ff16815181106196a9576196a961aed1565b6020026020010151828260ff16815181106196c6576196c661aed1565b6020908102919091010152600101619686565b50979650505050505050565b604080518082019091526000808252602082015281518351101561970a575081615d21565b815183516020850151600092916197209161a81a565b61972a919061a807565b6020840151909150600190821461974b575082516020840151819020908220145b80156197665783518551869061976290839061a807565b9052505b50929392505050565b60008082600001516197938560000151866020015186600001518760200151619ab5565b61979d919061a81a565b90505b835160208501516197b1919061a81a565b81116190da57816197c18161b7ee565b92505082600001516197f88560200151836197dc919061a807565b86516197e8919061a807565b8386600001518760200151619ab5565b619802919061a81a565b90506197a0565b60606000619817848461976f565b61982290600161a81a565b67ffffffffffffffff81111561983a5761983a61a54f565b60405190808252806020026020018201604052801561986d57816020015b60608152602001906001900390816198585790505b50905060005b8151811015617ae257619889617d0486866190bb565b82828151811061989b5761989b61aed1565b6020908102919091010152600101619873565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106198f7577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310619923576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061994157662386f26fc10000830492506010015b6305f5e1008310619959576305f5e100830492506008015b612710831061996d57612710830492506004015b6064831061997f576064830492506002015b600a8310615d215760010192915050565b600061999c8383619d3a565b159392505050565b600080858411619aab5760208411619a5757600084156199ef5760016199cb86602061a807565b6199d690600861b808565b6199e190600261b906565b6199eb919061a807565b1990505b83518116856199fe898961a81a565b619a08919061a807565b805190935082165b818114619a4257878411619a2a5787945050505050617713565b83619a348161b912565b945050828451169050619a10565b619a4c878561a81a565b945050505050617713565b838320619a64858861a807565b619a6e908761a81a565b91505b858210619aa957848220808203619a9657619a8c868461a81a565b9350505050617713565b619aa160018461a807565b925050619a71565b505b5092949350505050565b60008381868511619bc05760208511619b6f5760008515619b01576001619add87602061a807565b619ae890600861b808565b619af390600261b906565b619afd919061a807565b1990505b84518116600087619b128b8b61a81a565b619b1c919061a807565b855190915083165b828114619b6157818610619b4957619b3c8b8b61a81a565b9650505050505050617713565b85619b538161b7ee565b965050838651169050619b24565b859650505050505050617713565b508383206000905b619b81868961a807565b8211619bbe57858320808203619b9d5783945050505050617713565b619ba860018561a81a565b9350508180619bb69061b7ee565b925050619b77565b505b619bca878761a81a565b979650505050505050565b60408051808201909152600080825260208201526000619c078560000151866020015186600001518760200151619ab5565b602080870180519186019190915251909150619c23908261a807565b835284516020860151619c36919061a81a565b8103619c455760008552619c77565b83518351619c53919061a81a565b85518690619c6290839061a807565b9052508351619c71908261a81a565b60208601525b50909392505050565b60208110619cb85781518352619c9760208461a81a565b9250619ca460208361a81a565b9150619cb160208261a807565b9050619c80565b6000198115619ce7576001619cce83602061a807565b619cda9061010061b906565b619ce4919061a807565b90505b9151835183169219169190911790915250565b60606000619d0884846161e6565b8051602080830151604051939450619d229390910161b929565b60405160208183030381529060405291505092915050565b8151815160009190811115619d4d575081515b6020808501519084015160005b83811015619e065782518251808214619dd6576000196020871015619db557600184619d8789602061a807565b619d91919061a81a565b619d9c90600861b808565b619da790600261b906565b619db1919061a807565b1990505b8181168382168181039114619dd3579750615d219650505050505050565b50505b619de160208661a81a565b9450619dee60208561a81a565b93505050602081619dff919061a81a565b9050619d5a565b5084518651616894919061b981565b610b678061b9a283390190565b61063a8061c50983390190565b61106f8061cb4383390190565b6120728061dbb283390190565b6040518060e00160405280606081526020016060815260200160608152602001600015158152602001600015158152602001600015158152602001619e8c619e91565b905290565b60405180610100016040528060001515815260200160001515815260200160608152602001600080191681526020016060815260200160608152602001600015158152602001619e8c6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b81811015619f435783516001600160a01b0316835260209384019390920191600101619f1c565b509095945050505050565b60005b83811015619f69578181015183820152602001619f51565b50506000910152565b60008151808452619f8a816020860160208601619f4e565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a09a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b8181101561a080577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261a06a848651619f72565b602095860195909450929092019160010161a030565b509197505050602094850194929092019150600101619fc6565b50929695505050505050565b600081518084526020840193506020830160005b8281101561a0fa5781517fffffffff000000000000000000000000000000000000000000000000000000001686526020958601959091019060010161a0ba565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a09a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516040875261a1706040880182619f72565b905060208201519150868103602088015261a18b818361a0a6565b96505050602093840193919091019060010161a12c565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a09a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845261a204858351619f72565b9450602093840193919091019060010161a1ca565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a09a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b038151168652602081015190506040602087015261a29a604087018261a0a6565b955050602093840193919091019060010161a241565b600181811c9082168061a2c457607f821691505b602082108103617fdf577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6001600160a01b0381541682526001600160a01b03600182015416602083015260028101546040830152600060038201608060608501526000815461a3418161a2b0565b806080880152600182166000811461a360576001811461a39a5761a3ce565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831660a089015260a082151560051b890101935061a3ce565b84600052602060002060005b8381101561a3c55781548a820160a0015260019091019060200161a3a6565b890160a0019450505b50919695505050505050565b602081526000615e1a602083018461a2fd565b6001600160a01b0383168152604060208201526000617713604083018461a2fd565b60006020828403121561a42157600080fd5b81516001600160a01b0381168114615e1a57600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff881660408301528660608301526003861061a4f2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a083015261a51360c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b60006020828403121561a53f57600080fd5b81518015158114615e1a57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b601f82111561123c57806000526020600020601f840160051c8101602085101561a5a55750805b601f840160051c820191505b81811015612a54576000815560010161a5b1565b815167ffffffffffffffff81111561a5df5761a5df61a54f565b61a5f38161a5ed845461a2b0565b8461a57e565b6020601f82116001811461a627576000831561a60f5750848201515b600019600385901b1c1916600184901b178455612a54565b600084815260208120601f198516915b8281101561a657578785015182556020948501946001909201910161a637565b508482101561a6755786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b602081526000615e1a6020830184619f72565b60006020828403121561a6a957600080fd5b5051919050565b602081526000615d2160208301600581527f68656c6c6f000000000000000000000000000000000000000000000000000000602082015260400190565b60a08152600061a70060a0830187619f72565b6001600160a01b03861660208401528460408401526001600160a01b03841660608401528281036080840152619bca81600581527f68656c6c6f000000000000000000000000000000000000000000000000000000602082015260400190565b600081516060845261a7756060850182619f72565b90506001600160a01b036020840151166020850152604083015160408501528091505092915050565b60808152600061a7b1608083018761a760565b8560208401526001600160a01b03851660408401528281036060840152619bca8185619f72565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115615d2157615d2161a7d8565b80820180821115615d2157615d2161a7d8565b60a08152600061a84060a083018861a760565b6001600160a01b03871660208401528560408401526001600160a01b0385166060840152828103608084015261a8768185619f72565b98975050505050505050565b6001600160a01b03851681528360208201526001600160a01b0383166040820152608060608201526000616894608083018461a2fd565b6001600160a01b03831681526040602082015260006177136040830184619f72565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161a91381601a850160208801619f4e565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161a95081601c840160208801619f4e565b01601c01949350505050565b6040516060810167ffffffffffffffff8111828210171561a97f5761a97f61a54f565b60405290565b60008067ffffffffffffffff84111561a9a05761a9a061a54f565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561a9cf5761a9cf61a54f565b60405283815290508082840185101561a9e757600080fd5b617ae2846020830185619f4e565b600082601f83011261aa0657600080fd5b615e1a8383516020850161a985565b60006020828403121561aa2757600080fd5b815167ffffffffffffffff81111561aa3e57600080fd5b615d1d8482850161a9f5565b6000835161aa5c818460208801619f4e565b83519083019061aa70818360208801619f4e565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161aab181601a850160208801619f4e565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161aaee816033840160208801619f4e565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000615e1a6080830184619f72565b60006020828403121561ab7d57600080fd5b815167ffffffffffffffff81111561ab9457600080fd5b8201601f8101841361aba557600080fd5b615d1d8482516020840161a985565b6000855161abc6818460208a01619f4e565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161ac00816001840160208a01619f4e565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161ac3e816002840160208901619f4e565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161ac80816002840160208801619f4e565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061accb6040830184619f72565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161ad4281601f850160208701619f4e565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061adaf6040830184619f72565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061ae016040830184619f72565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161ae78816014850160208701619f4e565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061aebf6040830185619f72565b8281036020840152615e168185619f72565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161af38816001850160208701619f4e565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161af7e818460208701619f4e565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161b03181604b850160208701619f4e565b91909101604b0192915050565b600060ff821660ff810361b0545761b05461a7d8565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161b0bb816029850160208701619f4e565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000615e1a6080830184619f72565b60006020828403121561b12157600080fd5b815167ffffffffffffffff81111561b13857600080fd5b82016060818503121561b14a57600080fd5b61b15261a95c565b81518060030b811461b16357600080fd5b8152602082015167ffffffffffffffff81111561b17f57600080fd5b61b18b8682850161a9f5565b602083015250604082015167ffffffffffffffff81111561b1ab57600080fd5b61b1b78682850161a9f5565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161b223816021850160208701619f4e565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161b40f816021850160208801619f4e565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161b44c81602e840160208801619f4e565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161b0bb816029850160208701619f4e565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161b514816022850160208701619f4e565b9190910160220192915050565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161b55981600e850160208701619f4e565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161b637816018850160208801619f4e565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161b67481601c840160208801619f4e565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161b77a818460208701619f4e565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161b7e181601c850160208701619f4e565b91909101601c0192915050565b6000600019820361b8015761b80161a7d8565b5060010190565b8082028115828204841417615d2157615d2161a7d8565b6001815b600184111561b85a5780850481111561b83e5761b83e61a7d8565b600184161561b84c57908102905b60019390931c92800261b823565b935093915050565b60008261b87157506001615d21565b8161b87e57506000615d21565b816001811461b894576002811461b89e5761b8ba565b6001915050615d21565b60ff84111561b8af5761b8af61a7d8565b50506001821b615d21565b5060208310610133831016604e8410600b841016171561b8dd575081810a615d21565b61b8ea600019848461b81f565b806000190482111561b8fe5761b8fe61a7d8565b029392505050565b6000615e1a838361b862565b60008161b9215761b92161a7d8565b506000190190565b6000835161b93b818460208801619f4e565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161b975816001840160208801619f4e565b01600101949350505050565b81810360008312801583831316838312821617156190da576190da61a7d856fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea2646970667358221220b09c98b42d894b1b92a74ecc691587bcc17012fff7ef3bcfa6fe755f9b6255a564736f6c634300081a00336080604052348015600f57600080fd5b5061061b8061001f6000396000f3fe60806040526004361061002a5760003560e01c80635bcfd61614610033578063c9028a361461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e366004610151565b610073565b34801561005f57600080fd5b5061003161006e36600461020e565b6100ee565b6060811561008a576100878284018461027f565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610375565b6100c560408a0160208b016103e1565b896040013533866040516100de96959493929190610445565b60405180910390a1505050505050565b7fd75bb509c8f32a725aac99ac5c4541060dbfb889a3aca8314d6f00395618c4c48160405161011d9190610507565b60405180910390a150565b803573ffffffffffffffffffffffffffffffffffffffff8116811461014c57600080fd5b919050565b60008060008060006080868803121561016957600080fd5b853567ffffffffffffffff81111561018057600080fd5b86016060818903121561019257600080fd5b94506101a060208701610128565b935060408601359250606086013567ffffffffffffffff8111156101c357600080fd5b8601601f810188136101d457600080fd5b803567ffffffffffffffff8111156101eb57600080fd5b8860208284010111156101fd57600080fd5b959894975092955050506020019190565b60006020828403121561022057600080fd5b813567ffffffffffffffff81111561023757600080fd5b82016080818503121561024957600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561029157600080fd5b813567ffffffffffffffff8111156102a857600080fd5b8201601f810184136102b957600080fd5b803567ffffffffffffffff8111156102d3576102d3610250565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033f5761033f610250565b60405281815282820160200186101561035757600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126103aa57600080fd5b83018035915067ffffffffffffffff8211156103c557600080fd5b6020019150368190038213156103da57600080fd5b9250929050565b6000602082840312156103f357600080fd5b61024982610128565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60a08152600061045960a08301888a6103fc565b73ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff851660608401528281036080840152835180825260005b818110156104c3576020818701810151848301820152016104a7565b5060006020828401015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011683010192505050979650505050505050565b6020815273ffffffffffffffffffffffffffffffffffffffff61052983610128565b16602082015273ffffffffffffffffffffffffffffffffffffffff61055060208401610128565b166040820152600080604084013590508060608401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261059c57600080fd5b830160208101903567ffffffffffffffff8111156105b957600080fd5b8036038213156105c857600080fd5b6080808501526105dc60a0850182846103fc565b9594505050505056fea264697066735822122034d8711688fa0746c516ebf736804e86c9e1dad5e64788e702413ad1a8eb9ff164736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea2646970667358221220b13ccf97234dc9b7f658234f9bf37a57d08f465bb99c431b865174e7a399a30764736f6c634300081a003360c060405234801561001057600080fd5b5060405161207238038061207283398101604081905261002f916101f0565b6001600160a01b038216158061004c57506001600160a01b038116155b1561006a5760405163d92e233d60e01b815260040160405180910390fd5b60066100768982610342565b5060076100838882610342565b506008805460ff191660ff881617905560808590528360028111156100aa576100aa610400565b60a08160028111156100be576100be610400565b905250600192909255600080546001600160a01b039283166001600160a01b0319909116179055600880549190921661010002610100600160a81b0319909116179055506104169350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261013357600080fd5b81516001600160401b0381111561014c5761014c61010c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561017a5761017a61010c565b60405281815283820160200185101561019257600080fd5b60005b828110156101b157602081860181015183830182015201610195565b506000918101602001919091529392505050565b8051600381106101d457600080fd5b919050565b80516001600160a01b03811681146101d457600080fd5b600080600080600080600080610100898b03121561020d57600080fd5b88516001600160401b0381111561022357600080fd5b61022f8b828c01610122565b60208b015190995090506001600160401b0381111561024d57600080fd5b6102598b828c01610122565b975050604089015160ff8116811461027057600080fd5b60608a0151909650945061028660808a016101c5565b60a08a0151909450925061029c60c08a016101d9565b91506102aa60e08a016101d9565b90509295985092959890939650565b600181811c908216806102cd57607f821691505b6020821081036102ed57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561033d57806000526020600020601f840160051c8101602085101561031a5750805b601f840160051c820191505b8181101561033a5760008155600101610326565b50505b505050565b81516001600160401b0381111561035b5761035b61010c565b61036f8161036984546102b9565b846102f3565b6020601f8211600181146103a3576000831561038b5750848201515b600019600385901b1c1916600184901b17845561033a565b600084815260208120601f198516915b828110156103d357878501518255602094850194600190920191016103b3565b50848210156103f15786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a051611c1b61045760003960006103440152600081816102f001528181610bdc01528181610ce201528181610efe01526110040152611c1b6000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c806395d89b41116100f9578063ccc7759911610097578063eddeb12311610071578063eddeb12314610461578063f2441b3214610474578063f687d12a14610494578063fc5fecd5146104a757600080fd5b8063ccc77599146103d4578063d9eeebed146103e7578063dd62ed3e1461041b57600080fd5b8063b84c8246116100d3578063b84c824614610386578063c47f00271461039b578063c7012626146103ae578063c835d7cc146103c157600080fd5b806395d89b4114610337578063a3413d031461033f578063a9059cbb1461037357600080fd5b80633ce4a5bc116101665780634d8943bb116101405780634d8943bb146102ac57806370a08231146102b557806385e1f4d0146102eb5780638b851b951461031257600080fd5b80633ce4a5bc1461024657806342966c681461028657806347e7ef241461029957600080fd5b806318160ddd1161019757806318160ddd1461021657806323b872dd1461021e578063313ce5671461023157600080fd5b806306fdde03146101be578063091d2788146101dc578063095ea7b3146101f3575b600080fd5b6101c66104ba565b6040516101d39190611648565b60405180910390f35b6101e560015481565b6040519081526020016101d3565b610206610201366004611687565b61054c565b60405190151581526020016101d3565b6005546101e5565b61020661022c3660046116b3565b610563565b60085460405160ff90911681526020016101d3565b61026173735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d3565b6102066102943660046116f4565b6105fa565b6102066102a7366004611687565b61060e565b6101e560025481565b6101e56102c336600461170d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6101e57f000000000000000000000000000000000000000000000000000000000000000081565b60085461026190610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6101c6610767565b6103667f000000000000000000000000000000000000000000000000000000000000000081565b6040516101d3919061172a565b610206610381366004611687565b610776565b610399610394366004611832565b610783565b005b6103996103a9366004611832565b6107e0565b6102066103bc366004611883565b610839565b6103996103cf36600461170d565b610988565b6103996103e236600461170d565b610a9c565b6103ef610bb0565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101d3565b6101e56104293660046118dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205490565b61039961046f3660046116f4565b610dce565b6000546102619073ffffffffffffffffffffffffffffffffffffffff1681565b6103996104a23660046116f4565b610e50565b6103ef6104b53660046116f4565b610ed2565b6060600680546104c990611915565b80601f01602080910402602001604051908101604052809291908181526020018280546104f590611915565b80156105425780601f1061051757610100808354040283529160200191610542565b820191906000526020600020905b81548152906001019060200180831161052557829003601f168201915b5050505050905090565b60006105593384846110ee565b5060015b92915050565b60006105708484846111f7565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460209081526040808320338452909152902054828110156105db576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105ef85336105ea8685611997565b6110ee565b506001949350505050565b600061060633836113b2565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab1480159061064c575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156106755750600854610100900473ffffffffffffffffffffffffffffffffffffffff163314155b156106ac576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106b683836114f4565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526107569186906119aa565b60405180910390a250600192915050565b6060600780546104c990611915565b60006105593384846111f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab146107d0576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60076107dc8282611a1b565b5050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461082d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60066107dc8282611a1b565b6000806000610846610bb0565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156108d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fc9190611b34565b610932576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61093c33856113b2565b60025460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161097591899189918791611b56565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146109d5576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a22576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610ae9576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610b36576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c679190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610cb6576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d699190611ba2565b905080600003610da5576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060025460015483610db89190611bbb565b610dc29190611bd2565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e1b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610a91565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e9d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610f65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f899190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610fd8576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015611067573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108b9190611ba2565b9050806000036110c7576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000906110d78784611bbb565b6110e19190611bd2565b9296929550919350505050565b73ffffffffffffffffffffffffffffffffffffffff831661113b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611188576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611244576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611291576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040902054818110156112f1576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112fb8282611997565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260036020526040808220939093559085168152908120805484929061133e908490611bd2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113a491815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff82166113ff576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260409020548181101561145f576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114698282611997565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260036020526040812091909155600580548492906114a4908490611997565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016111ea565b73ffffffffffffffffffffffffffffffffffffffff8216611541576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008282546115539190611bd2565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805483929061158d908490611bd2565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561160a576020818501810151868301820152016115ee565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061165b60208301846115e4565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461168457600080fd5b50565b6000806040838503121561169a57600080fd5b82356116a581611662565b946020939093013593505050565b6000806000606084860312156116c857600080fd5b83356116d381611662565b925060208401356116e381611662565b929592945050506040919091013590565b60006020828403121561170657600080fd5b5035919050565b60006020828403121561171f57600080fd5b813561165b81611662565b6020810160038310611765577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff8411156117b5576117b561176b565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff821117156118025761180261176b565b60405283815290508082840185101561181a57600080fd5b83836020830137600060208583010152509392505050565b60006020828403121561184457600080fd5b813567ffffffffffffffff81111561185b57600080fd5b8201601f8101841361186c57600080fd5b61187b8482356020840161179a565b949350505050565b6000806040838503121561189657600080fd5b823567ffffffffffffffff8111156118ad57600080fd5b8301601f810185136118be57600080fd5b6118cd8582356020840161179a565b95602094909401359450505050565b600080604083850312156118ef57600080fd5b82356118fa81611662565b9150602083013561190a81611662565b809150509250929050565b600181811c9082168061192957607f821691505b602082108103611962577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561055d5761055d611968565b6040815260006119bd60408301856115e4565b90508260208301529392505050565b601f821115611a1657806000526020600020601f840160051c810160208510156119f35750805b601f840160051c820191505b81811015611a1357600081556001016119ff565b50505b505050565b815167ffffffffffffffff811115611a3557611a3561176b565b611a4981611a438454611915565b846119cc565b6020601f821160018114611a9b5760008315611a655750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611a13565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015611ae95787850151825560209485019460019092019101611ac9565b5084821015611b2557868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b600060208284031215611b4657600080fd5b8151801515811461165b57600080fd5b608081526000611b6960808301876115e4565b6020830195909552506040810192909252606090910152919050565b600060208284031215611b9757600080fd5b815161165b81611662565b600060208284031215611bb457600080fd5b5051919050565b808202811582820484141761055d5761055d611968565b8082018082111561055d5761055d61196856fea2646970667358221220d6ba834f25782689ed13bffb6ac9ff2c8d3b5342c94a515aea8197a76070ad3f64736f6c634300081a0033a264697066735822122065eab9f32cd4a9c4b7d7cc80a660d41bacbf48dd05c682045efb82543eb1304464736f6c634300081a0033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061fc598061003c6000396000f3fe608060405234801561001057600080fd5b506004361061034c5760003560e01c806385226c81116101bd578063c8814d2e116100f9578063eab7674e116100a2578063ef2b53941161007c578063ef2b539414610542578063f1d98f1b1461054a578063fa7626d414610552578063fb339a1c1461055f57600080fd5b8063eab7674e1461052a578063eb78bd7d14610532578063ec294d9f1461053a57600080fd5b8063e09bc659116100d3578063e09bc659146104e5578063e20c9f71146104ed578063e63ab1e9146104f557600080fd5b8063c8814d2e146104cd578063ca26929c146104d5578063cf2c3d1d146104dd57600080fd5b8063996b767511610166578063b5508aa911610140578063b5508aa9146104a5578063b936be8c14610443578063ba414fa6146104ad578063c35cb5e4146104c557600080fd5b8063996b76751461048d5780639c9acd5d14610495578063b0464fdc1461049d57600080fd5b8063916a17c611610197578063916a17c61461047057806396d9d8761461048557806397f7661f1461044357600080fd5b806385226c811461044b578063884660a314610460578063890a2d671461046857600080fd5b80633e5e3c231161028c5780635cec7db5116102355780636efa04b51161020f5780636efa04b51461042b5780637cec29b0146104335780637f924c4e1461043b578063828d267c1461044357600080fd5b80635cec7db5146104065780636163f8ef1461040e57806366d9a9a01461041657600080fd5b806351336fb01161026657806351336fb0146103f657806358c9987f146103fe5780635b4c90e1146103a157600080fd5b80633e5e3c23146103de5780633f7286f4146103e657806348f4fd07146103ee57600080fd5b806327820625116102f95780632ade3880116102d35780632ade3880146103b1578063339bd828146103c65780633626c616146103ce5780633ab5b199146103d657600080fd5b806327820625146103995780632948df41146103a15780632acb21b4146103a957600080fd5b80631c785a141161032a5780631c785a141461036b5780631ed7831c146103735780632468bc0f1461039157600080fd5b8063084fafab146103515780630a9254e41461035b57806314b7a6da14610363575b600080fd5b610359610567565b005b61035961073d565b610359611241565b610359611391565b61037b611ca8565b6040516103889190619f02565b60405180910390f35b610359611d0a565b6103596121d5565b61035961229d565b610359612486565b6103b9612645565b6040516103889190619f9e565b610359612787565b6103596128d3565b610359612a5b565b61037b612c0c565b61037b612c6c565b610359612ccc565b610359612e17565b610359612f62565b610359613117565b610359613305565b61041e613453565b604051610388919061a104565b6103596135d5565b610359613979565b610359613b64565b610359613b9d565b610453613d49565b604051610388919061a1a2565b610359613e19565b6103596140f8565b6104786142b3565b604051610388919061a219565b6103596143ae565b610359614501565b610359614655565b6104786147a5565b6104536148a0565b6104b5614970565b6040519015158152602001610388565b610359614a44565b610359614bff565b610359614d41565b610359614fc4565b610359615182565b61037b61533b565b61051c7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b604051908152602001610388565b61035961539b565b6103596154e9565b6103596156a7565b610359615856565b610359615a07565b601f546104b59060ff1681565b610359615b55565b602480546040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190529281018390526044810183905260648101929092526001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156105f657600080fd5b505af115801561060a573d6000803e3d6000fd5b505050507fd75bb509c8f32a725aac99ac5c4541060dbfb889a3aca8314d6f00395618c4c4602c60405161063e919061a3da565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b1580156106a057600080fd5b505af11580156106b4573d6000803e3d6000fd5b50506020546024546040517f184b07930000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063184b079393506107099290911690602c9060040161a3ed565b600060405180830381600087803b15801561072357600080fd5b505af1158015610737573d6000803e3d6000fd5b50505050565b602580547fffffffffffffffffffffffff000000000000000000000000000000000000000090811630179091556026805490911661123417905560405161078390619e15565b604051809103906000f08015801561079f573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600f81527f476174657761795a45564d2e736f6c000000000000000000000000000000000060208201526025549151602481019390935292166044820152610883919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc95500000000000000000000000000000000000000000000000000000000179052615d08565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b039384168102919091179182905560208054919092049092167fffffffffffffffffffffffff000000000000000000000000000000000000000090921682178155604080517f2722feee0000000000000000000000000000000000000000000000000000000081529051632722feee926004808401939192918290030181865afa158015610945573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610969919061a40f565b602780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516109ad90619e22565b604051809103906000f0801580156109c9573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161781556027546040517f06447d5600000000000000000000000000000000000000000000000000000000815292166004830152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d569101600060405180830381600087803b158015610a6557600080fd5b505af1158015610a79573d6000803e3d6000fd5b505050506000806000604051610a8e90619e2f565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610aca573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602054604051601293600193849360009391921690610b2090619e3c565b610b2f9695949392919061a438565b604051809103906000f080158015610b4b573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556023546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b158015610be257600080fd5b505af1158015610bf6573d6000803e3d6000fd5b50506023546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b158015610c6057600080fd5b505af1158015610c74573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610cf457600080fd5b505af1158015610d08573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610d5d57600080fd5b505af1158015610d71573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610de5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e09919061a52d565b506021546025546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116906347e7ef24906044016020604051808303816000875af1158015610e7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9e919061a52d565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610efd57600080fd5b505af1158015610f11573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610f8757600080fd5b505af1158015610f9b573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116925063095ea7b391506044016020604051808303816000875af115801561100f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611033919061a52d565b50602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b15801561108557600080fd5b505af1158015611099573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af115801561110d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611131919061a52d565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561119057600080fd5b505af11580156111a4573d6000803e3d6000fd5b5050604080516080810182526025546001600160a01b0390811682526000602080840182815260018587019081528651928301909652918152606084018190528351602c80549185167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161781559251602d8054919095169116179092559251602e55909350909150602f9061123c908261a5c5565b505050565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561129a57600080fd5b505af11580156112ae573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561131e57600080fd5b505af1158015611332573d6000803e3d6000fd5b50506020546021546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260016024820152600060448201529116925063f45346dc9150606401610709565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156113ea57600080fd5b505af11580156113fe573d6000803e3d6000fd5b5050602754604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506114e9919060040161a684565b600060405180830381600087803b15801561150357600080fd5b505af1158015611517573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561156b57600080fd5b505af115801561157f573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156115dc57600080fd5b505af11580156115f0573d6000803e3d6000fd5b5050602754604080516001600160a01b0390921660248301527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60448084019190915281518084039091018152606490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2517d3f00000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506116db919060040161a684565b600060405180830381600087803b1580156116f557600080fd5b505af1158015611709573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561175d57600080fd5b505af1158015611771573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156117ce57600080fd5b505af11580156117e2573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561183657600080fd5b505af115801561184a573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd93c066500000000000000000000000000000000000000000000000000000000600482015260019250737109709ecfa91a80626ff3989d68f67f5b1dd12d915063c31eb0e090602401600060405180830381600087803b1580156118bd57600080fd5b505af11580156118d1573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561192e57600080fd5b505af1158015611942573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810187905290821660448201529116925063f45346dc9150606401600060405180830381600087803b1580156119ba57600080fd5b505af11580156119ce573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015611a2b57600080fd5b505af1158015611a3f573d6000803e3d6000fd5b50505050602060009054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611a9357600080fd5b505af1158015611aa7573d6000803e3d6000fd5b50506021546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a08231906024015b602060405180830381865afa158015611afb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b1f919061a697565b9050611b2c600082615d27565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611b8557600080fd5b505af1158015611b99573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810188905290821660448201529116925063f45346dc9150606401600060405180830381600087803b158015611c1157600080fd5b505af1158015611c25573d6000803e3d6000fd5b50506021546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611c78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9c919061a697565b905061123c8382615d27565b60606016805480602002602001604051908101604052809291908181526020018280548015611d0057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611ce2575b5050505050905090565b6022546027546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611d5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d7f919061a697565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015611dd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df5919061a697565b6024546040519192506001600160a01b03163190600090611e189060200161a6b0565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611f0657600080fd5b505af1158015611f1a573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e9450611f7593506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054611fa5936001600160a01b03928316928c92169061a6ed565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561200657600080fd5b505af115801561201a573d6000803e3d6000fd5b50506020546024546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a9593506120719286928c92911690889060040161a79e565b600060405180830381600087803b15801561208b57600080fd5b505af115801561209f573d6000803e3d6000fd5b50506022546027546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156120f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612116919061a697565b905061212b612125888861a807565b82615d27565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801561217c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121a0919061a697565b90506121ac8682615d27565b6121cb6121b9898761a81a565b6024546001600160a01b031631615d27565b5050505050505050565b604051630618f58760e51b81527f42c0407e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561224157600080fd5b505af1158015612255573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401610686565b60006040516020016122ae9061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b15801561235c57600080fd5b505af1158015612370573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156123e057600080fd5b505af11580156123f4573d6000803e3d6000fd5b50506020546024546040517fbcf7f32b0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063bcf7f32b935061245092869260009260019290911690899060040161a82d565b600060405180830381600087803b15801561246a57600080fd5b505af115801561247e573d6000803e3d6000fd5b505050505050565b60006040516020016124979061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f42c0407e0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561256157600080fd5b505af1158015612575573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015b600060405180830381600087803b1580156125d357600080fd5b505af11580156125e7573d6000803e3d6000fd5b50506020546021546024546040517fbcf7f32b0000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063bcf7f32b9450612450938793811692600192911690899060040161a82d565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561277e57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156127675783829060005260206000200180546126da9061a2b0565b80601f01602080910402602001604051908101604052809291908181526020018280546127069061a2b0565b80156127535780601f1061272857610100808354040283529160200191612753565b820191906000526020600020905b81548152906001019060200180831161273657829003601f168201915b5050505050815260200190600101906126bb565b505050508152505081526020019060010190612669565b50505050905090565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156127e057600080fd5b505af11580156127f4573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561286457600080fd5b505af1158015612878573d6000803e3d6000fd5b50506020546021546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450639d4ba46593506107099290911690600190600090602c9060040161a882565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561292f57600080fd5b505af1158015612943573d6000803e3d6000fd5b5050604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156129b357600080fd5b505af11580156129c7573d6000803e3d6000fd5b50506020546021546027546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810187905290821660448201529116925063f45346dc91506064015b600060405180830381600087803b158015612a4057600080fd5b505af1158015612a54573d6000803e3d6000fd5b5050505050565b6000604051602001612a6c9061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b158015612b1a57600080fd5b505af1158015612b2e573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015612b9e57600080fd5b505af1158015612bb2573d6000803e3d6000fd5b50506020546021546040517fbcf7f32b0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063bcf7f32b93506124509286921690600190600090899060040161a82d565b60606018805480602002602001604051908101604052809291908181526020018280548015611d00576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611ce2575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015611d00576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611ce2575050505050905090565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612d2557600080fd5b505af1158015612d39573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015612da957600080fd5b505af1158015612dbd573d6000803e3d6000fd5b50506020546024546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450639d4ba465935061070992600092600192911690602c9060040161a882565b604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015612e8357600080fd5b505af1158015612e97573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015612ef457600080fd5b505af1158015612f08573d6000803e3d6000fd5b50506020546021546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450639d4ba465935061070992909116906001908590602c9060040161a882565b6000604051602001612f739061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b15801561302157600080fd5b505af1158015613035573d6000803e3d6000fd5b5050604051630618f58760e51b81527f5d67094f000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156130a557600080fd5b505af11580156130b9573d6000803e3d6000fd5b50506020546021546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca379450612450938793811692600092911690899060040161a82d565b60405160019060009061312c9060200161a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156131f657600080fd5b505af115801561320a573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561326757600080fd5b505af115801561327b573d6000803e3d6000fd5b50506020546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0390911692506321501a9591506132ce90849087908590889060040161a79e565b600060405180830381600087803b1580156132e857600080fd5b505af11580156132fc573d6000803e3d6000fd5b50505050505050565b604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561337157600080fd5b505af1158015613385573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156133e257600080fd5b505af11580156133f6573d6000803e3d6000fd5b50506020546021546027546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550639d4ba465945061070993928316926001921690602c9060040161a882565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561277e57838290600052602060002090600202016040518060400160405290816000820180546134aa9061a2b0565b80601f01602080910402602001604051908101604052809291908181526020018280546134d69061a2b0565b80156135235780601f106134f857610100808354040283529160200191613523565b820191906000526020600020905b81548152906001019060200180831161350657829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156135bd57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161356a5790505b50505050508152505081526020019060010190613477565b602154602480546040516370a0823160e01b81526001600160a01b03918216600482015260009391909116916370a082319101602060405180830381865afa158015613625573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613649919061a697565b9050613656600082615d27565b60006040516020016136679061a6b0565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561375557600080fd5b505af1158015613769573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e94506137c493506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526027546020546137f5936001600160a01b0392831692600192169061a6ed565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561385657600080fd5b505af115801561386a573d6000803e3d6000fd5b50506020546021546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca3794506138c8938793811692600192911690899060040161a82d565b600060405180830381600087803b1580156138e257600080fd5b505af11580156138f6573d6000803e3d6000fd5b5050602154602480546040516370a0823160e01b81526001600160a01b03918216600482015260009550921692506370a082319101602060405180830381865afa158015613948573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061396c919061a697565b9050610737600182615d27565b600060405160200161398a9061a6b0565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015613a7857600080fd5b505af1158015613a8c573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e9450613ae793506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054613b18936001600160a01b0392831692600192169061a6ed565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024016125b9565b6021546026546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401611ade565b6000604051602001613bae9061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b158015613c5c57600080fd5b505af1158015613c70573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015613ce057600080fd5b505af1158015613cf4573d6000803e3d6000fd5b50506020546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0390911692506321501a959150612450908490600190600090889060040161a79e565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101561277e578382906000526020600020018054613d8c9061a2b0565b80601f0160208091040260200160405190810160405280929190818152602001828054613db89061a2b0565b8015613e055780601f10613dda57610100808354040283529160200191613e05565b820191906000526020600020905b815481529060010190602001808311613de857829003601f168201915b505050505081526020019060010190613d6d565b602154602480546040516370a0823160e01b81526001600160a01b03918216600482015260009391909116916370a082319101602060405180830381865afa158015613e69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e8d919061a697565b9050613e9a600082615d27565b602480546040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190529281018390526044810183905260648101929092526001600160a01b03166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015613f2957600080fd5b505af1158015613f3d573d6000803e3d6000fd5b505050507fd75bb509c8f32a725aac99ac5c4541060dbfb889a3aca8314d6f00395618c4c4602c604051613f71919061a3da565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613fd257600080fd5b505af1158015613fe6573d6000803e3d6000fd5b50506020546021546024546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550639d4ba465945061404393928316926001921690602c9060040161a882565b600060405180830381600087803b15801561405d57600080fd5b505af1158015614071573d6000803e3d6000fd5b5050602154602480546040516370a0823160e01b81526001600160a01b03918216600482015260009550921692506370a082319101602060405180830381865afa1580156140c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140e7919061a697565b90506140f4600182615d27565b5050565b60405160019060009061410d9060200161a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156141d757600080fd5b505af11580156141eb573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561424857600080fd5b505af115801561425c573d6000803e3d6000fd5b50506020546027546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a9593506132ce9286928992911690889060040161a79e565b6060601d805480602002602001604051908101604052809291908181526020016000905b8282101561277e5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561439657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116143435790505b505050505081525050815260200190600101906142d7565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561440a57600080fd5b505af115801561441e573d6000803e3d6000fd5b5050604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561448e57600080fd5b505af11580156144a2573d6000803e3d6000fd5b50506020546021546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101869052911660448201819052925063f45346dc9150606401612a26565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561455a57600080fd5b505af115801561456e573d6000803e3d6000fd5b5050604051630618f58760e51b81527f5d67094f000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156145de57600080fd5b505af11580156145f2573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526000602482015290821660448201529116925063f45346dc9150606401610709565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156146ae57600080fd5b505af11580156146c2573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561473257600080fd5b505af1158015614746573d6000803e3d6000fd5b50506020546026546040517ff45346dc00000000000000000000000000000000000000000000000000000000815260006004820152600160248201526001600160a01b0391821660448201529116925063f45346dc9150606401610709565b6060601c805480602002602001604051908101604052809291908181526020016000905b8282101561277e5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561488857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116148355790505b505050505081525050815260200190600101906147c9565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101561277e5783829060005260206000200180546148e39061a2b0565b80601f016020809104026020016040519081016040528092919081815260200182805461490f9061a2b0565b801561495c5780601f106149315761010080835404028352916020019161495c565b820191906000526020600020905b81548152906001019060200180831161493f57829003601f168201915b5050505050815260200190600101906148c4565b60085460009060ff1615614988575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015614a19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a3d919061a697565b1415905090565b604051600190600090614a599060200161a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f42c0407e0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b158015614b2357600080fd5b505af1158015614b37573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015614b9457600080fd5b505af1158015614ba8573d6000803e3d6000fd5b50506020546024546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a9593506132ce9286928992911690889060040161a79e565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614c5857600080fd5b505af1158015614c6c573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015614cdc57600080fd5b505af1158015614cf0573d6000803e3d6000fd5b50506020546040517f184b07930000000000000000000000000000000000000000000000000000000081526001600160a01b03909116925063184b0793915061070990600090602c9060040161a3ed565b6021546026546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015614d92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614db6919061a697565b9050614dc3600082615d27565b60255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614e1c57600080fd5b505af1158015614e30573d6000803e3d6000fd5b5050604051630618f58760e51b81527f42c0407e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015614ea057600080fd5b505af1158015614eb4573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810188905290821660448201529116925063f45346dc9150606401600060405180830381600087803b158015614f2c57600080fd5b505af1158015614f40573d6000803e3d6000fd5b50506021546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015614f93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614fb7919061a697565b905061123c600082615d27565b6000604051602001614fd59061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f42c0407e0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561509f57600080fd5b505af11580156150b3573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561511057600080fd5b505af1158015615124573d6000803e3d6000fd5b50506020546021546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca379450612450938793811692600192911690899060040161a82d565b60006040516020016151939061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561525d57600080fd5b505af1158015615271573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156152ce57600080fd5b505af11580156152e2573d6000803e3d6000fd5b50506020546021546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063c39aca37935061245092869216906001908690899060040161a82d565b60606015805480602002602001604051908101604052809291908181526020018280548015611d00576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611ce2575050505050905090565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156153f457600080fd5b505af1158015615408573d6000803e3d6000fd5b5050604051630618f58760e51b81527f5d67094f000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561547857600080fd5b505af115801561548c573d6000803e3d6000fd5b50506020546021546024546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550639d4ba465945061070993928316926000921690602c9060040161a882565b60006040516020016154fa9061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156155c457600080fd5b505af11580156155d8573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561563557600080fd5b505af1158015615649573d6000803e3d6000fd5b50506020546021546027546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca379450612450938793811692600192911690899060040161a82d565b60006040516020016156b89061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b15801561576657600080fd5b505af115801561577a573d6000803e3d6000fd5b5050604051630618f58760e51b81527f19c08f49000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156157ea57600080fd5b505af11580156157fe573d6000803e3d6000fd5b50506020546021546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a959350612450928692600092911690889060040161a79e565b60006040516020016158679061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b15801561591557600080fd5b505af1158015615929573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561599957600080fd5b505af11580156159ad573d6000803e3d6000fd5b50506020546021546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063c39aca3793506124509286921690600190600090899060040161a82d565b604051630618f58760e51b81527f42c0407e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015615a7357600080fd5b505af1158015615a87573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015615ae457600080fd5b505af1158015615af8573d6000803e3d6000fd5b50506020546021546024546040517f9d4ba4650000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550639d4ba465945061070993928316926001921690602c9060040161a882565b6000604051602001615b669061a6b0565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401819052600184840152825163ca669fa760e01b815260048101919091529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163ca669fa791602480830192600092919082900301818387803b158015615c1457600080fd5b505af1158015615c28573d6000803e3d6000fd5b5050604051630618f58760e51b81527fd92e233d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015615c9857600080fd5b505af1158015615cac573d6000803e3d6000fd5b50506020546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063c39aca37935061245092869260009260019290911690899060040161a82d565b6000615d12619e49565b615d1d848483615da6565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b158015615d9257600080fd5b505afa15801561247e573d6000803e3d6000fd5b600080615db38584615e21565b9050615e166040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001615e0192919061a8b9565b60405160208183030381529060405285615e2d565b9150505b9392505050565b6000615e1a8383615e5b565b60c08101515160009015615e5157615e4a84848460c00151615e76565b9050615e1a565b615e4a848461601c565b6000615e678383616107565b615e1a83836020015184615e2d565b600080615e81616113565b90506000615e8f86836161e6565b90506000615ea6826060015183602001518561668c565b90506000615eb68383898961689e565b90506000615ec38261771b565b602081015181519192509060030b15615f3657898260400151604051602001615eed92919061a8db565b60408051601f19818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252615f2d9160040161a684565b60405180910390fd5b6000615f796040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a2000000000000000000000008152508360016178ea565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90615fcc90849060040161a684565b602060405180830381865afa158015615fe9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061600d919061a40f565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc9259061607190879060040161a684565b600060405180830381865afa15801561608e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526160b6919081019061aa15565b905060006160e482856040516020016160d092919061aa4a565b604051602081830303815290604052617aea565b90506001600160a01b038116615d1d578484604051602001615eed92919061aa79565b6140f482826000617afd565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c9061619a90849060040161ab24565b600060405180830381865afa1580156161b7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526161df919081019061ab6b565b9250505090565b6162186040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d90506162636040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b61626c85617c00565b6020820152600061627c86617fe5565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa1580156162be573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526162e6919081019061ab6b565b86838560200151604051602001616300949392919061abb4565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb119061635890859060040161a684565b600060405180830381865afa158015616375573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261639d919081019061ab6b565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f6906163e590849060040161acb8565b602060405180830381865afa158015616402573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616426919061a52d565b61643b5781604051602001615eed919061ad0a565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061648090849060040161ad9c565b600060405180830381865afa15801561649d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526164c5919081019061ab6b565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f69061650c90849060040161adee565b602060405180830381865afa158015616529573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061654d919061a52d565b156165e2576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061659790849060040161adee565b600060405180830381865afa1580156165b4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526165dc919081019061ab6b565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001616607919061ae40565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161663392919061aeac565b600060405180830381865afa158015616650573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616678919081019061ab6b565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816166a85790505090506040518060400160405280600481526020017f6772657000000000000000000000000000000000000000000000000000000000815250816000815181106167085761670861aed1565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061675c5761675c61aed1565b602002602001018190525084604051602001616778919061af00565b6040516020818303038152906040528160028151811061679a5761679a61aed1565b6020026020010181905250826040516020016167b6919061af6c565b604051602081830303815290604052816003815181106167d8576167d861aed1565b602002602001018190525060006167ee8261771b565b602080820151604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000818501908152825180840184526000808252908601528251808401909352905182529281019290925291925061687f9060408051808201825260008082526020918201528151808301909252845182528085019082015290618268565b6168945785604051602001615eed919061afad565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d90156168ee565b511590565b616a62578260200151156169aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401615f2d565b8260c0015115616a62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401615f2d565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081616a7b57905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616ad69061b03e565b935060ff1681518110616aeb57616aeb61aed1565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001616b3c919061b05d565b604051602081830303815290604052828280616b579061b03e565b935060ff1681518110616b6c57616b6c61aed1565b60200260200101819052506040518060400160405280600681526020017f6465706c6f790000000000000000000000000000000000000000000000000000815250828280616bb99061b03e565b935060ff1681518110616bce57616bce61aed1565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d65000000000000000000000000000000000000815250828280616c1b9061b03e565b935060ff1681518110616c3057616c3061aed1565b60200260200101819052508760200151828280616c4c9061b03e565b935060ff1681518110616c6157616c6161aed1565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e747261637450617468000000000000000000000000000000000000815250828280616cae9061b03e565b935060ff1681518110616cc357616cc361aed1565b602090810291909101015287518282616cdb8161b03e565b935060ff1681518110616cf057616cf061aed1565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280616d3d9061b03e565b935060ff1681518110616d5257616d5261aed1565b6020026020010181905250616d66466182c9565b8282616d718161b03e565b935060ff1681518110616d8657616d8661aed1565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280616dd39061b03e565b935060ff1681518110616de857616de861aed1565b602002602001018190525086828280616e009061b03e565b935060ff1681518110616e1557616e1561aed1565b6020908102919091010152855115616f3c5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f6465000000000000000000000060208201528282616e668161b03e565b935060ff1681518110616e7b57616e7b61aed1565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90616ecb90899060040161a684565b600060405180830381865afa158015616ee8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616f10919081019061ab6b565b8282616f1b8161b03e565b935060ff1681518110616f3057616f3061aed1565b60200260200101819052505b84602001511561700c5760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282616f858161b03e565b935060ff1681518110616f9a57616f9a61aed1565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280616fe79061b03e565b935060ff1681518110616ffc57616ffc61aed1565b60200260200101819052506171d3565b6170446168e98660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6170d75760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826170878161b03e565b935060ff168151811061709c5761709c61aed1565b60200260200101819052508460a001516040516020016170bc919061af00565b604051602081830303815290604052828280616fe79061b03e565b8460c0015115801561711a57506040808901518151808301835260008082526020918201528251808401909352815183529081019082015261711890511590565b155b156171d35760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828261715e8161b03e565b935060ff16815181106171735761717361aed1565b602002602001018190525061718788618369565b604051602001617197919061af00565b6040516020818303038152906040528282806171b29061b03e565b935060ff16815181106171c7576171c761aed1565b60200260200101819052505b6040808601518151808301835260008082526020918201528251808401909352815183529081019082015261720790511590565b61729c5760408051808201909152600b81527f2d2d72656c6179657249640000000000000000000000000000000000000000006020820152828261724a8161b03e565b935060ff168151811061725f5761725f61aed1565b6020026020010181905250846040015182828061727b9061b03e565b935060ff16815181106172905761729061aed1565b60200260200101819052505b6060850151156173bd5760408051808201909152600681527f2d2d73616c740000000000000000000000000000000000000000000000000000602082015282826172e58161b03e565b935060ff16815181106172fa576172fa61aed1565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015617369573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617391919081019061ab6b565b828261739c8161b03e565b935060ff16815181106173b1576173b161aed1565b60200260200101819052505b60e085015151156174645760408051808201909152600a81527f2d2d6761734c696d697400000000000000000000000000000000000000000000602082015282826174078161b03e565b935060ff168151811061741c5761741c61aed1565b60200260200101819052506174388560e00151600001516182c9565b82826174438161b03e565b935060ff16815181106174585761745861aed1565b60200260200101819052505b60e0850151602001511561750e5760408051808201909152600a81527f2d2d676173507269636500000000000000000000000000000000000000000000602082015282826174b18161b03e565b935060ff16815181106174c6576174c661aed1565b60200260200101819052506174e28560e00151602001516182c9565b82826174ed8161b03e565b935060ff16815181106175025761750261aed1565b60200260200101819052505b60e085015160400151156175b85760408051808201909152600e81527f2d2d6d61784665655065724761730000000000000000000000000000000000006020820152828261755b8161b03e565b935060ff16815181106175705761757061aed1565b602002602001018190525061758c8560e00151604001516182c9565b82826175978161b03e565b935060ff16815181106175ac576175ac61aed1565b60200260200101819052505b60e085015160600151156176625760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826176058161b03e565b935060ff168151811061761a5761761a61aed1565b60200260200101819052506176368560e00151606001516182c9565b82826176418161b03e565b935060ff16815181106176565761765661aed1565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156176805761768061a54f565b6040519080825280602002602001820160405280156176b357816020015b606081526020019060019003908161769e5790505b50905060005b8260ff168160ff16101561770c57838160ff16815181106176dc576176dc61aed1565b6020026020010151828260ff16815181106176f9576176f961aed1565b60209081029190910101526001016176b9565b5093505050505b949350505050565b6177426040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916177c89186910161b0c8565b600060405180830381865afa1580156177e5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261780d919081019061ab6b565b9050600061781b8683618e58565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161784b919061a1a2565b6000604051808303816000875af115801561786a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052617892919081019061b10f565b805190915060030b158015906178ab5750602081015151155b80156178ba5750604081015151155b1561689457816000815181106178d2576178d261aed1565b6020026020010151604051602001615eed919061b1c5565b6060600061791f8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506179569082905b90618fad565b15617ab35760006179d3826179cd846179c76179998a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90618fd4565b90619036565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150617a37908290618fad565b15617aa157604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617a9e905b82906190bb565b90505b617aaa816190e1565b92505050615e1a565b8215617acc578484604051602001615eed92919061b3b1565b5050604080516020810190915260008152615e1a565b509392505050565b6000808251602084016000f09392505050565b8160a0015115617b0c57505050565b6000617b1984848461914a565b90506000617b268261771b565b602081015181519192509060030b158015617bc25750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617bc290604080518082018252600080825260209182015281518083019092528451825280850190820152617950565b15617bcf57505050505050565b60408201515115617bef578160400151604051602001615eed919061b458565b80604051602001615eed919061b4b6565b60606000617c358360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150617c9a905b8290618268565b15617d0957604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615e1a90617d049083906196e5565b6190e1565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617d6b905b829061976f565b600103617e3857604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617dd190617a97565b50604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615e1a90617d04905b83906190bb565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617e9790617c93565b15617fce57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290617eff908390619809565b905060008160018351617f12919061a807565b81518110617f2257617f2261aed1565b60200260200101519050617fc5617d04617f986040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528551825280860190820152906196e5565b95945050505050565b82604051602001615eed919061b521565b50919050565b6060600061801a8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061807c90617c93565b1561808a57615e1a816190e1565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526180e990617d64565b60010361815357604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615e1a90617d0490617e31565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526181b290617c93565b15617fce57604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061821a908390619809565b9050600181511115618256578060028251618235919061a807565b815181106182455761824561aed1565b602002602001015192505050919050565b5082604051602001615eed919061b521565b80518251600091111561827d57506000615d21565b815183516020850151600092916182939161a81a565b61829d919061a807565b9050826020015181036182b4576001915050615d21565b82516020840151819020912014905092915050565b606060006182d6836198ae565b600101905060008167ffffffffffffffff8111156182f6576182f661a54f565b6040519080825280601f01601f191660200182016040528015618320576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461832a57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e53454400000000000000000000000000000000000000000000818401908152855180870187528381528401929092528451808601909552518452908301526060916183f5905b8290619990565b1561843557505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618494906183ee565b156184d457505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618533906183ee565b1561857357505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526185d2906183ee565b806186375750604080518082018252601081527f47504c2d322e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618637906183ee565b1561867757505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526186d6906183ee565b8061873b5750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261873b906183ee565b1561877b57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526187da906183ee565b8061883f5750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261883f906183ee565b1561887f57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526188de906183ee565b806189435750604080518082018252601181527f4c47504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618943906183ee565b1561898357505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526189e2906183ee565b15618a2257505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618a81906183ee565b15618ac157505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618b20906183ee565b15618b6057505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618bbf906183ee565b15618bff57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e300000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618c5e906183ee565b15618c9e57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618cfd906183ee565b80618d625750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618d62906183ee565b15618da257505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e3100000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152618e01906183ee565b15618e4157505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151615eed929060200161b5ff565b60608060005b8451811015618ee35781858281518110618e7a57618e7a61aed1565b6020026020010151604051602001618e9392919061aa4a565b604051602081830303815290604052915060018551618eb2919061a807565b8114618edb5781604051602001618ec9919061b768565b60405160208183030381529060405291505b600101618e5e565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081618efc5790505090508381600081518110618f2757618f2761aed1565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110618f7b57618f7b61aed1565b60200260200101819052508181600281518110618f9a57618f9a61aed1565b6020908102919091010152949350505050565b6020808301518351835192840151600093618fcb92918491906199a4565b14159392505050565b604080518082019091526000808252602082015260006190068460000151856020015185600001518660200151619ab5565b9050836020015181619018919061a807565b8451859061902790839061a807565b90525060208401525090919050565b604080518082019091526000808252602082015281518351101561905b575081615d21565b60208083015190840151600191146190825750815160208481015190840151829020919020145b80156190b35782518451859061909990839061a807565b90525082516020850180516190af90839061a81a565b9052505b509192915050565b60408051808201909152600080825260208201526190da838383619bd5565b5092915050565b60606000826000015167ffffffffffffffff8111156191025761910261a54f565b6040519080825280601f01601f19166020018201604052801561912c576020820181803683370190505b50905060006020820190506190da8185602001518660000151619c80565b60606000619156616113565b6040805160ff808252612000820190925291925060009190816020015b606081526020019060019003908161917357905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806191ce9061b03e565b935060ff16815181106191e3576191e361aed1565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001619234919061b7a9565b60405160208183030381529060405282828061924f9061b03e565b935060ff16815181106192645761926461aed1565b60200260200101819052506040518060400160405280600881526020017f76616c69646174650000000000000000000000000000000000000000000000008152508282806192b19061b03e565b935060ff16815181106192c6576192c661aed1565b6020026020010181905250826040516020016192e2919061af6c565b6040516020818303038152906040528282806192fd9061b03e565b935060ff16815181106193125761931261aed1565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e74726163740000000000000000000000000000000000000000000081525082828061935f9061b03e565b935060ff16815181106193745761937461aed1565b60200260200101819052506193898784619cfa565b82826193948161b03e565b935060ff16815181106193a9576193a961aed1565b6020908102919091010152855151156194555760408051808201909152600b81527f2d2d7265666572656e6365000000000000000000000000000000000000000000602082015282826193fb8161b03e565b935060ff16815181106194105761941061aed1565b6020026020010181905250619429866000015184619cfa565b82826194348161b03e565b935060ff16815181106194495761944961aed1565b60200260200101819052505b8560800151156194c35760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261949e8161b03e565b935060ff16815181106194b3576194b361aed1565b6020026020010181905250619529565b84156195295760408051808201909152601281527f2d2d726571756972655265666572656e63650000000000000000000000000000602082015282826195088161b03e565b935060ff168151811061951d5761951d61aed1565b60200260200101819052505b604086015151156195c55760408051808201909152600d81527f2d2d756e73616665416c6c6f7700000000000000000000000000000000000000602082015282826195738161b03e565b935060ff16815181106195885761958861aed1565b602002602001018190525085604001518282806195a49061b03e565b935060ff16815181106195b9576195b961aed1565b60200260200101819052505b85606001511561962f5760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261960e8161b03e565b935060ff16815181106196235761962361aed1565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561964d5761964d61a54f565b60405190808252806020026020018201604052801561968057816020015b606081526020019060019003908161966b5790505b50905060005b8260ff168160ff1610156196d957838160ff16815181106196a9576196a961aed1565b6020026020010151828260ff16815181106196c6576196c661aed1565b6020908102919091010152600101619686565b50979650505050505050565b604080518082019091526000808252602082015281518351101561970a575081615d21565b815183516020850151600092916197209161a81a565b61972a919061a807565b6020840151909150600190821461974b575082516020840151819020908220145b80156197665783518551869061976290839061a807565b9052505b50929392505050565b60008082600001516197938560000151866020015186600001518760200151619ab5565b61979d919061a81a565b90505b835160208501516197b1919061a81a565b81116190da57816197c18161b7ee565b92505082600001516197f88560200151836197dc919061a807565b86516197e8919061a807565b8386600001518760200151619ab5565b619802919061a81a565b90506197a0565b60606000619817848461976f565b61982290600161a81a565b67ffffffffffffffff81111561983a5761983a61a54f565b60405190808252806020026020018201604052801561986d57816020015b60608152602001906001900390816198585790505b50905060005b8151811015617ae257619889617d0486866190bb565b82828151811061989b5761989b61aed1565b6020908102919091010152600101619873565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106198f7577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310619923576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061994157662386f26fc10000830492506010015b6305f5e1008310619959576305f5e100830492506008015b612710831061996d57612710830492506004015b6064831061997f576064830492506002015b600a8310615d215760010192915050565b600061999c8383619d3a565b159392505050565b600080858411619aab5760208411619a5757600084156199ef5760016199cb86602061a807565b6199d690600861b808565b6199e190600261b906565b6199eb919061a807565b1990505b83518116856199fe898961a81a565b619a08919061a807565b805190935082165b818114619a4257878411619a2a5787945050505050617713565b83619a348161b912565b945050828451169050619a10565b619a4c878561a81a565b945050505050617713565b838320619a64858861a807565b619a6e908761a81a565b91505b858210619aa957848220808203619a9657619a8c868461a81a565b9350505050617713565b619aa160018461a807565b925050619a71565b505b5092949350505050565b60008381868511619bc05760208511619b6f5760008515619b01576001619add87602061a807565b619ae890600861b808565b619af390600261b906565b619afd919061a807565b1990505b84518116600087619b128b8b61a81a565b619b1c919061a807565b855190915083165b828114619b6157818610619b4957619b3c8b8b61a81a565b9650505050505050617713565b85619b538161b7ee565b965050838651169050619b24565b859650505050505050617713565b508383206000905b619b81868961a807565b8211619bbe57858320808203619b9d5783945050505050617713565b619ba860018561a81a565b9350508180619bb69061b7ee565b925050619b77565b505b619bca878761a81a565b979650505050505050565b60408051808201909152600080825260208201526000619c078560000151866020015186600001518760200151619ab5565b602080870180519186019190915251909150619c23908261a807565b835284516020860151619c36919061a81a565b8103619c455760008552619c77565b83518351619c53919061a81a565b85518690619c6290839061a807565b9052508351619c71908261a81a565b60208601525b50909392505050565b60208110619cb85781518352619c9760208461a81a565b9250619ca460208361a81a565b9150619cb160208261a807565b9050619c80565b6000198115619ce7576001619cce83602061a807565b619cda9061010061b906565b619ce4919061a807565b90505b9151835183169219169190911790915250565b60606000619d0884846161e6565b8051602080830151604051939450619d229390910161b929565b60405160208183030381529060405291505092915050565b8151815160009190811115619d4d575081515b6020808501519084015160005b83811015619e065782518251808214619dd6576000196020871015619db557600184619d8789602061a807565b619d91919061a81a565b619d9c90600861b808565b619da790600261b906565b619db1919061a807565b1990505b8181168382168181039114619dd3579750615d219650505050505050565b50505b619de160208661a81a565b9450619dee60208561a81a565b93505050602081619dff919061a81a565b9050619d5a565b5084518651616894919061b981565b610b678061b9a283390190565b61063a8061c50983390190565b61106f8061cb4383390190565b6120728061dbb283390190565b6040518060e00160405280606081526020016060815260200160608152602001600015158152602001600015158152602001600015158152602001619e8c619e91565b905290565b60405180610100016040528060001515815260200160001515815260200160608152602001600080191681526020016060815260200160608152602001600015158152602001619e8c6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b81811015619f435783516001600160a01b0316835260209384019390920191600101619f1c565b509095945050505050565b60005b83811015619f69578181015183820152602001619f51565b50506000910152565b60008151808452619f8a816020860160208601619f4e565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a09a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b8181101561a080577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261a06a848651619f72565b602095860195909450929092019160010161a030565b509197505050602094850194929092019150600101619fc6565b50929695505050505050565b600081518084526020840193506020830160005b8281101561a0fa5781517fffffffff000000000000000000000000000000000000000000000000000000001686526020958601959091019060010161a0ba565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a09a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516040875261a1706040880182619f72565b905060208201519150868103602088015261a18b818361a0a6565b96505050602093840193919091019060010161a12c565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a09a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845261a204858351619f72565b9450602093840193919091019060010161a1ca565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561a09a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b038151168652602081015190506040602087015261a29a604087018261a0a6565b955050602093840193919091019060010161a241565b600181811c9082168061a2c457607f821691505b602082108103617fdf577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6001600160a01b0381541682526001600160a01b03600182015416602083015260028101546040830152600060038201608060608501526000815461a3418161a2b0565b806080880152600182166000811461a360576001811461a39a5761a3ce565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831660a089015260a082151560051b890101935061a3ce565b84600052602060002060005b8381101561a3c55781548a820160a0015260019091019060200161a3a6565b890160a0019450505b50919695505050505050565b602081526000615e1a602083018461a2fd565b6001600160a01b0383168152604060208201526000617713604083018461a2fd565b60006020828403121561a42157600080fd5b81516001600160a01b0381168114615e1a57600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff881660408301528660608301526003861061a4f2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a083015261a51360c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b60006020828403121561a53f57600080fd5b81518015158114615e1a57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b601f82111561123c57806000526020600020601f840160051c8101602085101561a5a55750805b601f840160051c820191505b81811015612a54576000815560010161a5b1565b815167ffffffffffffffff81111561a5df5761a5df61a54f565b61a5f38161a5ed845461a2b0565b8461a57e565b6020601f82116001811461a627576000831561a60f5750848201515b600019600385901b1c1916600184901b178455612a54565b600084815260208120601f198516915b8281101561a657578785015182556020948501946001909201910161a637565b508482101561a6755786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b602081526000615e1a6020830184619f72565b60006020828403121561a6a957600080fd5b5051919050565b602081526000615d2160208301600581527f68656c6c6f000000000000000000000000000000000000000000000000000000602082015260400190565b60a08152600061a70060a0830187619f72565b6001600160a01b03861660208401528460408401526001600160a01b03841660608401528281036080840152619bca81600581527f68656c6c6f000000000000000000000000000000000000000000000000000000602082015260400190565b600081516060845261a7756060850182619f72565b90506001600160a01b036020840151166020850152604083015160408501528091505092915050565b60808152600061a7b1608083018761a760565b8560208401526001600160a01b03851660408401528281036060840152619bca8185619f72565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115615d2157615d2161a7d8565b80820180821115615d2157615d2161a7d8565b60a08152600061a84060a083018861a760565b6001600160a01b03871660208401528560408401526001600160a01b0385166060840152828103608084015261a8768185619f72565b98975050505050505050565b6001600160a01b03851681528360208201526001600160a01b0383166040820152608060608201526000616894608083018461a2fd565b6001600160a01b03831681526040602082015260006177136040830184619f72565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161a91381601a850160208801619f4e565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161a95081601c840160208801619f4e565b01601c01949350505050565b6040516060810167ffffffffffffffff8111828210171561a97f5761a97f61a54f565b60405290565b60008067ffffffffffffffff84111561a9a05761a9a061a54f565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561a9cf5761a9cf61a54f565b60405283815290508082840185101561a9e757600080fd5b617ae2846020830185619f4e565b600082601f83011261aa0657600080fd5b615e1a8383516020850161a985565b60006020828403121561aa2757600080fd5b815167ffffffffffffffff81111561aa3e57600080fd5b615d1d8482850161a9f5565b6000835161aa5c818460208801619f4e565b83519083019061aa70818360208801619f4e565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161aab181601a850160208801619f4e565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161aaee816033840160208801619f4e565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000615e1a6080830184619f72565b60006020828403121561ab7d57600080fd5b815167ffffffffffffffff81111561ab9457600080fd5b8201601f8101841361aba557600080fd5b615d1d8482516020840161a985565b6000855161abc6818460208a01619f4e565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161ac00816001840160208a01619f4e565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161ac3e816002840160208901619f4e565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161ac80816002840160208801619f4e565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061accb6040830184619f72565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161ad4281601f850160208701619f4e565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061adaf6040830184619f72565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061ae016040830184619f72565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161ae78816014850160208701619f4e565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061aebf6040830185619f72565b8281036020840152615e168185619f72565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161af38816001850160208701619f4e565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161af7e818460208701619f4e565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161b03181604b850160208701619f4e565b91909101604b0192915050565b600060ff821660ff810361b0545761b05461a7d8565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161b0bb816029850160208701619f4e565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000615e1a6080830184619f72565b60006020828403121561b12157600080fd5b815167ffffffffffffffff81111561b13857600080fd5b82016060818503121561b14a57600080fd5b61b15261a95c565b81518060030b811461b16357600080fd5b8152602082015167ffffffffffffffff81111561b17f57600080fd5b61b18b8682850161a9f5565b602083015250604082015167ffffffffffffffff81111561b1ab57600080fd5b61b1b78682850161a9f5565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161b223816021850160208701619f4e565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161b40f816021850160208801619f4e565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161b44c81602e840160208801619f4e565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161b0bb816029850160208701619f4e565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161b514816022850160208701619f4e565b9190910160220192915050565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161b55981600e850160208701619f4e565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161b637816018850160208801619f4e565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161b67481601c840160208801619f4e565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161b77a818460208701619f4e565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161b7e181601c850160208701619f4e565b91909101601c0192915050565b6000600019820361b8015761b80161a7d8565b5060010190565b8082028115828204841417615d2157615d2161a7d8565b6001815b600184111561b85a5780850481111561b83e5761b83e61a7d8565b600184161561b84c57908102905b60019390931c92800261b823565b935093915050565b60008261b87157506001615d21565b8161b87e57506000615d21565b816001811461b894576002811461b89e5761b8ba565b6001915050615d21565b60ff84111561b8af5761b8af61a7d8565b50506001821b615d21565b5060208310610133831016604e8410600b841016171561b8dd575081810a615d21565b61b8ea600019848461b81f565b806000190482111561b8fe5761b8fe61a7d8565b029392505050565b6000615e1a838361b862565b60008161b9215761b92161a7d8565b506000190190565b6000835161b93b818460208801619f4e565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161b975816001840160208801619f4e565b01600101949350505050565b81810360008312801583831316838312821617156190da576190da61a7d856fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea2646970667358221220b09c98b42d894b1b92a74ecc691587bcc17012fff7ef3bcfa6fe755f9b6255a564736f6c634300081a00336080604052348015600f57600080fd5b5061061b8061001f6000396000f3fe60806040526004361061002a5760003560e01c80635bcfd61614610033578063c9028a361461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e366004610151565b610073565b34801561005f57600080fd5b5061003161006e36600461020e565b6100ee565b6060811561008a576100878284018461027f565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610375565b6100c560408a0160208b016103e1565b896040013533866040516100de96959493929190610445565b60405180910390a1505050505050565b7fd75bb509c8f32a725aac99ac5c4541060dbfb889a3aca8314d6f00395618c4c48160405161011d9190610507565b60405180910390a150565b803573ffffffffffffffffffffffffffffffffffffffff8116811461014c57600080fd5b919050565b60008060008060006080868803121561016957600080fd5b853567ffffffffffffffff81111561018057600080fd5b86016060818903121561019257600080fd5b94506101a060208701610128565b935060408601359250606086013567ffffffffffffffff8111156101c357600080fd5b8601601f810188136101d457600080fd5b803567ffffffffffffffff8111156101eb57600080fd5b8860208284010111156101fd57600080fd5b959894975092955050506020019190565b60006020828403121561022057600080fd5b813567ffffffffffffffff81111561023757600080fd5b82016080818503121561024957600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561029157600080fd5b813567ffffffffffffffff8111156102a857600080fd5b8201601f810184136102b957600080fd5b803567ffffffffffffffff8111156102d3576102d3610250565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033f5761033f610250565b60405281815282820160200186101561035757600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126103aa57600080fd5b83018035915067ffffffffffffffff8211156103c557600080fd5b6020019150368190038213156103da57600080fd5b9250929050565b6000602082840312156103f357600080fd5b61024982610128565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60a08152600061045960a08301888a6103fc565b73ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff851660608401528281036080840152835180825260005b818110156104c3576020818701810151848301820152016104a7565b5060006020828401015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011683010192505050979650505050505050565b6020815273ffffffffffffffffffffffffffffffffffffffff61052983610128565b16602082015273ffffffffffffffffffffffffffffffffffffffff61055060208401610128565b166040820152600080604084013590508060608401525060608301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261059c57600080fd5b830160208101903567ffffffffffffffff8111156105b957600080fd5b8036038213156105c857600080fd5b6080808501526105dc60a0850182846103fc565b9594505050505056fea264697066735822122034d8711688fa0746c516ebf736804e86c9e1dad5e64788e702413ad1a8eb9ff164736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea2646970667358221220b13ccf97234dc9b7f658234f9bf37a57d08f465bb99c431b865174e7a399a30764736f6c634300081a003360c060405234801561001057600080fd5b5060405161207238038061207283398101604081905261002f916101f0565b6001600160a01b038216158061004c57506001600160a01b038116155b1561006a5760405163d92e233d60e01b815260040160405180910390fd5b60066100768982610342565b5060076100838882610342565b506008805460ff191660ff881617905560808590528360028111156100aa576100aa610400565b60a08160028111156100be576100be610400565b905250600192909255600080546001600160a01b039283166001600160a01b0319909116179055600880549190921661010002610100600160a81b0319909116179055506104169350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261013357600080fd5b81516001600160401b0381111561014c5761014c61010c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561017a5761017a61010c565b60405281815283820160200185101561019257600080fd5b60005b828110156101b157602081860181015183830182015201610195565b506000918101602001919091529392505050565b8051600381106101d457600080fd5b919050565b80516001600160a01b03811681146101d457600080fd5b600080600080600080600080610100898b03121561020d57600080fd5b88516001600160401b0381111561022357600080fd5b61022f8b828c01610122565b60208b015190995090506001600160401b0381111561024d57600080fd5b6102598b828c01610122565b975050604089015160ff8116811461027057600080fd5b60608a0151909650945061028660808a016101c5565b60a08a0151909450925061029c60c08a016101d9565b91506102aa60e08a016101d9565b90509295985092959890939650565b600181811c908216806102cd57607f821691505b6020821081036102ed57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561033d57806000526020600020601f840160051c8101602085101561031a5750805b601f840160051c820191505b8181101561033a5760008155600101610326565b50505b505050565b81516001600160401b0381111561035b5761035b61010c565b61036f8161036984546102b9565b846102f3565b6020601f8211600181146103a3576000831561038b5750848201515b600019600385901b1c1916600184901b17845561033a565b600084815260208120601f198516915b828110156103d357878501518255602094850194600190920191016103b3565b50848210156103f15786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a051611c1b61045760003960006103440152600081816102f001528181610bdc01528181610ce201528181610efe01526110040152611c1b6000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c806395d89b41116100f9578063ccc7759911610097578063eddeb12311610071578063eddeb12314610461578063f2441b3214610474578063f687d12a14610494578063fc5fecd5146104a757600080fd5b8063ccc77599146103d4578063d9eeebed146103e7578063dd62ed3e1461041b57600080fd5b8063b84c8246116100d3578063b84c824614610386578063c47f00271461039b578063c7012626146103ae578063c835d7cc146103c157600080fd5b806395d89b4114610337578063a3413d031461033f578063a9059cbb1461037357600080fd5b80633ce4a5bc116101665780634d8943bb116101405780634d8943bb146102ac57806370a08231146102b557806385e1f4d0146102eb5780638b851b951461031257600080fd5b80633ce4a5bc1461024657806342966c681461028657806347e7ef241461029957600080fd5b806318160ddd1161019757806318160ddd1461021657806323b872dd1461021e578063313ce5671461023157600080fd5b806306fdde03146101be578063091d2788146101dc578063095ea7b3146101f3575b600080fd5b6101c66104ba565b6040516101d39190611648565b60405180910390f35b6101e560015481565b6040519081526020016101d3565b610206610201366004611687565b61054c565b60405190151581526020016101d3565b6005546101e5565b61020661022c3660046116b3565b610563565b60085460405160ff90911681526020016101d3565b61026173735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d3565b6102066102943660046116f4565b6105fa565b6102066102a7366004611687565b61060e565b6101e560025481565b6101e56102c336600461170d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6101e57f000000000000000000000000000000000000000000000000000000000000000081565b60085461026190610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6101c6610767565b6103667f000000000000000000000000000000000000000000000000000000000000000081565b6040516101d3919061172a565b610206610381366004611687565b610776565b610399610394366004611832565b610783565b005b6103996103a9366004611832565b6107e0565b6102066103bc366004611883565b610839565b6103996103cf36600461170d565b610988565b6103996103e236600461170d565b610a9c565b6103ef610bb0565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101d3565b6101e56104293660046118dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205490565b61039961046f3660046116f4565b610dce565b6000546102619073ffffffffffffffffffffffffffffffffffffffff1681565b6103996104a23660046116f4565b610e50565b6103ef6104b53660046116f4565b610ed2565b6060600680546104c990611915565b80601f01602080910402602001604051908101604052809291908181526020018280546104f590611915565b80156105425780601f1061051757610100808354040283529160200191610542565b820191906000526020600020905b81548152906001019060200180831161052557829003601f168201915b5050505050905090565b60006105593384846110ee565b5060015b92915050565b60006105708484846111f7565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460209081526040808320338452909152902054828110156105db576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105ef85336105ea8685611997565b6110ee565b506001949350505050565b600061060633836113b2565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab1480159061064c575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156106755750600854610100900473ffffffffffffffffffffffffffffffffffffffff163314155b156106ac576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106b683836114f4565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526107569186906119aa565b60405180910390a250600192915050565b6060600780546104c990611915565b60006105593384846111f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab146107d0576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60076107dc8282611a1b565b5050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461082d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60066107dc8282611a1b565b6000806000610846610bb0565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156108d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fc9190611b34565b610932576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61093c33856113b2565b60025460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161097591899189918791611b56565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146109d5576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a22576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610ae9576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610b36576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c679190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610cb6576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d699190611ba2565b905080600003610da5576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060025460015483610db89190611bbb565b610dc29190611bd2565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e1b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610a91565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e9d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610f65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f899190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610fd8576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015611067573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108b9190611ba2565b9050806000036110c7576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000906110d78784611bbb565b6110e19190611bd2565b9296929550919350505050565b73ffffffffffffffffffffffffffffffffffffffff831661113b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611188576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611244576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611291576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040902054818110156112f1576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112fb8282611997565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260036020526040808220939093559085168152908120805484929061133e908490611bd2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113a491815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff82166113ff576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260409020548181101561145f576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114698282611997565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260036020526040812091909155600580548492906114a4908490611997565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016111ea565b73ffffffffffffffffffffffffffffffffffffffff8216611541576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008282546115539190611bd2565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805483929061158d908490611bd2565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561160a576020818501810151868301820152016115ee565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061165b60208301846115e4565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461168457600080fd5b50565b6000806040838503121561169a57600080fd5b82356116a581611662565b946020939093013593505050565b6000806000606084860312156116c857600080fd5b83356116d381611662565b925060208401356116e381611662565b929592945050506040919091013590565b60006020828403121561170657600080fd5b5035919050565b60006020828403121561171f57600080fd5b813561165b81611662565b6020810160038310611765577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff8411156117b5576117b561176b565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff821117156118025761180261176b565b60405283815290508082840185101561181a57600080fd5b83836020830137600060208583010152509392505050565b60006020828403121561184457600080fd5b813567ffffffffffffffff81111561185b57600080fd5b8201601f8101841361186c57600080fd5b61187b8482356020840161179a565b949350505050565b6000806040838503121561189657600080fd5b823567ffffffffffffffff8111156118ad57600080fd5b8301601f810185136118be57600080fd5b6118cd8582356020840161179a565b95602094909401359450505050565b600080604083850312156118ef57600080fd5b82356118fa81611662565b9150602083013561190a81611662565b809150509250929050565b600181811c9082168061192957607f821691505b602082108103611962577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561055d5761055d611968565b6040815260006119bd60408301856115e4565b90508260208301529392505050565b601f821115611a1657806000526020600020601f840160051c810160208510156119f35750805b601f840160051c820191505b81811015611a1357600081556001016119ff565b50505b505050565b815167ffffffffffffffff811115611a3557611a3561176b565b611a4981611a438454611915565b846119cc565b6020601f821160018114611a9b5760008315611a655750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611a13565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015611ae95787850151825560209485019460019092019101611ac9565b5084821015611b2557868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b600060208284031215611b4657600080fd5b8151801515811461165b57600080fd5b608081526000611b6960808301876115e4565b6020830195909552506040810192909252606090910152919050565b600060208284031215611b9757600080fd5b815161165b81611662565b600060208284031215611bb457600080fd5b5051919050565b808202811582820484141761055d5761055d611968565b8082018082111561055d5761055d61196856fea2646970667358221220d6ba834f25782689ed13bffb6ac9ff2c8d3b5342c94a515aea8197a76070ad3f64736f6c634300081a0033a2646970667358221220941d8648f2008b5534a4e62bd4555c29293828c00e65a282aa8e100e39905e9e64736f6c634300081a0033", } // GatewayZEVMOutboundTestABI is the input ABI used to generate the binding from.